diff options
Diffstat (limited to 'sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/app.js')
-rw-r--r-- | sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/app.js | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/app.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/app.js new file mode 100644 index 000000000..036e97f50 --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/app.js @@ -0,0 +1,132 @@ +(function( app, i18n ) { + + var ui = app.ns("ui"); + var services = app.ns("services"); + + app.App = ui.AbstractWidget.extend({ + defaults: { + base_uri: null + }, + init: function(parent) { + this._super(); + this.prefs = services.Preferences.instance(); + this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200"; + if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) { + // XHR request fails if the URL is not ending with a "/" + this.base_uri += "/"; + } + if( this.config.auth_user ) { + var credentials = window.btoa( this.config.auth_user + ":" + this.config.auth_password ); + $.ajaxSetup({ + headers: { + "Authorization": "Basic " + credentials + } + }); + } + this.cluster = new services.Cluster({ base_uri: this.base_uri }); + this._clusterState = new services.ClusterState({ + cluster: this.cluster + }); + + this._header = new ui.Header({ cluster: this.cluster, clusterState: this._clusterState }); + this.$body = $.joey( this._body_template() ); + this.el = $.joey(this._main_template()); + this.attach( parent ); + this.instances = {}; + this.el.find(".uiApp-headerMenuItem:first").click(); + if( this.config.dashboard ) { + if( this.config.dashboard === "cluster" ) { + var page = this.instances["ClusterOverview"]; + page._refreshButton.set( 5000 ); + } + } + }, + + navigateTo: function( type, config, ev ) { + if( ev.target.classList.contains( "uiApp-headerNewMenuItem" ) ) { + this.showNew( type, config, ev ); + } else { + var ref = type + "0"; + if(! this.instances[ ref ]) { + this.createPage( type, 0, config ); + } + this.show( ref, ev ); + } + }, + + createPage: function( type, id, config ) { + var page = this.instances[ type + id ] = new ui[ type ]( config ); + this.$body.append( page ); + return page; + }, + + show: function( ref, ev ) { + $( ev.target ).closest("DIV.uiApp-headerMenuItem").addClass("active").siblings().removeClass("active"); + for(var p in this.instances) { + this.instances[p][ p === ref ? "show" : "hide" ](); + } + }, + + showNew: function( type, config, jEv ) { + var ref, page, $tab, + type_index = 0; + + while ( ! page ) { + ref = type + ( ++type_index ); + if (! ( ref in this.instances ) ) { + page = this.createPage( type, type_index, config ); + } + } + + // Add the tab and its click handlers + $tab = $.joey({ + tag: "DIV", + cls: "uiApp-headerMenuItem pull-left", + text: i18n.text("Nav." + type ) + " " + type_index, + onclick: function( ev ) { this.show( ref, ev ); }.bind(this), + children: [ + { tag: "A", text: " [-]", onclick: function (ev) { + $tab.remove(); + page.remove(); + delete this.instances[ ref ]; + }.bind(this) } + ] + }); + + $('.uiApp-headerMenu').append( $tab ); + $tab.trigger("click"); + }, + + _openAnyRequest_handler: function(ev) { this.navigateTo("AnyRequest", { cluster: this.cluster }, ev ); }, + _openStructuredQuery_handler: function(ev) { this.navigateTo("StructuredQuery", { cluster: this.cluster }, ev ); }, + _openBrowser_handler: function(ev) { this.navigateTo("Browser", { cluster: this.cluster }, ev ); }, + _openClusterOverview_handler: function(ev) { this.navigateTo("ClusterOverview", { cluster: this.cluster, clusterState: this._clusterState }, ev ); }, + _openIndexOverview_handler: function(ev) { this.navigateTo("IndexOverview", { cluster: this.cluster, clusterState: this._clusterState }, ev ); }, + + _body_template: function() { return ( + { tag: "DIV", id: this.id("body"), cls: "uiApp-body" } + ); }, + + _main_template: function() { + return { tag: "DIV", cls: "uiApp", children: [ + { tag: "DIV", id: this.id("header"), cls: "uiApp-header", children: [ + this._header, + { tag: "DIV", cls: "uiApp-headerMenu", children: [ + { tag: "DIV", cls: "uiApp-headerMenuItem pull-left", text: i18n.text("Nav.Overview"), onclick: this._openClusterOverview_handler }, + { tag: "DIV", cls: "uiApp-headerMenuItem pull-left", text: i18n.text("Nav.Indices"), onclick: this._openIndexOverview_handler }, + { tag: "DIV", cls: "uiApp-headerMenuItem pull-left", text: i18n.text("Nav.Browser"), onclick: this._openBrowser_handler }, + { tag: "DIV", cls: "uiApp-headerMenuItem pull-left", text: i18n.text("Nav.StructuredQuery"), onclick: this._openStructuredQuery_handler, children: [ + { tag: "A", cls: "uiApp-headerNewMenuItem ", text: ' [+]' } + ] }, + { tag: "DIV", cls: "uiApp-headerMenuItem pull-left", text: i18n.text("Nav.AnyRequest"), onclick: this._openAnyRequest_handler, children: [ + { tag: "A", cls: "uiApp-headerNewMenuItem ", text: ' [+]' } + ] }, + ]} + ]}, + this.$body + ]}; + } + + }); + +})( this.app, this.i18n ); |