Merge lp:~frankban/juju-gui/bug-1074297-charm-panel-description into lp:juju-gui/experimental

Proposed by Francesco Banconi
Status: Merged
Merged at revision: 228
Proposed branch: lp:~frankban/juju-gui/bug-1074297-charm-panel-description
Merge into: lp:juju-gui/experimental
Diff against target: 323 lines (+95/-55)
4 files modified
app/templates/charm-description.handlebars (+19/-10)
app/templates/charm-pre-configuration.handlebars (+5/-5)
lib/views/stylesheet.less (+61/-27)
test/test_charm_panel.js (+10/-13)
To merge this branch: bzr merge lp:~frankban/juju-gui/bug-1074297-charm-panel-description
Reviewer Review Type Date Requested Status
Juju GUI Hackers Pending
Review via email: mp+133097@code.launchpad.net

Description of the change

Charm panel description design.

https://codereview.appspot.com/6819098/

To post a comment you must log in.
Revision history for this message
Francesco Banconi (frankban) wrote :

Reviewers: mp+133097_code.launchpad.net,

Message:
Please take a look.

Description:
Charm panel description design.

This branch fixes the charm panel discription view
so that now it matches the visual design here:
https://docs.google.com/a/canonical.com/file/d/0B6l8lFdCRvtqQk93MnZEWDlkU3c/edit
The change includes a `customize-scrollbar` Less mixin: the
Ubuntu-style scrollbar is now present in all the charm
panel views.
This branch does not include the icons (I have made
another card to replace bootstrap icons with customized ones,
and to revert the direction of chevron-[up|down].
The css changes also involve the charm configuration view,
slightly changed here to make it more similar to what can be seen in
https://docs.google.com/a/canonical.com/file/d/0B6l8lFdCRvtqQXRDOUprMHNwTlk/edit.
However, consider that changing the config view is not a goal
of this branch.

https://code.launchpad.net/~frankban/juju-gui/bug-1074297-charm-panel-description/+merge/133097

(do not edit description out of merge proposal)

Please review this at https://codereview.appspot.com/6819098/

Affected files:
   A [revision details]
   M app/templates/charm-description.handlebars
   M app/templates/charm-pre-configuration.handlebars
   M lib/views/stylesheet.less
   M test/test_charm_panel.js

Revision history for this message
Brad Crittenden (bac) wrote :

Nice branch Francesco. I've made a few comments but nothing serious.

I do think the configuration file stuff needs to be fixed or possibly
deferred to another branch.

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-description.handlebars
File app/templates/charm-description.handlebars (right):

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-description.handlebars#newcode2
app/templates/charm-description.handlebars:2: <div
class="charm-nav-back"><i class="icon-chevron-left"></i> Back</div>
Why not use the new asset in this branch?

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-pre-configuration.handlebars
File app/templates/charm-pre-configuration.handlebars (right):

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-pre-configuration.handlebars#newcode50
app/templates/charm-pre-configuration.handlebars:50:
When selecting a configuration file, the name now overlaps with other
elements. This work probably should be a separate branch.

https://codereview.appspot.com/6819098/diff/1/lib/views/stylesheet.less
File lib/views/stylesheet.less (right):

https://codereview.appspot.com/6819098/diff/1/lib/views/stylesheet.less#newcode850
lib/views/stylesheet.less:850: border-bottom: 1px solid #C2C2C2;
Where did these colors come from? They don't seem to match the ones in
the assets provided (charm_head2_div.png, charm_detail_title_div.png,
etc). They do *look* really good, though.

https://codereview.appspot.com/6819098/diff/1/lib/views/stylesheet.less#newcode871
lib/views/stylesheet.less:871: border-bottom: 1px solid #C2C2C2;
It would be nice to abstract these re-used colors, if possible in a
readable manner. I cannot believe we have so many different shades of
gray in this stylesheet, but that's what has been specified.

https://codereview.appspot.com/6819098/diff/1/test/test_charm_panel.js
File test/test_charm_panel.js (right):

https://codereview.appspot.com/6819098/diff/1/test/test_charm_panel.js#newcode234
test/test_charm_panel.js:234:
description_div.get('text').should.contain('A DB');
Nice simplification.

https://codereview.appspot.com/6819098/

230. By Francesco Banconi

Abstract the charm panel border column.

Revision history for this message
Francesco Banconi (frankban) wrote :

Please take a look.

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-description.handlebars
File app/templates/charm-description.handlebars (right):

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-description.handlebars#newcode2
app/templates/charm-description.handlebars:2: <div
class="charm-nav-back"><i class="icon-chevron-left"></i> Back</div>
On 2012/11/06 20:42:44, bac wrote:
> Why not use the new asset in this branch?

We discussed this with Gary and decided to create another card to
replace bootsrap icons with the new assets.
See https://bugs.launchpad.net/juju-gui/+bug/1075672

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-pre-configuration.handlebars
File app/templates/charm-pre-configuration.handlebars (right):

https://codereview.appspot.com/6819098/diff/1/app/templates/charm-pre-configuration.handlebars#newcode50
app/templates/charm-pre-configuration.handlebars:50:
On 2012/11/06 20:42:44, bac wrote:
> When selecting a configuration file, the name now overlaps with other
elements.
> This work probably should be a separate branch.

Agreed.

https://codereview.appspot.com/6819098/diff/1/lib/views/stylesheet.less
File lib/views/stylesheet.less (right):

https://codereview.appspot.com/6819098/diff/1/lib/views/stylesheet.less#newcode850
lib/views/stylesheet.less:850: border-bottom: 1px solid #C2C2C2;
On 2012/11/06 20:42:44, bac wrote:
> Where did these colors come from? They don't seem to match the ones
in the
> assets provided (charm_head2_div.png, charm_detail_title_div.png,
etc). They do
> *look* really good, though.

IIRC, I used the color picker to obtain these colors from the wireframe.

https://codereview.appspot.com/6819098/diff/1/lib/views/stylesheet.less#newcode871
lib/views/stylesheet.less:871: border-bottom: 1px solid #C2C2C2;
On 2012/11/06 20:42:44, bac wrote:
> It would be nice to abstract these re-used colors, if possible in a
readable
> manner. I cannot believe we have so many different shades of gray in
this
> stylesheet, but that's what has been specified.

Done. The border color is now a variable: @charm-panel-border-color.
Nice catch on this repetition, thanks.

https://codereview.appspot.com/6819098/

Revision history for this message
Francesco Banconi (frankban) wrote :

Thanks for the review Brad.

We have a card for the charm config panel, and, since it is possible to
reuse some of this work, I will take care of that task once this branch
is landed.

https://codereview.appspot.com/6819098/

Revision history for this message
Gary Poster (gary) wrote :
Download full text (4.9 KiB)

Hey Francesco. This looks very good. Thank you.

I am chatty in the line-by-line comments but I only ask for one or two
things, and you may ignore them if you disagree.

You will almost certainly want to merge trunk by hand before you land
this, since (thanks to your review) I have landed the "related charms"
addition to the description pane, and you'll need to make sure that it
has necessary changes to look good with your improvements.

Thanks again,

Gary

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars
File app/templates/charm-description.handlebars (right):

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode2
app/templates/charm-description.handlebars:2: <div
class="charm-nav-back"><i class="icon-chevron-left"></i> Back</div>
(As we discussed, we have a separate card for converting these to the
desired assets.)

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode10
app/templates/charm-description.handlebars:10: <div
class="charm-panel-configure-buttons">
yay, we actually reused a class name in the charm panel! will wonders
never cease? :-) thank you for being thoughtful with this

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode23
app/templates/charm-description.handlebars:23: {{#if owner}}
I think I have a similar block that instead draws "[charmers]" for the
owner name. I think I prefer your solution. I don't think we have a
specification for this. If we do, go with that; otherwise, make your
own choice, and I suggest sticking with what you have here.

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode60
app/templates/charm-description.handlebars:60: <h4><i
class="icon-chevron-up"></i> Change Log</h4>
I had intentionally diverged from the "Change Log" text because I
thought a single change was not a log. This is what was specified
though, you are right. +1 on this change.

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode63
app/templates/charm-description.handlebars:63: <h5>Last Change</h5>
Oh, I see. That's fine.

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-pre-configuration.handlebars
File app/templates/charm-pre-configuration.handlebars (right):

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-pre-configuration.handlebars#newcode43
app/templates/charm-pre-configuration.handlebars:43: <div
class="config-file-upload control-group">
Moving this into the service settings was a conscious decision by the
devs who did it, I think, even though the visual design had it here.
The configuration file replaces the configuration form, and IIRC makes
it hide.

In this particular case, I suggest moving it back where it was before,
in the "Service Settings." OTOH, if you disagree for any reason, you
have the visual design on your side, so I'm happy for this change to win
in that case. :-)

It also doesn't look quite right--it needs some left padding--but I'm
figuring you want to hold off on that change for a...

Read more...

231. By Francesco Banconi

Merged source and resolved conflicts.

232. By Francesco Banconi

Restored previous position of file upload control in the charm config panel.

Revision history for this message
Francesco Banconi (frankban) wrote :
Download full text (4.5 KiB)

Thanks for the review Gary.
Already merged trunk and resolved some conflicts encountered.
Now I will add fixes per UX review and land this branch.

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars
File app/templates/charm-description.handlebars (right):

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode2
app/templates/charm-description.handlebars:2: <div
class="charm-nav-back"><i class="icon-chevron-left"></i> Back</div>
On 2012/11/07 13:58:59, gary.poster wrote:
> (As we discussed, we have a separate card for converting these to the
desired
> assets.)

Cool.

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode10
app/templates/charm-description.handlebars:10: <div
class="charm-panel-configure-buttons">
On 2012/11/07 13:58:59, gary.poster wrote:
> yay, we actually reused a class name in the charm panel! will wonders
never
> cease? :-) thank you for being thoughtful with this

:-) I have to fix other things per UX review, however this seems to be
fine. \o/

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode23
app/templates/charm-description.handlebars:23: {{#if owner}}
On 2012/11/07 13:58:59, gary.poster wrote:
> I think I have a similar block that instead draws "[charmers]" for
the owner
> name. I think I prefer your solution. I don't think we have a
specification
> for this. If we do, go with that; otherwise, make your own choice,
and I
> suggest sticking with what you have here.

Done.

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-description.handlebars#newcode60
app/templates/charm-description.handlebars:60: <h4><i
class="icon-chevron-up"></i> Change Log</h4>
On 2012/11/07 13:58:59, gary.poster wrote:
> I had intentionally diverged from the "Change Log" text because I
thought a
> single change was not a log. This is what was specified though, you
are right.
> +1 on this change.

Thanks, and I agree with you that one change is not a log.

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-pre-configuration.handlebars
File app/templates/charm-pre-configuration.handlebars (right):

https://codereview.appspot.com/6819098/diff/6001/app/templates/charm-pre-configuration.handlebars#newcode43
app/templates/charm-pre-configuration.handlebars:43: <div
class="config-file-upload control-group">
On 2012/11/07 13:58:59, gary.poster wrote:
> Moving this into the service settings was a conscious decision by the
devs who
> did it, I think, even though the visual design had it here. The
configuration
> file replaces the configuration form, and IIRC makes it hide.

> In this particular case, I suggest moving it back where it was before,
in the
> "Service Settings." OTOH, if you disagree for any reason, you have
the visual
> design on your side, so I'm happy for this change to win in that case.
:-)

> It also doesn't look quite right--it needs some left padding--but I'm
figuring
> you want to hold off on that change for another branch.

Restored the previous position, I missed the "config file hides the
form" behavior. This...

Read more...

233. By Francesco Banconi

Fixes per UX review

Revision history for this message
Francesco Banconi (frankban) wrote :

*** Submitted:

Charm panel description design.

R=bac, gary.poster
CC=
https://codereview.appspot.com/6819098

https://codereview.appspot.com/6819098/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'app/templates/charm-description.handlebars'
2--- app/templates/charm-description.handlebars 2012-11-05 21:51:27 +0000
3+++ app/templates/charm-description.handlebars 2012-11-07 18:27:21 +0000
4@@ -1,12 +1,18 @@
5 <div>
6- <div class="charm-nav-back"><i class="icon-arrow-left icon-white"></i> Back</div>
7+ <div class="charm-nav-back"><i class="icon-chevron-left"></i> Back</div>
8
9 <div class="charm-description charm-panel">
10- <button class="btn btn-primary deploy"
11- data-url="{{id}}">Deploy</button>
12- <h3>{{package_name}}</h3>
13+ <div id="charm-panel-head">
14+ <h3>{{package_name}}</h3>
15+ {{id}}
16+ </div>
17+
18+ <div class="charm-panel-configure-buttons">
19+ <button class="btn btn-primary deploy" data-url="{{id}}">Deploy</button>
20+ </div>
21+
22 <div class="charm-section">
23- <h4><i class="icon-chevron-down"></i> Description</h4>
24+ <h4 class="first"><i class="icon-chevron-down"></i> Description</h4>
25 <div class="collapsible">
26 <h5>Summary</h5>
27 <p>{{summary}}</p>
28@@ -14,11 +20,9 @@
29 <p>{{series}}</p>
30 <h5>Description</h5>
31 <div>{{description}}</div>
32+ {{#if owner}}
33 <h5>Owner</h5>
34- {{#if owner}}
35 <p>{{owner}}</p>
36- {{else}}
37- <p>[Official charm]</p>
38 {{/if}}
39 {{#if store_revision}}
40 <h5>Store Revision</h5>
41@@ -26,6 +30,7 @@
42 {{/if}}
43 </div>
44 </div>
45+
46 {{#any requires provides}}
47 <div class="charm-section">
48 <h4><i class="icon-chevron-up"></i> Interfaces</h4>
49@@ -49,11 +54,13 @@
50 </div>
51 </div>
52 {{/any}}
53+
54 {{#if last_change}}
55 <div class="charm-section">
56- <h4><i class="icon-chevron-up"></i> Last Change</h4>
57+ <h4><i class="icon-chevron-up"></i> Change Log</h4>
58 <div class="collapsible">
59 {{#with last_change}}
60+ <h5>Last Change</h5>
61 <div>{{dateformat created "%F"}}</div>
62 <div>{{committer}}</div>
63 <div class="commitmessage">{{message}}</div>
64@@ -61,13 +68,15 @@
65 </div>
66 </div>
67 {{/if}}
68+
69 {{#any requires provides}}
70 <div class="charm-section">
71- <h4><i class="icon-chevron-up"></i>Related Charms</h4>
72+ <h4><i class="icon-chevron-up"></i> Related Charms</h4>
73 <div class="collapsible" id="related-charms">
74 Loading...
75 </div>
76 </div>
77 {{/any}}
78+
79 </div>
80 </div>
81
82=== modified file 'app/templates/charm-pre-configuration.handlebars'
83--- app/templates/charm-pre-configuration.handlebars 2012-10-26 10:44:21 +0000
84+++ app/templates/charm-pre-configuration.handlebars 2012-11-07 18:27:21 +0000
85@@ -52,11 +52,11 @@
86 </div>
87 </div>
88 <div class="charm-settings">
89- <form>
90- <div id="service-config" class="collapsible">
91- {{> service-config}}
92- </div>
93- </form>
94+ <form>
95+ <div id="service-config" class="collapsible">
96+ {{> service-config}}
97+ </div>
98+ </form>
99 </div>
100 </div>
101 {{/if}}
102
103=== modified file 'lib/views/stylesheet.less'
104--- lib/views/stylesheet.less 2012-11-07 13:18:31 +0000
105+++ lib/views/stylesheet.less 2012-11-07 18:27:21 +0000
106@@ -1,5 +1,6 @@
107 /* Processed with LESS from lib/views/stylesheet.less */
108 @font-family: 'Ubuntu', 'Helvetica Neue', Helvetica, Arial, sans-serif;
109+@font-family-medium: 'Ubuntu Medium', 'Helvetica Neue', Helvetica, Arial, sans-serif;
110
111 /* Define common colors. */
112 @label-color: #292929;
113@@ -12,8 +13,8 @@
114 @charm-panel-cancel-button-color: #b8b8b8;
115 @charm-panel-cancel-button-bottom-gradient: #a3a39f;
116 @charm-panel-cancel-button-shadow: #515050;
117-@charm-panel-separator-color: #aeaeae;
118 @charm-panel-background-color: #eeeeee;
119+@charm-panel-border-color: #BEBEBE;
120 @navbar-color: #2D2D2D!important;
121
122 body {
123@@ -127,9 +128,10 @@
124 margin: 0 5px;
125 }
126 input {
127+ height: 23px;
128 width: 128px;
129 background: url(/juju-ui/assets/images/searchbox_icon.png)
130- no-repeat 2px 1px whiteSmoke;
131+ no-repeat 4px 4px whiteSmoke;
132 margin: 0 10px;
133 padding: 3px 3px 3px 26px;
134 font-style: italic;
135@@ -772,7 +774,20 @@
136 }
137 }
138
139+.customize-scrollbar {
140+ ::-webkit-scrollbar {
141+ width: 4px;
142+ }
143+ ::-webkit-scrollbar-track {
144+ -webkit-box-shadow: inset 1px 0 3px #989A9C;
145+ }
146+ ::-webkit-scrollbar-thumb {
147+ -webkit-box-shadow: inset 4px 0 3px #D74613;
148+ }
149+}
150+
151 #juju-search-charm-panel {
152+ .customize-scrollbar;
153 display: block;
154 z-index: 999;
155 padding: 0;
156@@ -820,7 +835,8 @@
157 }
158 }
159 .charm-panel-configure-buttons {
160- border-bottom: 1px solid @charm-panel-separator-color;
161+ background-color: #FFFFFF;
162+ border-bottom: 1px solid @charm-panel-border-color;
163 height: 52px;
164 padding-left: 8px;
165 .btn {
166@@ -832,43 +848,62 @@
167 height: 500px;
168 }
169 .charm-nav-back {
170- background-color: black;
171- text-transform: uppercase;
172- color: white;
173- font-weight: bold;
174+ border-top: 1px solid #DEDEDE;
175+ border-bottom: 1px solid @charm-panel-border-color;
176+ color: @charm-panel-deploy-button-color;
177 cursor: pointer;
178+ font-size: 14px;
179+ padding: 7px 4px;
180 }
181 .charm-panel {
182+ background-color: @charm-panel-background-color;
183+ height: 432px;
184+ overflow-y: auto;
185+ overflow-x: hidden;
186 h3 {
187- text-transform: capitalize;
188- color: blue;
189- font-weight: bold;
190- margin-top: 1ex;
191- margin-bottom: 1ex;
192+ color: @label-color;
193+ font-size: 22px;
194+ font-weight: normal;
195+ padding: 5px 0px 2px 0px;
196 }
197 h4 {
198- border-bottom: 1px solid @label-color;
199+ color: @label-color;
200 cursor: pointer;
201- margin-top: 1ex;
202- margin-bottom: 1ex;
203+ border-top: 1px solid #FFFFFF;
204+ border-bottom: 1px solid @charm-panel-border-color;
205+ font-family: @font-family-medium;
206+ font-weight: normal;
207+ padding: 8px 12px;
208 i {
209 float: right;
210 }
211+ &.first {
212+ border-top: 1px solid #E0DEDE;
213+ }
214 }
215 h5 {
216- margin-top: 1ex;
217- &:first-child {
218- margin-top: 0;
219- }
220- }
221- height: 432px;
222- overflow-y: auto;
223- overflow-x: hidden;
224+ color: @label-color;
225+ font-family: @font-family-medium;
226+ font-weight: normal;
227+ margin-top: 11px;
228+ }
229+ #charm-panel-head {
230+ border-top: 1px solid #FFFFFF;
231+ border-bottom: 1px solid @charm-panel-border-color;
232+ padding: 1ex 12px 10px 12px;
233+ }
234 .collapsible {
235+ background-color: #E7E7E7;
236+ line-height: 16px;
237 overflow: hidden;
238+ padding: 0px 12px;
239+ :last-child {
240+ margin-bottom: 11px;
241+ }
242 }
243 &.charm-description {
244- padding: 1ex 1em;
245+ color: #58595B;
246+ font-size: 12px;
247 .charm-section {
248 .commitmessage {
249 padding: 0.8ex 0 1ex 1em;
250@@ -883,14 +918,13 @@
251 }
252 }
253 &.config-variant {
254- padding: 1ex 1em;
255- background-color: @charm-panel-background-color;
256 font-size: 14px;
257+
258 .control-group {
259 width: auto;
260 margin-bottom: 0;
261 margin-top: 1ex;
262- padding-bottom: 0;
263+ padding: 0px 12px;
264 clear: both;
265 }
266 .control-description {
267
268=== modified file 'test/test_charm_panel.js'
269--- test/test_charm_panel.js 2012-11-06 02:07:38 +0000
270+++ test/test_charm_panel.js 2012-11-07 18:27:21 +0000
271@@ -115,7 +115,7 @@
272 field.set('value', 'aaa');
273 field.simulate('keydown', { keyCode: ENTER });
274 node.one('a.charm-detail').simulate('click');
275- node.one('.charm-description > h3').get('text').trim()
276+ node.one('.charm-description h3').get('text').trim()
277 .should.equal('membase');
278 });
279
280@@ -212,15 +212,10 @@
281 { container: container, app: app, model: charm,
282 charmStore: charm_store }).render(),
283 html = container.one('.charm-description'),
284- description_div = html.one('.charm-section div'),
285- interface_div = html.one('div.charm-section:nth-of-type(2)'),
286- last_change_div = html.one('div.charm-section:nth-of-type(3)'),
287- related_div = html.one('div.charm-section:nth-of-type(4)');
288+ description_div = html.one('.charm-section div');
289 html.one('h3').get('text').trim().should.equal('mysql');
290 description_div.getStyle('height').should.not.equal('0px');
291- var _ = expect(interface_div).to.not.exist;
292- _ = expect(last_change_div).to.not.exist;
293- _ = expect(related_div).to.not.exist;
294+ html.all('div.charm-section').size().should.equal(1);
295 });
296
297 it('can render fuller charm', function() {
298@@ -240,10 +235,11 @@
299 { container: container, app: app, model: charm, charms: charms,
300 charmStore: charm_store }).render(),
301 html = container.one('.charm-description'),
302- description_div = html.one('.charm-section div'),
303- interface_div = html.one('div.charm-section:nth-of-type(2) div'),
304- last_change_div = html.one('div.charm-section:nth-of-type(3) div'),
305- related_div = html.one('div.charm-section:nth-of-type(4)');
306+ sections = html.all('.charm-section'),
307+ description_div = sections.item(0).one('div'),
308+ interface_div = sections.item(1).one('div'),
309+ last_change_div = sections.item(2).one('div'),
310+ related_div = sections.item(3).one('div');
311 description_div.get('text').should.contain('A DB');
312 interface_div.getStyle('height').should.equal('0px');
313 interface_div.get('text').should.contain('munin');
314@@ -268,7 +264,8 @@
315 charmStore: charm_store }).render(),
316 html = container.one('.charm-description'),
317 // We use the last change div.
318- section_container = html.one('div.charm-section:nth-of-type(3)');
319+ section_container = html.one('div.charm-section:last-child');
320+ //section_container = html.one('div.charm-section:nth-of-type(3)');
321 section_container.one('div').getStyle('height').should.equal('0px');
322 assert(section_container.one('h4 i').hasClass('icon-chevron-up'));
323 section_container.one('h4').simulate('click');

Subscribers

People subscribed via source and target branches