Merge lp:~hatch/juju-gui/bundle-tabs-1240973 into lp:juju-gui/experimental

Proposed by Jeff Pihach
Status: Merged
Merged at revision: 1141
Proposed branch: lp:~hatch/juju-gui/bundle-tabs-1240973
Merge into: lp:juju-gui/experimental
Diff against target: 133 lines (+49/-20)
4 files modified
app/subapps/browser/views/bundle.js (+1/-0)
app/subapps/browser/views/charm.js (+1/-9)
app/subapps/browser/views/entity-base.js (+16/-0)
test/test_bundle_details_view.js (+31/-11)
To merge this branch: bzr merge lp:~hatch/juju-gui/bundle-tabs-1240973
Reviewer Review Type Date Requested Status
Juju GUI Hackers Pending
Review via email: mp+191680@code.launchpad.net

Description of the change

Bundle tabview now reacts to the url hash

https://codereview.appspot.com/14702045/

To post a comment you must log in.
Revision history for this message
Jeff Pihach (hatch) wrote :
Download full text (4.8 KiB)

Reviewers: mp+191680_code.launchpad.net,

Message:
Please take a look.

Description:
Bundle tabview now reacts to the url hash

https://code.launchpad.net/~hatch/juju-gui/bundle-tabs-1240973/+merge/191680

(do not edit description out of merge proposal)

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

Affected files (+51, -20 lines):
   A [revision details]
   M app/subapps/browser/views/bundle.js
   M app/subapps/browser/views/charm.js
   M app/subapps/browser/views/entity-base.js
   M test/test_bundle_details_view.js

Index: [revision details]
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: <email address hidden>
+New revision: <email address hidden>

Index: test/test_bundle_details_view.js
=== modified file 'test/test_bundle_details_view.js'
--- test/test_bundle_details_view.js 2013-10-17 14:11:43 +0000
+++ test/test_bundle_details_view.js 2013-10-17 16:55:19 +0000
@@ -51,24 +51,31 @@
    });

    beforeEach(function() {
+ view = generateBundleView();
+ view._setupLocalFakebackend = function() {
+ this.fakebackend = utils.makeFakeBackend();
+ };
+ });
+
+ afterEach(function() {
+ container.remove().destroy(true);
+ view.destroy();
+ });
+
+ function generateBundleView(options) {
      data = Y.clone(origData);
      container = utils.makeContainer();
      container.append('<div class="bws-view-data"></div>');
- view = new Y.juju.browser.views.BrowserBundleView({
+ var defaults = {
        store: modifyFakeStore(),
        db: {},
        entityId: data.id,
        renderTo: container
- });
- view._setupLocalFakebackend = function() {
- this.fakebackend = utils.makeFakeBackend();
      };
- });
-
- afterEach(function() {
- container.remove().destroy(true);
- view.destroy();
- });
+ var bundleView = Y.mix(defaults, options, true);
+ view = new Y.juju.browser.views.BrowserBundleView(bundleView);
+ return view;
+ }

    function modifyFakeStore(options) {
      var defaults = {
@@ -297,6 +304,19 @@
      view.render();
    });

-
+ it('selects the proper tab when given one', function(done) {
+ view = generateBundleView({
+ activeTab: '#bws-charms'
+ });
+ view._parseData = function() {
+ return new Y.Promise(function(resolve) { resolve(); });
+ };
+ view.render();
+ view.after('renderedChange', function(e) {
+ var selected = view.get('container').one('.yui3-tab-selected a');
+ assert.equal(selected.getAttribute('href'), '#bws-charms');
+ done();
+ });
+ });

  });

Index: app/subapps/browser/views/bundle.js
=== modified file 'app/subapps/browser/views/bundle.js'
--- app/subapps/browser/views/bundle.js 2013-10-17 14:11:43 +0000
+++ app/subapps/browser/views/bundle.js 2013-10-17 16:55:19 +0000
@@ -204,6 +204,7 @@
          this.tabview.selectChild(2);
        }
        this._dispatchTabEvents(this.tabview);
+ this._showActiveTab();
        this._renderCharmListing();

        this.set('rendered', true);

Index: app/subapps/brow...

Read more...

Revision history for this message
Jeff Pihach (hatch) wrote :

Review notes

https://codereview.appspot.com/14702045/diff/1/app/subapps/browser/views/charm.js
File app/subapps/browser/views/charm.js (left):

https://codereview.appspot.com/14702045/diff/1/app/subapps/browser/views/charm.js#oldcode364
app/subapps/browser/views/charm.js:364: if (this.get('activeTab')) {
Moved to entity-base.js

https://codereview.appspot.com/14702045/

Revision history for this message
Madison Scott-Clary (makyo) wrote :
Revision history for this message
Jeff Pihach (hatch) wrote :
Revision history for this message
Jeff Pihach (hatch) wrote :

*** Submitted:

Bundle tabview now reacts to the url hash

R=matthew.scott
CC=
https://codereview.appspot.com/14702045

https://codereview.appspot.com/14702045/

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'app/subapps/browser/views/bundle.js'
2--- app/subapps/browser/views/bundle.js 2013-10-17 14:11:43 +0000
3+++ app/subapps/browser/views/bundle.js 2013-10-17 17:02:04 +0000
4@@ -204,6 +204,7 @@
5 this.tabview.selectChild(2);
6 }
7 this._dispatchTabEvents(this.tabview);
8+ this._showActiveTab();
9 this._renderCharmListing();
10
11 this.set('rendered', true);
12
13=== modified file 'app/subapps/browser/views/charm.js'
14--- app/subapps/browser/views/charm.js 2013-10-11 17:51:10 +0000
15+++ app/subapps/browser/views/charm.js 2013-10-17 17:02:04 +0000
16@@ -349,7 +349,7 @@
17
18 this._setupTabview();
19 this._dispatchTabEvents(this.tabview);
20-
21+ this._showActiveTab();
22
23 if (isFullscreen) {
24 if (!this.get('entity').get('relatedCharms')) {
25@@ -361,14 +361,6 @@
26 }
27 }
28
29- if (this.get('activeTab')) {
30- var tab = this.get('container').one(
31- '.tabs a[href="' + this.get('activeTab') + '"]');
32- if (tab) {
33- tab.get('parentNode').simulate('click');
34- }
35- }
36-
37 // XXX: Ideally we shouldn't have to do this; resetting the container
38 // with .empty or something before rendering the charm view should work.
39 // But it doesn't so we scroll the nav bar into view, load the charm
40
41=== modified file 'app/subapps/browser/views/entity-base.js'
42--- app/subapps/browser/views/entity-base.js 2013-10-09 23:37:12 +0000
43+++ app/subapps/browser/views/entity-base.js 2013-10-17 17:02:04 +0000
44@@ -435,6 +435,22 @@
45 render: true,
46 srcNode: this.get('container').one('.tabs')
47 });
48+ },
49+
50+ /**
51+ Shows the active tabview tab set via the browser subapp.
52+
53+ @method _showActiveTab
54+ */
55+ _showActiveTab: function() {
56+ var activeTab = this.get('activeTab');
57+ if (activeTab) {
58+ var tab = this.get('container')
59+ .one('.tabs a[href="' + activeTab + '"]');
60+ if (tab) {
61+ tab.get('parentNode').simulate('click');
62+ }
63+ }
64 }
65 };
66
67
68=== modified file 'test/test_bundle_details_view.js'
69--- test/test_bundle_details_view.js 2013-10-17 14:11:43 +0000
70+++ test/test_bundle_details_view.js 2013-10-17 17:02:04 +0000
71@@ -51,24 +51,31 @@
72 });
73
74 beforeEach(function() {
75+ view = generateBundleView();
76+ view._setupLocalFakebackend = function() {
77+ this.fakebackend = utils.makeFakeBackend();
78+ };
79+ });
80+
81+ afterEach(function() {
82+ container.remove().destroy(true);
83+ view.destroy();
84+ });
85+
86+ function generateBundleView(options) {
87 data = Y.clone(origData);
88 container = utils.makeContainer();
89 container.append('<div class="bws-view-data"></div>');
90- view = new Y.juju.browser.views.BrowserBundleView({
91+ var defaults = {
92 store: modifyFakeStore(),
93 db: {},
94 entityId: data.id,
95 renderTo: container
96- });
97- view._setupLocalFakebackend = function() {
98- this.fakebackend = utils.makeFakeBackend();
99 };
100- });
101-
102- afterEach(function() {
103- container.remove().destroy(true);
104- view.destroy();
105- });
106+ var bundleView = Y.mix(defaults, options, true);
107+ view = new Y.juju.browser.views.BrowserBundleView(bundleView);
108+ return view;
109+ }
110
111 function modifyFakeStore(options) {
112 var defaults = {
113@@ -297,6 +304,19 @@
114 view.render();
115 });
116
117-
118+ it('selects the proper tab when given one', function(done) {
119+ view = generateBundleView({
120+ activeTab: '#bws-charms'
121+ });
122+ view._parseData = function() {
123+ return new Y.Promise(function(resolve) { resolve(); });
124+ };
125+ view.render();
126+ view.after('renderedChange', function(e) {
127+ var selected = view.get('container').one('.yui3-tab-selected a');
128+ assert.equal(selected.getAttribute('href'), '#bws-charms');
129+ done();
130+ });
131+ });
132
133 });

Subscribers

People subscribed via source and target branches