@@ -133,12 +133,18 @@ var SettingsView = Backbone.View.extend({
133
133
var SettingsAppView = Backbone . View . extend ( {
134
134
135
135
el : $ ( '#settings-app' ) ,
136
- indexEl : $ ( '#setting-name' ) ,
137
136
settingsEl : $ ( '#setting-index' ) ,
138
137
clusterEl : $ ( '#setting-cluster' ) ,
138
+ settingIdxEl : $ ( '#setting-name' ) ,
139
+ clusterIdxEl : $ ( '#cluster-name' ) ,
140
+ operationIdxEl : $ ( '#operation-name' ) ,
139
141
140
142
events : {
141
143
'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' ,
142
148
} ,
143
149
144
150
initialize :function ( ) {
@@ -153,8 +159,8 @@ var SettingsAppView = Backbone.View.extend({
153
159
this . elastic . request ( "GET" , "_settings" , "" , function ( d , x ) {
154
160
_ . each ( _ . keys ( d ) , function ( key ) {
155
161
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 ) ;
158
164
} ) ;
159
165
} ) ;
160
166
@@ -163,29 +169,81 @@ var SettingsAppView = Backbone.View.extend({
163
169
var view = new SettingsView ( { model : setting } ) ;
164
170
self . clusterEl . append ( view . render ( ) . el ) ;
165
171
} ) ;
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
+ } )
166
178
} ,
167
179
168
180
render : function ( setting ) {
169
- if ( this . view ) this . view . remove ( ) ;
170
181
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 ( ) ;
172
185
} ,
173
186
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 ( )
180
194
}
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 ;
181
236
182
237
Settings . each ( function ( setting ) {
183
238
setting . set ( '_active' , false , { silent : true } ) ;
184
239
} ) ;
185
240
var setting = Settings . find ( function ( setting ) {
186
241
return setting . get ( 'name' ) === name ;
187
242
} ) ;
188
- if ( setting ) { setting . set ( '_active' , true ) ; }
243
+
244
+ if ( setting ) {
245
+ defer . always ( function ( ) { setting . set ( '_active' , true ) ; } ) ;
246
+ }
189
247
}
190
248
191
249
} ) ;
0 commit comments