diff --git a/rd_ui/app/scripts/controllers/query_edit.js b/rd_ui/app/scripts/controllers/query_edit.js index a904e6e38..eb6c31f0a 100644 --- a/rd_ui/app/scripts/controllers/query_edit.js +++ b/rd_ui/app/scripts/controllers/query_edit.js @@ -1,13 +1,13 @@ (function() { 'use strict'; - function QueryEditCtrl($controller, $scope, $route, $location, growl, Query, Visualization) { + function QueryEditCtrl($controller, $scope, $location, growl, Query, Visualization) { // extends QueryViewCtrl $controller('QueryViewCtrl', {$scope: $scope}); var _queryText = $scope.query.query, - isNewQuery = !$route.current.locals.query.id; + isNewQuery = !$scope.query.id; $scope.sourceMode = true; $scope.isDirty = false; @@ -36,8 +36,8 @@ if (isNewQuery) { // save new query when creating a visualization - var unbind = $scope.$watch('selectedTab == "add"', function(newPanel) { - if (newPanel && $route.current.params.queryId == undefined) { + var unbind = $scope.$watch('selectedTab == "add"', function(triggerSave) { + if (triggerSave) { unbind(); $scope.saveQuery(); } @@ -47,7 +47,7 @@ }; angular.module('redash.controllers').controller('QueryEditCtrl', [ - '$controller', '$scope', '$route', '$location', 'growl', 'Query', + '$controller', '$scope', '$location', 'growl', 'Query', 'Visualization', QueryEditCtrl ]); })(); \ No newline at end of file diff --git a/rd_ui/app/scripts/controllers/query_view.js b/rd_ui/app/scripts/controllers/query_view.js index 3ac3b4fa3..42ab58b3b 100644 --- a/rd_ui/app/scripts/controllers/query_view.js +++ b/rd_ui/app/scripts/controllers/query_view.js @@ -19,35 +19,35 @@ $scope.queryExecuting = lock; }; - $scope.saveQuery = function(duplicate, oldId) { - if (!oldId) { - oldId = $scope.query.id; + $scope.saveQuery = function(duplicate) { + var + successMessage = "Query saved", + oldId = $scope.query.id; + + if (duplicate) { + successMessage = "Query forked"; + $scope.query.id = null; + $scope.query.ttl = -1; } delete $scope.query.latest_query_data; + $scope.query.$save(function(savedQuery) { $scope.isDirty = false; - if (duplicate) { - growl.addSuccessMessage("Query forked"); - } else { - growl.addSuccessMessage("Query saved"); + if (oldId != savedQuery.id) { + // redirect to new/duplicated query page + $location.url('/queries/' + savedQuery.id + '/source#' + $location.hash()).replace(); } - if (oldId != savedQuery.id) { - $location.url($location.url().replace(oldId, savedQuery.id)).replace(); - } + growl.addSuccessMessage(successMessage); }, function(httpResponse) { growl.addErrorMessage("Query could not be saved"); }); }; $scope.duplicateQuery = function() { - var oldId = $scope.query.id; - $scope.query.id = null; - $scope.query.ttl = -1; - - $scope.saveQuery(true, oldId); + $scope.saveQuery(true); }; $scope.executeQuery = function() {