From 5d65be01f180cbe7ef9aa4b4953fc0e8dd73f1e5 Mon Sep 17 00:00:00 2001 From: PedroFerreiraRamos Date: Sun, 3 Jul 2016 14:16:12 -0300 Subject: [PATCH] Add 'Save' and 'New' button for Query Editor #1906 --- .../APP/frontend/js/templates/queryView.ejs | 6 +- .../APP/frontend/js/views/queryView.js | 74 ++++++++++++++++++- 2 files changed, 76 insertions(+), 4 deletions(-) diff --git a/js/apps/system/_admin/aardvark/APP/frontend/js/templates/queryView.ejs b/js/apps/system/_admin/aardvark/APP/frontend/js/templates/queryView.ejs index bf04fc64af..6f85207d91 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/js/templates/queryView.ejs +++ b/js/apps/system/_admin/aardvark/APP/frontend/js/templates/queryView.ejs @@ -6,7 +6,9 @@
- + + +
@@ -134,4 +136,4 @@
- + \ No newline at end of file diff --git a/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js b/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js index 5a56c0aeac..a991512df5 100644 --- a/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js +++ b/js/apps/system/_admin/aardvark/APP/frontend/js/views/queryView.js @@ -70,7 +70,9 @@ 'click .outputEditorWrapper .fa-close': 'closeResult', 'click #toggleQueries1': 'toggleQueries', 'click #toggleQueries2': 'toggleQueries', + 'click #createNewQuery': 'createAQL', 'click #saveCurrentQuery': 'addAQL', + 'click #updateCurrentQuery': 'updateAQL', 'click #exportQuery': 'exportCustomQueries', 'click #importQuery': 'openImportDialog', 'click #removeResults': 'removeResults', @@ -217,11 +219,17 @@ this.queryPreview.setValue('No query selected.', 1); this.deselect(this.queryPreview); } else { + $('#updateCurrentQuery').hide(); + if (this.settings.aqlWidth === undefined) { $('.aqlEditorWrapper').first().width($(window).width() * 0.33); } else { $('.aqlEditorWrapper').first().width(this.settings.aqlWidth); } + + if (localStorage.getItem('lastOpenQuery') !== 'undefined') { + $('#updateCurrentQuery').show(); + } } } else { if (this.settings.aqlWidth === undefined) { @@ -234,7 +242,7 @@ var divs = [ 'aqlEditor', 'queryTable', 'previewWrapper', 'querySpotlight', - 'bindParamEditor', 'toggleQueries1', 'toggleQueries2', + 'bindParamEditor', 'toggleQueries1', 'toggleQueries2', 'createNewQuery', 'saveCurrentQuery', 'querySize', 'executeQuery', 'switchTypes', 'explainQuery', 'importQuery', 'exportQuery' ]; @@ -316,11 +324,24 @@ this.fillBindParamTable(this.getCustomQueryParameterByName(name)); this.updateBindParams(); + this.currentQuery = this.collection.findWhere({name: name}); + + if (this.currentQuery) { + localStorage.setItem('lastOpenQuery', this.currentQuery.get('name')); + } + + $('#updateCurrentQuery').show(); + // render a button to revert back to last query $('#lastQuery').remove(); + $('#currentQueryName').remove(); + $('#queryContent .arangoToolbarTop .pull-left') .append('Previous Query'); + $('#queryContent .arangoToolbarTop .pull-left') + .append('' + name + ''); + $('#lastQuery').hide().fadeIn(500) .on('click', function () { self.aqlEditor.setValue(self.state.lastQuery.query, 1); @@ -524,6 +545,14 @@ if (queryObject !== null && queryObject !== undefined && queryObject !== '') { this.aqlEditor.setValue(queryObject.query, 1); + var queryName = localStorage.getItem('lastOpenQuery'); + + if (queryName) { + $('#queryContent .arangoToolbarTop .pull-left') + .append('' + queryName + ''); + $('#updateCurrentQuery').show(); + } + // reset undo history for initial text value this.aqlEditor.getSession().setUndoManager(new ace.UndoManager()); @@ -1113,6 +1142,42 @@ }, 500); }, + updateAQL: function() { + var content = this.aqlEditor.getValue(); + var queryName = localStorage.getItem('lastOpenQuery'); + var query = this.collection.findWhere({name: queryName}); + + if (query) { + query.set('value', content); + var callback = function(error) { + if (error) { + arangoHelper.arangoError('Query', 'Could not save query'); + } + else { + var self = this; + this.collection.fetch({ + success: function() { + self.updateLocalQueries(); + } + }); + } + }.bind(this); + this.collection.saveCollectionQueries(callback); + } + + this.refreshAQL(true); + }, + + createAQL: function() { + localStorage.setItem('lastOpenQuery', undefined); + this.aqlEditor.setValue(''); + + this.refreshAQL(true); + + $('#currentQueryName').remove(); + $('#updateCurrentQuery').hide(); + }, + createCustomQueryModal: function () { var buttons = []; var tableContent = []; @@ -1225,6 +1290,11 @@ this.collection.fetch({ success: function () { self.updateLocalQueries(); + $('#updateCurrentQuery').show(); + + $('#currentQueryName').remove(); + $('#queryContent .arangoToolbarTop .pull-left') + .append('' + saveName + ''); } }); } @@ -1822,4 +1892,4 @@ }); } }); -}()); +}()); \ No newline at end of file