Merge ~steverydz/maas:add-url-params-for-tabs into maas:master

Proposed by Steve Rydz
Status: Merged
Approved by: Steve Rydz
Approved revision: 368305d03b03b43b17675cebb13c2a58b3313b4c
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~steverydz/maas:add-url-params-for-tabs
Merge into: maas:master
Diff against target: 114 lines (+27/-12)
3 files modified
src/maasserver/static/js/angular/controllers/node_details.js (+6/-0)
src/maasserver/static/js/angular/controllers/tests/test_node_details.js (+9/-0)
src/maasserver/static/partials/node-details.html (+12/-12)
Reviewer Review Type Date Requested Status
Anthony Dillon Approve
Blake Rouse (community) Approve
Review via email: mp+366924@code.launchpad.net

Commit message

LP: #1826174 - Add section name to URL to persist tabs

Description of the change

QA steps:
- Go to a machine or a controller page
- Click on any of the tabs and reload the page
- See that the same tab is open

To post a comment you must log in.
Revision history for this message
Blake Rouse (blake-rouse) wrote :

Nice!

review: Approve
Revision history for this message
Anthony Dillon (ya-bo-ng) wrote :

LGTM, finally! +1

review: Approve

There was an error fetching revisions from git servers. Please try again in a few minutes. If the problem persists, contact Launchpad support.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/src/maasserver/static/js/angular/controllers/node_details.js b/src/maasserver/static/js/angular/controllers/node_details.js
index a1f8a25..a1e0964 100644
--- a/src/maasserver/static/js/angular/controllers/node_details.js
+++ b/src/maasserver/static/js/angular/controllers/node_details.js
@@ -135,6 +135,12 @@ function NodeDetailsController(
135 limit: 10135 limit: 10
136 };136 };
137137
138 // Add parameters to URL so tab state persists
139 $scope.openSection = function(sectionName) {
140 $scope.section.area = sectionName;
141 $location.search("area", sectionName);
142 };
143
138 // Updates the page title.144 // Updates the page title.
139 function updateTitle() {145 function updateTitle() {
140 if ($scope.node && $scope.node.fqdn) {146 if ($scope.node && $scope.node.fqdn) {
diff --git a/src/maasserver/static/js/angular/controllers/tests/test_node_details.js b/src/maasserver/static/js/angular/controllers/tests/test_node_details.js
index b6f90c0..913b5e4 100644
--- a/src/maasserver/static/js/angular/controllers/tests/test_node_details.js
+++ b/src/maasserver/static/js/angular/controllers/tests/test_node_details.js
@@ -2409,4 +2409,13 @@ describe("NodeDetailsController", function() {
2409 );2409 );
2410 });2410 });
2411 });2411 });
2412
2413 describe("openSection", function() {
2414 it("sets section.area to passed argument", function() {
2415 makeController();
2416 $scope.node = node;
2417 $scope.openSection("controllers");
2418 expect($scope.section.area).toBe("controllers");
2419 });
2420 });
2412});2421});
diff --git a/src/maasserver/static/partials/node-details.html b/src/maasserver/static/partials/node-details.html
index 8c3f295..f0f758a 100755
--- a/src/maasserver/static/partials/node-details.html
+++ b/src/maasserver/static/partials/node-details.html
@@ -281,62 +281,62 @@
281 <li class="p-tabs__item" role="presentation">281 <li class="p-tabs__item" role="presentation">
282 <a role="tab" class="p-tabs__link" data-ng-if="!isController && !isDevice"282 <a role="tab" class="p-tabs__link" data-ng-if="!isController && !isDevice"
283 data-ng-class="{ 'is-active': section.area === 'summary'}"283 data-ng-class="{ 'is-active': section.area === 'summary'}"
284 data-ng-click="section.area = 'summary'">Machine summary</a>284 data-ng-click="openSection('summary')">Machine summary</a>
285 </li>285 </li>
286 <li class="p-tabs__item" role="presentation">286 <li class="p-tabs__item" role="presentation">
287 <a role="tab" class="p-tabs__link" data-ng-if="isController"287 <a role="tab" class="p-tabs__link" data-ng-if="isController"
288 data-ng-class="{ 'is-active': section.area === 'summary'}"288 data-ng-class="{ 'is-active': section.area === 'summary'}"
289 data-ng-click="section.area = 'summary'">Controller summary</a>289 data-ng-click="openSection('summary')">Controller summary</a>
290 </li>290 </li>
291 <li class="p-tabs__item" role="presentation">291 <li class="p-tabs__item" role="presentation">
292 <a role="tab" class="p-tabs__link" data-ng-if="isDevice"292 <a role="tab" class="p-tabs__link" data-ng-if="isDevice"
293 data-ng-class="{ 'is-active': section.area === 'summary'}"293 data-ng-class="{ 'is-active': section.area === 'summary'}"
294 data-ng-click="section.area = 'summary'">Device summary</a>294 data-ng-click="openSection('summary')">Device summary</a>
295 </li>295 </li>
296 <li class="p-tabs__item" role="presentation">296 <li class="p-tabs__item" role="presentation">
297 <a role="tab" class="p-tabs__link" data-ng-if="!isController && devices.length"297 <a role="tab" class="p-tabs__link" data-ng-if="!isController && devices.length"
298 data-ng-class="{ 'is-active': section.area === 'containers'}"298 data-ng-class="{ 'is-active': section.area === 'containers'}"
299 data-ng-click="section.area = 'containers'">Containers</a>299 data-ng-click="openSection('containers')">Containers</a>
300 </li>300 </li>
301 <li class="p-tabs__item" role="presentation">301 <li class="p-tabs__item" role="presentation">
302 <a role="tab" class="p-tabs__link" data-ng-if="isController"302 <a role="tab" class="p-tabs__link" data-ng-if="isController"
303 data-ng-class="{ 'is-active': section.area === 'vlans'}"303 data-ng-class="{ 'is-active': section.area === 'vlans'}"
304 data-ng-click="section.area = 'vlans'">VLANs</a>304 data-ng-click="openSection('vlans')">VLANs</a>
305 </li>305 </li>
306 <li class="p-tabs__item" role="presentation">306 <li class="p-tabs__item" role="presentation">
307 <a role="tab" class="p-tabs__link"307 <a role="tab" class="p-tabs__link"
308 data-ng-class="{ 'is-active': section.area === 'interfaces'}"308 data-ng-class="{ 'is-active': section.area === 'interfaces'}"
309 data-ng-click="section.area = 'interfaces'">Interfaces</a>309 data-ng-click="openSection('interfaces')">Interfaces</a>
310 </li>310 </li>
311 <li class="p-tabs__item" role="presentation">311 <li class="p-tabs__item" role="presentation">
312 <a role="tab" class="p-tabs__link" data-ng-if="!isDevice && !(isController && node.status === 'New')"312 <a role="tab" class="p-tabs__link" data-ng-if="!isDevice && !(isController && node.status === 'New')"
313 data-ng-class="{ 'is-active': section.area === 'storage'}"313 data-ng-class="{ 'is-active': section.area === 'storage'}"
314 data-ng-click="section.area = 'storage'">Storage</a>314 data-ng-click="openSection('storage')">Storage</a>
315 </li>315 </li>
316 <li class="p-tabs__item" role="presentation">316 <li class="p-tabs__item" role="presentation">
317 <a role="tab" class="p-tabs__link" data-ng-if="node.commissioning_script_count > 0"317 <a role="tab" class="p-tabs__link" data-ng-if="node.commissioning_script_count > 0"
318 data-ng-class="{ 'is-active': section.area === 'commissioning'}"318 data-ng-class="{ 'is-active': section.area === 'commissioning'}"
319 data-ng-click="section.area = 'commissioning'"><span data-maas-script-status="script-status" data-script-status="node.commissioning_status"></span> Commissioning</a>319 data-ng-click="openSection('commissioning')"><span data-maas-script-status="script-status" data-script-status="node.commissioning_status"></span> Commissioning</a>
320 </li>320 </li>
321 <li class="p-tabs__item" role="presentation">321 <li class="p-tabs__item" role="presentation">
322 <a role="tab" class="p-tabs__link" data-ng-if="node.testing_script_count > 0"322 <a role="tab" class="p-tabs__link" data-ng-if="node.testing_script_count > 0"
323 data-ng-class="{ 'is-active': section.area === 'testing'}"323 data-ng-class="{ 'is-active': section.area === 'testing'}"
324 data-ng-click="section.area = 'testing'"><span data-maas-script-status="script-status" data-script-status="node.testing_status"></span> Hardware tests</a>324 data-ng-click="openSection('testing')"><span data-maas-script-status="script-status" data-script-status="node.testing_status"></span> Hardware tests</a>
325 </li>325 </li>
326 <li class="p-tabs__item" role="presentation">326 <li class="p-tabs__item" role="presentation">
327 <a role="tab" class="p-tabs__link" data-ng-if="node.has_logs"327 <a role="tab" class="p-tabs__link" data-ng-if="node.has_logs"
328 data-ng-class="{ 'is-active': section.area === 'logs'}"328 data-ng-class="{ 'is-active': section.area === 'logs'}"
329 data-ng-click="section.area = 'logs'"><span data-maas-script-status="script-status" data-script-status="node.installation_status" data-ng-if="node.installation_status !== -1"></span> Logs</a>329 data-ng-click="openSection('logs')"><span data-maas-script-status="script-status" data-script-status="node.installation_status" data-ng-if="node.installation_status !== -1"></span> Logs</a>
330 </li>330 </li>
331 <li class="p-tabs__item" role="presentation">331 <li class="p-tabs__item" role="presentation">
332 <a role="tab" class="p-tabs__link" data-ng-if="!isDevice"332 <a role="tab" class="p-tabs__link" data-ng-if="!isDevice"
333 data-ng-class="{ 'is-active': section.area === 'events'}"333 data-ng-class="{ 'is-active': section.area === 'events'}"
334 data-ng-click="section.area = 'events'">Events</a>334 data-ng-click="openSection('events')">Events</a>
335 </li>335 </li>
336 <li class="p-tabs__item" role="presentation">336 <li class="p-tabs__item" role="presentation">
337 <a role="tab" class="p-tabs__link" data-ng-if="canEdit()"337 <a role="tab" class="p-tabs__link" data-ng-if="canEdit()"
338 data-ng-class="{ 'is-active': section.area === 'configuration'}"338 data-ng-class="{ 'is-active': section.area === 'configuration'}"
339 data-ng-click="section.area = 'configuration'">Configuration</a>339 data-ng-click="openSection('configuration')">Configuration</a>
340 </li>340 </li>
341 </ul>341 </ul>
342 </div>342 </div>

Subscribers

People subscribed via source and target branches