From dee0e5fce7938d37859098442b83fc35fafc5556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 13 Aug 2014 17:20:54 +0200 Subject: [PATCH] final fixes for fullscreen url state, #672 --- src/app/controllers/dashLoader.js | 1 + src/app/controllers/search.js | 1 + src/app/services/dashboard/dashboardSrv.js | 10 +++++----- src/app/services/dashboard/dashboardViewStateSrv.js | 1 + src/app/services/playlistSrv.js | 1 + src/app/services/unsavedChangesSrv.js | 7 +++++++ 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/app/controllers/dashLoader.js b/src/app/controllers/dashLoader.js index 1754370ae27..720c4634628 100644 --- a/src/app/controllers/dashLoader.js +++ b/src/app/controllers/dashLoader.js @@ -75,6 +75,7 @@ function (angular, _, moment, config) { .then(function(result) { alertSrv.set('Dashboard Saved', 'Dashboard has been saved as "' + result.title + '"','success', 5000); + $location.search({}); $location.path(result.url); $rootScope.$emit('dashboard-saved', $scope.dashboard); diff --git a/src/app/controllers/search.js b/src/app/controllers/search.js index 6c504e1b925..e30031a0713 100644 --- a/src/app/controllers/search.js +++ b/src/app/controllers/search.js @@ -41,6 +41,7 @@ function (angular, _, config, $) { var selectedDash = $scope.results.dashboards[$scope.selectedIndex]; if (selectedDash) { + $location.search({}); $location.path("/dashboard/db/" + selectedDash.id); setTimeout(function() { $('body').click(); // hack to force dropdown to close; diff --git a/src/app/services/dashboard/dashboardSrv.js b/src/app/services/dashboard/dashboardSrv.js index 4f72338dbb1..43c93379dd9 100644 --- a/src/app/services/dashboard/dashboardSrv.js +++ b/src/app/services/dashboard/dashboardSrv.js @@ -52,11 +52,11 @@ function (angular, $, kbn, _) { p.getNextPanelId = function() { var i, j, row, panel, max = 0; for (i = 0; i < this.rows.length; i++) { - row = this.rows[i]; - for (j = 0; j < row.panels.length; j++) { - panel = row.panels[j]; - if (panel.id > max) { max = panel.id; } - } + row = this.rows[i]; + for (j = 0; j < row.panels.length; j++) { + panel = row.panels[j]; + if (panel.id > max) { max = panel.id; } + } } return max + 1; }; diff --git a/src/app/services/dashboard/dashboardViewStateSrv.js b/src/app/services/dashboard/dashboardViewStateSrv.js index b39e159ae4c..dd7831df2d2 100644 --- a/src/app/services/dashboard/dashboardViewStateSrv.js +++ b/src/app/services/dashboard/dashboardViewStateSrv.js @@ -25,6 +25,7 @@ function (angular, _, $) { $scope.onAppEvent('$routeUpdate', function() { var urlState = self.getQueryStringState(); + console.log("route updated!"); if (self.needsSync(urlState)) { self.update(urlState, true); } diff --git a/src/app/services/playlistSrv.js b/src/app/services/playlistSrv.js index 0e9459832f6..c7cd453bfd3 100644 --- a/src/app/services/playlistSrv.js +++ b/src/app/services/playlistSrv.js @@ -68,6 +68,7 @@ function (angular, _, kbn) { timerInstance = setInterval(function() { $rootScope.$apply(function() { angular.element(window).unbind('resize'); + $location.search({}); $location.path(dashboards[index % dashboards.length].url); index++; }); diff --git a/src/app/services/unsavedChangesSrv.js b/src/app/services/unsavedChangesSrv.js index 92425ea89ca..6ec373ed837 100644 --- a/src/app/services/unsavedChangesSrv.js +++ b/src/app/services/unsavedChangesSrv.js @@ -28,10 +28,12 @@ function(angular, _, config) { $rootScope.$on("dashboard-saved", function(event, savedDashboard) { self.original = angular.copy(savedDashboard); self.current = savedDashboard; + self.orignalPath = $location.path(); }); $rootScope.$on("$routeChangeSuccess", function() { self.original = null; + self.originalPath = $location.path(); }); window.onbeforeunload = function() { @@ -42,6 +44,11 @@ function(angular, _, config) { this.init = function() { $rootScope.$on("$locationChangeStart", function(event, next) { + if (self.originalPath === $location.path()) { + console.log("skipping"); + return; + } + if (self.has_unsaved_changes()) { event.preventDefault(); self.next = next;