/srv/irclogs.ubuntu.com/2013/05/01/#juju-gui.txt

gary_posterrick_h_, you want any huwshimi second reviews, or are you good to go?12:27
rick_h_gary_poster: I'm waffling, all of these are trivial few liners12:27
gary_posterrick_h_, :-) if I can help ping me12:27
rick_h_gary_poster: so was thinking I'd just land and run, but feels dirty to land 5 branches sans second review :)12:27
gary_posterlol12:28
gary_posterrick_h_, I'll try to zoom through them.  Have you qa'd all of them?12:29
rick_h_gary_poster: no, I haven't. I might build a super branch locally and run through them. 12:29
gary_posterrick_h_, sounds perfect12:30
rick_h_pastebin.canonical.com/90338/ for the quick run through list12:30
jcsackettrick_h_: what's the url for the ec2 version?12:34
rick_h_tinyurl.com/jujucharms12:34
rick_h_jcsackett: ^12:34
jcsackettthanks.12:34
gary_posterrick_h_, https://codereview.appspot.com/9069043/ is not LGTM but I suggested a possible solution12:36
gary_posterrick_h_, everything else is LGTM12:37
rick_h_gary_poster: thanks 12:38
gary_posterwelcome12:38
gary_posterrick_h_, did you try the z-index of 2 thing?  Do you want me to try it, to get that moving along?12:59
rogpeppegary_poster: you might be interested in this: it's an automatically generated description of the API, represented as JSON: http://paste.ubuntu.com/5622552/13:04
rogpeppegary_poster: in this particular case it happens to include the read-only client object too, as i'd just been hacking on that.13:05
gary_posterrogpeppe, very cool!  :-)13:06
gary_posterrogpeppe, are you hoping to process that for some automatic human docs?13:07
rogpeppegary_poster: that's part of the idea, yes13:07
gary_posterrogpeppe, this might be nice also to have as an API call, even13:07
rogpeppegary_poster: that's what i'm thinking13:07
gary_postercool, yeah13:07
gary_posterbig +1 rogpeppe :-)13:08
rogpeppegary_poster: obviously it has limits (it can't know about the EntityInfo types, for example) but i think it's useful nonetheless13:09
rick_h_gary_poster: I pulled it aside to clear the rest atm13:09
gary_posterrogpeppe, definitely.  We'd be able to conditionally add upgrade charm, for instance.  this would immediately help that effort13:10
rick_h_gary_poster: honestly, if it's a shadow thing I'd rather work on the api issues we've got and such at the moment. If you or someone wants to check with that I'd appreciate it13:10
rick_h_trying to fry the biggest fish I can for today13:10
gary_posterrick_h_, +113:10
rogpeppegary_poster: i'm not sure i quite understand what you mean by that13:10
gary_posterrogpeppe, sorry, yes, realized it was unclear as I sent it.  put more clearly, this would be a way for us to know whether to expose an upgrade charm interface in the GUI, which we are working on right now13:11
rogpeppegary_poster: ah, you mean have the GUI introspect the available methods and only allow some things if the API actually provides them?13:11
gary_posterexactly13:11
rogpeppegary_poster: nice idea, yeah13:12
rogpeppegary_poster: it's potentially an interesting style of versioning13:12
gary_posteragreed rogpeppe.  A declarative, fine-grained-but-seemingly-not-to-fine-grained approach that would allow  an unambiguous way of asking "hey local juju env, can you do X?" (assuming meanings of methods don't change, which they shouldn't)13:14
rogpeppegary_poster: yes.13:15
gary_posters/-to-/-too-/ :-P13:15
rogpeppegary_poster: and also "does the information for X contain Y"13:15
gary_posterooh, true13:15
gary_posterthat would be nice too13:15
gary_posterjcsackett, big +1 on #1175150.  May I mark that high?13:17
_mup_Bug #1175150: Fullscreen landing content should vary with sandbox setting <charmbrowser> <juju-gui:Triaged> <https://launchpad.net/bugs/1175150>13:18
gary_posterfrom GUI perspective13:18
rogpeppegary_poster: pity it doesn't work for the delta info though13:18
jcsackettgary_poster: i have no objection, but give your +1 to rick_h_. i was just making a bug for his card. :-)13:18
gary_posterjcsackett, heh, ok cool :-)13:18
gary_posterrogpeppe, deltas: nothing in the data structure here preventing that though, yes?  For example, you appear to have data characteristics as keys ("_nullable" and "_map").  You could have some kind of similar story for describing "a list of 1 or more of any of the following."  I suspect it is farther from the existing data structure than the code you have atm though13:21
gary_posterre _nullable and _map, what happens if you have something that is both _nullable and a _map?13:22
gary_posternested structs?13:22
rogpeppegary_poster: it's a different issue than that - i'm generating the info from the Go data types, but the Go data type in this case is an interface - there's no way of knowing what objects it might hold13:22
rogpeppegary_poster: yeah13:22
rogpeppe*map[string]int would look like {"_nullable": {"_map": "number"}}13:23
rogpeppegary_poster: it should be more intelligent about pointers actually.13:23
rogpeppegary_poster: 'cos a map is naturally nullable anyway13:23
rogpeppegary_poster: and json treats ***int the same as *int13:23
gary_posterrogpeppe, nested structs: gotcha. different issue: yeah, I can see, but my point was that you can assemble the data structure from multiple sources--if the end goal is something consumable then having it be pure interface analysis is unnecessary. domain knowledge is AOK13:24
gary_posteras long as the multiple sources don't potentially stomp on one another, which is the (slightly?) tricky bit I see atm13:25
rogpeppegary_poster: yeah, it needs a bit of thinking about. i think that it's good that the generation is as automatic as possible though.13:26
rogpeppegary_poster: otherwise description will rapidly lose sight of reality13:27
gary_posterrogpeppe, strongly agreed generally.  But the delta structure really ought to be in there, I think, for the goals we want out of this.  OTOH, I'd be a big +1 for getting this general pattern in the code base without the delta information, as long as we knew we could slide the delta information in later.13:28
bacgary_poster, rick_h_: textarea resizer and tests now in our tree and happy.  ready for review at https://codereview.appspot.com/907704313:28
gary_posterbac, looking, great.  rick_h_ is it a bg deal to get these in the YUI gallery or something?  Never done that13:29
rogpeppegary_poster: perhaps in addition to the method descriptions, we could include a map from interface (or custom marshaller) type name to a set of possible actual types13:31
gary_posterbac LGTM13:31
gary_posterrogpeppe, that would be nice.  So, completely separate data structure, IIUC?13:32
rogpeppegary_poster: then the API server would be responsible for filling in the set of types (it would know the set of possible delta types, for example) but everything else would still be automatic13:32
gary_posterright13:32
rogpeppegary_poster: yeah; perhaps at the top level, to avoid another level. "_types": { .... }13:32
rogpeppegary_poster: alongside Client and Admin etc13:33
rick_h_gary_poster: it's a little bit of work. The format/tests have to be in a certain way and they were changing that tooling. hatch might be up on it more. I got one into the gallery under the old tooling and it took a few days.13:33
gary_postersounds very good to me rogpeppe.  13:34
bacgary_poster: thanks.  process-wise, i guess we could've explicitly reached out to the local JS experts, rick and sinzui, and they would've certainly pointed us in the right direction.  also, a more detailed discussion of the work we're each doing during the daily call.  i think you and i spoke in very vague terms b/c *we* knew the task but we didn't broadcast it so no one had a chance to contribute ideas.13:34
gary_posterrogpeppe, do you have any idea on whether this might land soonish?  It would be nice for Makyo to rely on.13:35
gary_posterrogpeppe, don't need the types for his use case FWIW13:36
gary_posterrick_h_, urgh, a few days is a long time. :-/ ok, thanks13:36
rogpeppegary_poster: i've no idea tbh. i just remembered it this morning and it wasn't what i was meant to be doing at all :-)13:36
rogpeppegary_poster: i'd need to run the idea past william, who wasn't that keen last time i mentioned it, but we'll see13:37
gary_posterrogpeppe, lol ok.  We do need an answer for "do we show the upgrade charm UI or not?" so we'd like this or some other solution soon.  Would it be worth me asking for some of William's time in this regard, or do you have another suggestion?13:38
gary_posterbac, the "local" JS experts might include some U1 people too, as well as deryck, depending on our definition of local.  mm.13:39
rogpeppegary_poster: one possibility would be to actually try to make an upgrade-charm call (with invalid args). if you get a "no such request" error, you know it's not implemented13:40
gary_posterrogpeppe, #116097113:40
gary_postercome on _mup_...13:40
gary_posterhttps://bugs.launchpad.net/juju-gui/+bug/116097113:40
_mup_Bug #1160971: WebSocket disconnects when an invalid request is sent <juju-core:New> <juju-gui:Triaged> <https://launchpad.net/bugs/1160971>13:40
* rogpeppe was waiting for mup too13:40
rogpeppegary_poster: hmm, i thought i'd fixed that13:41
gary_posteroh, that would be great!  we were just going by the bug :-)13:41
rogpeppeaargh, why does pastebin.ubuntu.com discard its pastes?13:42
gary_posterbac, I'll make a retrospective card with your notes.  thank you13:42
rogpeppethat makes it a really terrible medium for attaching data to bug reports13:42
gary_posterah, argh, good point13:42
bacthanks gary_poster13:43
rogpeppelunch time13:44
gary_poster:-) ttyl13:44
rick_h_gary_poster: yea, I knew you guys were working on something but I kept hearing about html. rte/YUI editor and you mentioned trouble of parsing down html to plain text or something. So I thought you guys were doing something more complex related to html edit13:50
rick_h_gary_poster: and I didn't get too nosy about it until I saw bac's branch come by my email13:50
gary_posterrick_h_, completely understandable.  We appreciate you looking at the branch when you did.13:51
hatchmorning13:54
gary_postermorning hatch13:55
bacrick_h_: could you do a review of my branch.  should look mighty familiar!  :)14:00
hatchstill lf one more review https://codereview.appspot.com/9035045/  plz :)14:00
bachatch: i will14:01
hatchthank yas14:01
bachatch: done14:08
hatchawesome14:08
hatchgary_poster: new _buildServiceView thoughts? http://bazaar.launchpad.net/~hatch/juju-gui/view-promises/view/head:/app/app.js#L52814:09
hatchI'm not sold so that's why I'm asking now :)14:10
gary_poster:-) trying to regain context...14:10
hatchthat method is called anytime you visit a /service url to render the various service views14:10
hatchthis branch now uses promises for the service views and throws a notification if it's deleted while you're viewing it14:11
gary_posterhatch, I suggest always using a promise.  I don't think the flash will be too bad.  From a UX perspective do you disagree?  Should I give it a try myself?  (To be clear, I mean http://pastebin.ubuntu.com/5622712/or similar)14:14
hatchyeah the flash is pretty irritating14:14
gary_posterok, lemme look.14:15
hatchyou can see it by just removing the model param14:15
hatchto really get the full annoyance change between the service views14:16
gary_posterack, getting branch14:16
gary_posterheh, commenting out model param alone means it never renders.  trying fulling change...14:19
gary_posterfuller14:19
hatcher sorry14:21
hatchcomment out the ifblock leaving only the promise being assigned14:21
gary_posteryeah np I see it.  looking further14:21
rick_h_bac: can look at it. I was avoiding it as I was worried I'd be biased :P14:24
baci don't think bias will be a problem14:24
bacthanks14:24
* gary_poster agrees14:24
hatchrick_h_: I frequently look at old code I've written and go "what is this sh*t, who wrote this???"14:26
hatchlol14:26
rick_h_hatch: yea, I was feeling good when bac thought my old code was ok. Usually it's  more "who can I kill for this...oh right..."14:26
hatchhaha14:26
gary_posterhatch brainstorm with me in guichat?14:28
hatchsure14:29
rick_h_bac: r=me, one comment14:30
bacrick_h_: thx14:30
bacrick_h_: i think i'll just modify the comment to be more generic.  the file is not a pristine copy as i had to change the namespace to juju.plugins.  i'll update the initial comment to reflect that as well.14:33
rick_h_bac: cool thanks14:35
hatchgary_poster: using showView we can set render: false at which point we can control the render cycle from within the view....ala problem solved15:40
hatchwe can move that 100ms uglyness into the view15:41
gary_posterjujugui kanban now, call in 1015:50
gary_posterbcsaller_, call now16:02
bacwas my camera working on that call?16:10
gary_posterbac yes16:11
bachuh, it showed my 404 icon to me16:11
bachope i didn't do anything rude16:11
gary_poster:-) not that I saw16:11
=== deryck is now known as deryck[lunch]
rick_h_doh, bac ran now16:36
=== benji is now known as Guest11373
=== benji___ is now known as benji
rick_h_bac: did you still want to chat?17:07
bacrick_h_: i don't think so.17:08
rick_h_bac: cool17:08
bacthanks though.  i may bug you if i run into integration probs17:08
rick_h_bac: sure thing, just say the word17:08
bacgrease?17:08
rick_h_got that17:09
rick_h_lithium ok?17:09
bac"Grease is the word.17:09
rick_h_ah, thought it was bird17:09
bacor so says john travolta and olivia newton john17:09
hatchthe bird is the word17:10
hatchthe bird is the word17:11
hatchthe bird is the word17:11
hatchthe bird is the word17:11
hatchthe bird is the word17:11
bacok, googling "is the word" the first two hits are "bird is the word" and "grease is the word", in that order17:11
rick_h_lol17:12
bacso, you crowd followers can go with bird if you want17:12
baci'm sticking with grease17:12
hatchI've never heard 'grease is the word'17:12
rick_h_hatch is to young for grease 17:13
hatchI think I've seen it once17:13
hatchI have a very hard time seeing our local gangsters breaking out into song17:14
jcsackettthe local gangsters here don't sing; but they do occasionally snap their fingers in time and break out into complex street dances.17:19
=== bcsaller_ is now known as bcsaller
hatchand I bet those bastards interrupt traffic while they are doing it too.....ugh....youths!17:24
baci have yet to see any dancing thugs here in puerto rico.  false advertising if you ask me.17:40
hatchgary_poster: fixes the env rendering and adds the promises into the buildserviceview http://bazaar.launchpad.net/~hatch/juju-gui/view-promises/revision/63517:41
jcsacketthatch, rick_h_: can i get a review on the this very short branch? https://codereview.appspot.com/908804317:42
rick_h_jcsackett: sure thing17:43
jcsackettthanks!17:43
hatchyup17:46
hatchjcsackett: so this fixes the scrolltop issue you were saying before?17:48
rick_h_jcsackett: just one note. I'm assuming I know why you did it but small request. 17:50
rick_h_gary_poster: I've got the ec2 setup with the test branches from abentley and I here: https://pastebin.canonical.com/90353/17:53
rick_h_gary_poster: let me know when you get a chance and we can test things out.17:53
rick_h_abentley: looks like /interseting goes down to around 180kb before gzip. icons are all sub 100ms here. Probably longer when it's on prodstack in london but cool17:56
abentleyrick_h_: Nice.  And we should get some caching from Apache too in production.17:59
=== deryck[lunch] is now known as deryck
* benji takes lunch.18:01
gary_posterrick_h_, lemme get a review done and then I will hack on the demo to get that set up18:07
gary_posteractually two reviews done :-)18:07
rick_h_gary_poster: cool, giong to lunch it up myself18:08
gary_postergreat18:08
rick_h_wow, 2pm where did today go? 18:08
gary_posterhatch, checkShowEnvOrBrowser feels kinda hacky but fine as intermediate step/working with existing code.18:10
gary_posterhatch otherwise looks really nice to me18:11
hatchgary_poster: yeah I figure we need some type of a controller method for there18:11
gary_posterhatch, why can't we just use a slash route for env view, as you said on call?18:12
hatchbecause / still fires on /:gui: routes :)18:12
gary_posterhatch, so?  env view would be registered for :gui:/ .  Probably missing something, but want know know what it is :-)18:13
hatchwell /:gui:/service/memcache still fires the / route because / is charmstore18:14
hatchso if we put env on / then it's always rendered18:14
hatchjust like with *18:14
gary_posterhatch does /:gui:/service/memvcache fire /:gui:/ ?18:15
hatchnot sure....sec i'll cehck18:15
hatchdoesn't appear to18:17
hatchnor does path: '/', namespace 'gui'18:17
gary_posterhatch, so can we register env view for that?18:17
hatchthat's exactly when we don't want it to render though18:18
gary_posterhuh? :-)18:18
hatchwe only want to env to render when it's not /service /charm/ or /logout18:18
gary_posterhatch, but...guichat  :-)18:19
hatchhaha ok18:19
bcsaller_hatch: by render you mean call topo.update()?18:20
hatchnope, bcsaller_ can you join guichat?18:27
jcsackettrick_h_: just played around and i cannot tell you how much better things feel with the spinner overlay. :-)18:50
rick_h_jcsackett: :)18:51
jcsacketthatch: sorry i missed your earlier message, yeah, this sorts what i was talking about.18:51
rick_h_small touches, trick the user's mind. Love those kinds of things18:51
jcsacketthatch: just scrolls an element that wasn't in the visible region to the visible rather than figuring out how to reset the scroll value for the view's node.18:51
jcsackettrick_h_: i hear that. :-)18:56
jcsackettand clearly my mind is happy to be tricked. :-P18:56
hatchjcsackett: yeah that's very odd19:11
hatchI have no idea why it wasn't scrolling to the top19:11
hatchok review is done /me going back to finish eating :)19:13
benjihazmat: do model objects keep any kind of history or log of previous attribute values?19:15
bcsaller_benji: model change events will have the old and the new values I believe but I also think that when that event has fired the info is gone19:17
benjiyeah I saw that, that's what made me wonder about them keeping more (I'm tracking down a memory leak)19:17
hazmatbenji, in py.  go. or js.  in js per ben's comments19:18
hazmathave a look at  yui app model changed event19:18
hazmathttp://yuilibrary.com/yui/docs/api/files/app_js_model.js.html#l3019:19
benjihazmat: are you saying that they do keep all previous values, or that if they do that would be where to find out?19:20
hazmatbenji, in js. its transiently.. the previous value is attached to the event, its not kept, as the soon event is gc'd its gone. if something is capturing/saving model change events, that would be an issue19:21
benjigotcha19:22
hatchbenji: are you doing snapshots in chrome?19:25
hatchbenji: you can also watch the timeline for memory19:26
benjiI've played with them a little, but not used them in anger yet.  If you have experience with them a consult would be welcome.19:26
hatchit can give you an indication of what's growing19:26
benjiI can't get the timeline to work.19:26
hatchyou have to hit the record button :)19:27
benjihatch: you're psychic!19:29
hatchlol yeah? why's that?19:29
gary_posterbcsaller_, prelim review done.  call now.  will qa after.  at least one important note I think though19:29
rick_h_benji: hatch there's also the speed tracer exention that's awesome19:30
bcsaller_gary_poster: cool, thank you, reading now19:30
* rick_h_ tries to recall if that does memory19:30
rick_h_nvm, don't see real memory usage there, just kind of UX slowness indicators19:30
hatchyeah I think all of that stuff might be in the native tools now19:30
=== gary_poster is now known as gary_poster|away
hatchbenji: really the first step to debugging a memory leak in js is the profiler and timeline19:34
hatchso I can give you a hand to get started there if you need19:34
rick_h_hatch: jcsackett review time if you get a sec please? https://codereview.appspot.com/909904319:35
benjihatch: I'm up for a hangout any time19:35
hatchok just going to commit this code I'm working on now19:35
hatchcouple minutes19:35
benjisounds good19:36
=== gary_poster|away is now known as gary_poster
=== gary_poster is now known as gary_poster|away
=== gary_poster|away is now known as gary_poster
hatchbenji: ok guichat?19:48
benjihatch: sure, I'll be there in a second19:48
benjihatch: that was a long second :) there now19:55
jcsackettrick_h_: lgtm; this branch resolves both of your cards, right?20:00
rick_h_jcsackett: right20:02
rick_h_jcsackett: hatch or anyone else around to just peek at a small review/check? https://codereview.appspot.com/910104320:16
rick_h_extremely weak shot in the dark :)20:16
benjigary_poster: I can give you the latest on memory leaks any time20:22
gary_posterack on calls thanks20:22
bachi rick_h_20:27
rick_h_bac: howdy20:34
bacrick_h_: hey, i think i'm ok.  i was surprised to see two hidden clones created by the resizingtextarea.  now i see there is a separate one for single_line20:35
bacrick_h_: http://paste.ubuntu.com/5623854/plain/20:35
rick_h_bac: hmmm, thinking20:36
bacnote they both have opacity:0 but one has a width and the other doesn't20:37
rick_h_bac: could there be something where it's run twice and Y.all(textarea) grabs the mirror?20:37
bacit's ok, i was just surprised20:37
rick_h_bac: yea, so am I20:37
bacperhaps.  this is in a test.20:37
rick_h_bac: checking LP to see if that's true there. 20:38
rick_h_bac: yea, in LP there's only the two20:38
rick_h_https://bugs.launchpad.net/juju-gui/+filebug for instance20:38
rick_h_bac: so I'd expect that to be left over test cruft or something 20:38
bacok20:39
rick_h_bac: any chance I can rope you into a second review? https://codereview.appspot.com/9099043/20:47
bacrick_h_: in a sec, yes20:48
rick_h_bac: ty 20:48
bacrick_h_: looking now.20:58
gary_postermust run benji20:59
gary_postersorry20:59
benjigary_poster: no worries, I'll catch you tomorrow20:59
bacrick_h_: done21:06
rick_h_bac: thanks21:07
bacrick_h_: your LP example regarding the textarea does not have any that are marked 'single_line' i don't think.  it may be that either the test is creating an extra or the use of 'single_line' is doing it21:07
bacrick_h_: is there any good way to write a CSS selector that would just get the real one?  i don't see how, as currently written.21:08
rick_h_bac: lokoing21:08
rick_h_hmm, can't find your review url in my list21:09
rick_h_bac: do you have the review url handy? Or just an easy way to view source?21:09
bacrick_h_: https://codereview.appspot.com/9077043 ... it was linked from the card on the kanban board.  (not always true, though)21:11
rick_h_bac:  ah thanks21:11
bacrick_h_: one of my tests does this, and pulls in the clones21:11
bac textareaControls = container.all('.control-group textarea.config-field');21:11
rick_h_bac: so couple of ways. originally you do a Y.all('textarea').plug...?21:12
rick_h_bac: so you can store that Y.all result list for a reference to the non-clones21:12
bacrick_h_: something like that21:12
baccould do21:13
rick_h_bac: maybe the better thnig would be to stick a class on the clone node that's something like .juju-clone-xx21:13
bacyeah, i think so21:13
rick_h_bac: or better yet, set an attribute. data-text-area-clone="yuid of original node"21:13
rick_h_than you can select Y.all('textarea["data-text-area-clone"])21:14
rick_h_as well as match the clone to the originally21:14
rick_h_bac: but yea, looking at the code you're right. 21:15
rick_h_bac: the _get_single_line_height does another clone21:15
bacah, ok21:15
rick_h_bac: maybe a better fix would be that it would destroy the single line clone once it got the height value? 21:15
rick_h_bac: so submitted a comment to that MP with a potential/suggested fix for this specific issue. Though I think the class stuff might be helpful one day, but might be YANGNI for now21:17
bacrick_h_: ok, but that branch is landed.  i may port your comment over to my next MP21:18
rick_h_bac: right sorry just used it more like a pastebin pointed at the right place in the file :)21:18
baccool21:18
hatchbefore I go looking does anyone know why unit views are called 8 times?21:34
rick_h_hatch: still around?23:56

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!