1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
(function( $, app, i18n ) {
var ui = app.ns("ui");
ui.Header = ui.AbstractWidget.extend({
defaults: {
cluster: null,
clusterState: null
},
_baseCls: "uiHeader",
init: function() {
this._clusterConnect = new ui.ClusterConnect({
cluster: this.config.cluster
});
var quicks = [
{ text: i18n.text("Nav.Info"), path: "" },
{ text: i18n.text("Nav.Status"), path: "_stats" },
{ text: i18n.text("Nav.NodeStats"), path: "_nodes/stats" },
{ text: i18n.text("Nav.ClusterNodes"), path: "_nodes" },
{ text: i18n.text("Nav.Plugins"), path: "_nodes/plugins" },
{ text: i18n.text("Nav.ClusterState"), path: "_cluster/state" },
{ text: i18n.text("Nav.ClusterHealth"), path: "_cluster/health" },
{ text: i18n.text("Nav.Templates"), path: "_template" }
];
var cluster = this.config.cluster;
var quickPanels = {};
var menuItems = quicks.map( function( item ) {
return { text: item.text, onclick: function() {
cluster.get( item.path, function( data ) {
quickPanels[ item.path ] && quickPanels[ item.path ].el && quickPanels[ item.path ].remove();
quickPanels[ item.path ] = new ui.JsonPanel({
title: item.text,
json: data
});
} );
} };
}, this );
this._quickMenu = new ui.MenuButton({
label: i18n.text("NodeInfoMenu.Title"),
menu: new ui.MenuPanel({
items: menuItems
})
});
this.el = $.joey( this._main_template() );
this.nameEl = this.el.find(".uiHeader-name");
this.statEl = this.el.find(".uiHeader-status");
this._clusterState = this.config.clusterState;
this._clusterState.on("data", function( state ) {
var shards = state.status._shards;
var colour = state.clusterHealth.status;
var name = state.clusterState.cluster_name;
this.nameEl.text( name );
this.statEl
.text( i18n.text("Header.ClusterHealth", colour, shards.successful, shards.total ) )
.css( "background", colour );
}.bind(this));
this.statEl.text( i18n.text("Header.ClusterNotConnected") ).css("background", "grey");
this._clusterState.refresh();
},
_main_template: function() { return (
{ tag: "DIV", cls: this._baseCls, children: [
this._clusterConnect,
{ tag: "SPAN", cls: "uiHeader-name" },
{ tag: "SPAN", cls: "uiHeader-status" },
{ tag: "H1", text: i18n.text("General.Elasticsearch") },
{ tag: "SPAN", cls: "pull-right", children: [
this._quickMenu
] }
] }
); }
} );
})( this.jQuery, this.app, this.i18n );
|