Skip to content

Commit 66d9507

Browse files
committed
adding admin commands to the settings page
1 parent 9a7dd17 commit 66d9507

File tree

3 files changed

+103
-13
lines changed

3 files changed

+103
-13
lines changed

assets/css/main.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,9 @@ body {
135135
.setting-block table th {
136136
background: #eee;
137137
}
138+
.setting-block ul { display: none }
138139

139140
.setting-block td span { display:block; }
140141
.setting-block td input { display:none; }
141142
.setting-block td.editing span { display:none; }
142143
.setting-block td.editing input { display:block; }
143-

assets/js/speleo.settings.js

Lines changed: 70 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,18 @@ var SettingsView = Backbone.View.extend({
133133
var SettingsAppView = Backbone.View.extend({
134134

135135
el: $('#settings-app'),
136-
indexEl: $('#setting-name'),
137136
settingsEl: $('#setting-index'),
138137
clusterEl: $('#setting-cluster'),
138+
settingIdxEl: $('#setting-name'),
139+
clusterIdxEl: $('#cluster-name'),
140+
operationIdxEl: $('#operation-name'),
139141

140142
events: {
141143
'change #setting-name': 'changeSettings',
144+
'change #operation-name': 'changeOperation',
145+
'change #cluster-name': 'changeOperation',
146+
'click #operation-index a': 'indexOperation',
147+
'click #operation-cluster a': 'clusterOperation',
142148
},
143149

144150
initialize:function() {
@@ -153,8 +159,8 @@ var SettingsAppView = Backbone.View.extend({
153159
this.elastic.request("GET", "_settings", "", function(d,x) {
154160
_.each(_.keys(d), function(key) {
155161
Settings.create(_.extend({ name : key }, d[key]), { silent: true });
156-
$('<option></option>').attr("value", key).text(key)
157-
.appendTo(self.indexEl);
162+
$('<option/>').attr("value", key).text(key).appendTo(self.settingIdxEl);
163+
$('<option/>').attr("value", key).text(key).appendTo(self.operationIdxEl);
158164
});
159165
});
160166

@@ -163,29 +169,81 @@ var SettingsAppView = Backbone.View.extend({
163169
var view = new SettingsView({ model: setting });
164170
self.clusterEl.append(view.render().el);
165171
});
172+
173+
this.elastic.request("GET", "_cluster/nodes", "", function(d,x) {
174+
_.each(_.keys(d.nodes), function(node) {
175+
$('<option/>').attr("value", node).text(d.nodes[node].name).appendTo(self.clusterIdxEl);
176+
});
177+
})
166178
},
167179

168180
render: function(setting) {
169-
if (this.view) this.view.remove();
170181
this.view = new SettingsView({ model: setting });
171-
this.settingsEl.append(this.view.render().el);
182+
var elem = this.view.render().$el.hide();
183+
this.settingsEl.append(elem);
184+
elem.slideDown();
172185
},
173186

174-
changeSettings: function(e) {
175-
e.preventDefault();
176-
var name = $(e.target).val();
177-
if (!name || name === "null") {
178-
if (this.view) this.view.remove();
179-
return;
187+
changeOperation: function(e) {
188+
var elem = $(e.target),
189+
text = elem.val();
190+
if (text === "null") {
191+
elem.next().slideUp()
192+
} else {
193+
elem.next().slideDown()
180194
}
195+
},
196+
197+
clusterOperation: function(e) {
198+
var elem = $(e.target),
199+
indx = '_cluster/nodes/' + this.clusterIdxEl.val(),
200+
meth = elem.data('method') || 'POST',
201+
quer = indx + '/' + elem.data('action') || '';
202+
203+
this.elastic.request(meth, quer, '', function(d,x) {
204+
console.log(d);
205+
});
206+
},
207+
208+
indexOperation: function(e) {
209+
var elem = $(e.target),
210+
indx = this.operationIdxEl.val(),
211+
meth = elem.data('method') || 'GET',
212+
quer = indx + '/' + elem.data('action') || '';
213+
214+
this.elastic.request(meth, quer, '', function(d,x) {
215+
console.log(d);
216+
});
217+
},
218+
219+
removeSetting: function() {
220+
var self = this;
221+
defer = $.Deferred();
222+
223+
if (this.view) {
224+
this.view.$el.slideUp(function(){
225+
self.view.remove();
226+
defer.resolve();
227+
});
228+
} else { defer.resolve(); }
229+
return defer;
230+
},
231+
232+
changeSettings: function(e) {
233+
var name = $(e.target).val(),
234+
defer = this.removeSetting();
235+
if (!name || name === "null") return;
181236

182237
Settings.each(function(setting) {
183238
setting.set('_active', false, { silent: true });
184239
});
185240
var setting = Settings.find(function(setting) {
186241
return setting.get('name') === name;
187242
});
188-
if (setting) { setting.set('_active', true); }
243+
244+
if (setting) {
245+
defer.always(function() { setting.set('_active', true); });
246+
}
189247
}
190248

191249
});

settings.html

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,38 @@ <h3>Cluster Settings</h3>
7777
</div>
7878
</div>
7979

80+
<div class='row'>
81+
<div class="span6">
82+
<div class='setting-block well' id='operation-index'>
83+
<h3>Index Operations</h3>
84+
<select id='operation-name' class='input-xlarge'>
85+
<option value='null'>Select An Index</option>
86+
</select>
87+
<ul class='nav nav-list'>
88+
<li><a href='#' data-action='_refresh'><i class='icon-refresh'></i> Refresh</a></li>
89+
<li><a href='#' data-action='_flush'><i class='icon-download-alt'></i> Flush</a></li>
90+
<li><a href='#' data-action='_optimize'><i class='icon-cog'></i> Optimize</a></li>
91+
<li><a href='#' data-action='_cache/clear'><i class='icon-fire'></i> Clear Cache</a></li>
92+
<li><a href='#' data-method='DELETE'><i class='icon-trash'></i> Delete</a></li>
93+
</ul>
94+
</div>
95+
</div>
96+
97+
<div class="span6">
98+
<div class='setting-block well' id='operation-cluster'>
99+
<h3>Cluster Operations</h3>
100+
<select id='cluster-name' class='input-xlarge'>
101+
<option value='null'>Select A Node</option>
102+
<option value='_master'>Current Master</option>
103+
<option value='_all'>Entire Cluster</option>
104+
</select>
105+
<ul class='nav nav-list'>
106+
<li><a href='#' data-action='_shutdown'><i class='icon-eye-close'></i> Shutdown</a></li>
107+
</ul>
108+
</div>
109+
</div>
110+
</div>
111+
80112
</div>
81113
</div>
82114

0 commit comments

Comments
 (0)