6 prefix : "/controller/web",
13 one.main.menu.ajax(function(data) {
14 // reparse the ajax data
15 var result = one.main.menu.data.menu(data);
16 // transform into list to append to menu
17 var $div = one.main.menu.menu(result);
19 $("#menu .nav").append($div.children());
20 // binding all menu items
21 var $menu = $("#menu .nav a");
22 $menu.click(function() {
23 var href = $(this).attr('href').substring(1);
24 one.main.page.load(href);
25 var $li = $(this).parent();
26 // reset all other active
27 $menu.each(function(index, value) {
28 $(value).parent().removeClass('active');
30 $li.addClass('active');
32 // reset or go to first menu item by default
33 var currentLocation = location.hash;
34 if (data[currentLocation.substring(1)] == undefined) {
37 $menu.each(function(index, value) {
38 var menuLocation = $(value).attr('href');
39 if (currentLocation == menuLocation) {
40 $($menu[index]).click();
47 menu : function(result) {
48 var $div = $(document.createElement('div'));
49 $(result).each(function(index, value) {
50 if (value != undefined) {
51 var $li = $(document.createElement('li'));
52 var $a = $(document.createElement('a'));
53 $a.text(value['name']);
54 $a.attr('href', '#' + value['id']);
61 ajax : function(successCallback) {
62 $.getJSON(one.main.constants.address.menu, function(data) {
63 successCallback(data);
67 menu : function(data) {
69 $.each(data, function(key, value) {
70 var order = value['order'];
72 var name = value['name'];
77 result[order] = entry;
86 load : function(page) {
87 if (one.f !== undefined && one.f.cleanUp !== undefined) {
92 $('.dashlet', '#main').empty();
93 $('.nav', '#main').empty();
95 $.getScript(one.main.constants.address.prefix + "/" + page
104 dashlet : function($nav, dashlet) {
105 var $li = $(document.createElement('li'));
106 var $a = $(document.createElement('a'));
107 $a.text(dashlet.name);
108 $a.attr('id', dashlet.id);
109 $a.attr('href', '#');
118 main : "one_main_admin_id_modal_main",
119 close : "one_main_admin_id_modal_close",
120 user : "one_main_admin_id_modal_user",
122 user : "one_main_admin_id_modal_add_user",
123 close : "one_main_admin_id_modal_add_close",
125 name : "one_main_admin_id_modal_add_form_name",
126 role : "one_main_admin_id_modal_add_form_role",
127 password : "one_main_admin_id_modal_add_form_password",
128 verify : "one_main_admin_id_modal_add_form_verify"
132 user : "one_main_admin_id_modal_remove_user",
133 close : "one_main_admin_id_modal_remove_close",
134 password : 'one_main_admin_id_modal_remove_password'
137 modal : 'one_main_admin_id_modal_password_modal',
138 submit : 'one_main_admin_id_modal_password_submit',
139 cancel : 'one_main_admin_id_modal_password_cancel',
141 old : 'one_main_admin_id_modal_password_form_old',
142 set : 'one_main_admin_id_modal_password_form_new',
143 verify : 'one_main_admin_id_modal_password_form_verify'
148 user : "one_main_admin_id_add_user"
154 password : '/admin/users/password/'
157 initialize : function(callback) {
158 var h3 = "Welcome " + $('#admin').text();
159 var footer = one.main.admin.modal.footer();
160 var $modal = one.lib.modal.spawn(one.main.admin.id.modal.main, h3,
164 $('#' + one.main.admin.id.modal.close, $modal).click(function() {
165 $modal.modal('hide');
169 one.main.admin.ajax.users(function($body) {
170 one.lib.modal.inject.body($modal, $body);
173 // modal show callback
176 footer : function() {
178 var closeButton = one.lib.dashlet.button.single('Close', one.main.admin.id.modal.close, '', '');
179 var $closeButton = one.lib.dashlet.button.button(closeButton);
180 footer.push($closeButton);
185 users : function(callback) {
186 $.getJSON(one.main.admin.address.root
187 + one.main.admin.address.users, function(data) {
188 var body = one.main.admin.data.users(data);
189 var $body = one.main.admin.body.users(body);
195 users : function(data) {
197 $(data).each(function(index, value) {
200 entry.push(value['user']);
201 entry.push(value['roles']);
203 tr['id'] = value['user'];
210 users : function(body) {
211 var $div = $(document.createElement('div'));
212 var $h5 = $(document.createElement('h5'));
213 $h5.append("Manage Users");
214 var attributes = [ "table-striped", "table-bordered",
215 "table-hover", "table-cursor" ];
216 var $table = one.lib.dashlet.table.table(attributes);
217 var headers = [ "User", "Role" ];
218 var $thead = one.lib.dashlet.table.header(headers);
219 var $tbody = one.lib.dashlet.table.body(body);
220 $table.append($thead).append($tbody);
224 $table.find('tr').click(function() {
225 var id = $(this).data('id');
226 one.main.admin.remove.modal.initialize(id);
231 $div.append($h5).append($table);
234 var addUserButton = one.lib.dashlet.button.single("Add User",
235 one.main.admin.id.add.user, "btn-primary", "btn-mini");
236 var $addUserButton = one.lib.dashlet.button
237 .button(addUserButton);
238 $div.append($addUserButton);
241 $addUserButton.click(function() {
242 one.main.admin.add.modal.initialize();
251 initialize : function(id) {
252 var h3 = "Edit User";
253 var footer = one.main.admin.remove.footer();
254 var $body = one.main.admin.remove.body();
255 var $modal = one.lib.modal.spawn(one.main.admin.id.modal.user,
258 $('#'+one.main.admin.id.modal.remove.close, $modal).click(function() {
259 $modal.modal('hide');
262 $('#' + one.main.admin.id.modal.remove.user, $modal).click(function() {
263 one.main.admin.remove.modal.ajax(id, function(result) {
264 if (result == 'Success') {
265 $modal.modal('hide');
267 var $admin = $('#'+one.main.admin.id.modal.main);
268 one.main.admin.ajax.users(function($body) {
269 one.lib.modal.inject.body($admin, $body);
272 alert("Failed to remove user: " + result);
276 // change password binding
277 $('#' + one.main.admin.id.modal.remove.password, $modal).click(function() {
278 one.main.admin.password.initialize(id, function() {
279 $modal.modal('hide');
284 ajax : function(id, callback) {
285 $.post(one.main.admin.address.root + one.main.admin.address.users + '/' + id, function(data) {
290 footer : function() {
292 var removeButton = one.lib.dashlet.button.single("Remove User",
293 one.main.admin.id.modal.remove.user, "btn-danger", "");
294 var $removeButton = one.lib.dashlet.button.button(removeButton);
295 footer.push($removeButton);
296 var change = one.lib.dashlet.button.single('Change Password',
297 one.main.admin.id.modal.remove.password, 'btn-success', '');
298 var $change = one.lib.dashlet.button.button(change);
299 footer.push($change);
300 var closeButton = one.lib.dashlet.button.single("Close",
301 one.main.admin.id.modal.remove.close, "", "");
302 var $closeButton = one.lib.dashlet.button.button(closeButton);
303 footer.push($closeButton);
307 var $p = $(document.createElement('p'));
308 $p.append('Select an action');
314 initialize : function() {
316 var footer = one.main.admin.add.footer();
317 var $body = one.main.admin.add.body();
318 var $modal = one.lib.modal.spawn(one.main.admin.id.modal.user,
321 $('#' + one.main.admin.id.modal.add.close, $modal).click(function() {
322 $modal.modal('hide');
325 $('#' + one.main.admin.id.modal.add.user, $modal).click(function() {
326 one.main.admin.add.modal.add($modal, function(result) {
327 if (result == 'Success') {
328 $modal.modal('hide');
330 var $admin = $('#'+one.main.admin.id.modal.main);
331 one.main.admin.ajax.users(function($body) {
332 one.lib.modal.inject.body($admin, $body);
335 alert("Failed to add user: "+result);
341 add : function($modal, callback) {
343 user['user'] = $modal.find(
344 '#' + one.main.admin.id.modal.add.form.name).val();
345 user['password'] = $modal.find(
346 '#' + one.main.admin.id.modal.add.form.password).val();
348 roles[0] = $modal.find(
349 '#' + one.main.admin.id.modal.add.form.role).find(
350 'option:selected').attr('value');
351 user['roles'] = roles;
354 var verify = $('#'+one.main.admin.id.modal.add.form.verify).val();
355 if (user.password != verify) {
356 alert('Passwords do not match');
361 resource['json'] = JSON.stringify(user);
362 resource['action'] = 'add'
364 one.main.admin.add.modal.ajax(resource, callback);
366 ajax : function(data, callback) {
367 $.post(one.main.admin.address.root
368 + one.main.admin.address.users, data, function(data) {
374 var $form = $(document.createElement('form'));
375 var $fieldset = $(document.createElement('fieldset'));
377 var $label = one.lib.form.label('Username');
378 var $input = one.lib.form.input('Username');
379 $input.attr('id', one.main.admin.id.modal.add.form.name);
380 $fieldset.append($label).append($input);
382 var $label = one.lib.form.label('Password');
383 var $input = one.lib.form.input('Password');
384 $input.attr('id', one.main.admin.id.modal.add.form.password);
385 $input.attr('type', 'password');
386 $fieldset.append($label).append($input);
388 var $label = one.lib.form.label('Verify Password');
389 var $input = one.lib.form.input('Verify Password');
390 $input.attr('id', one.main.admin.id.modal.add.form.verify);
391 $input.attr('type', 'password');
392 $fieldset.append($label).append($input);
394 var $label = one.lib.form.label('Roles');
396 "Network-Admin" : "Network Administrator",
397 "Network-Operator" : "Network Operator"
399 var $select = one.lib.form.select.create(options);
400 $select.attr('id', one.main.admin.id.modal.add.form.role);
401 $fieldset.append($label).append($select);
402 $form.append($fieldset);
405 footer : function() {
408 var addButton = one.lib.dashlet.button.single("Add User",
409 one.main.admin.id.modal.add.user, "btn-primary", "");
410 var $addButton = one.lib.dashlet.button.button(addButton);
411 footer.push($addButton);
413 var closeButton = one.lib.dashlet.button.single("Close",
414 one.main.admin.id.modal.add.close, "", "");
415 var $closeButton = one.lib.dashlet.button.button(closeButton);
416 footer.push($closeButton);
422 initialize : function(id, successCallback) {
423 var h3 = 'Change Password';
424 var footer = one.main.admin.password.footer();
425 var $body = one.main.admin.password.body(id);;
426 var $modal = one.lib.modal.spawn(one.main.admin.id.modal.password.modal,
430 $('#'+one.main.admin.id.modal.password.cancel, $modal).click(function() {
431 $modal.modal('hide');
434 // change password binding
435 $('#'+one.main.admin.id.modal.password.submit, $modal).click(function() {
436 one.main.admin.password.submit(id, $modal, function(result) {
437 if (result.code == 'SUCCESS') {
438 $modal.modal('hide');
441 alert(result.code+': '+result.description);
448 submit : function(id, $modal, callback) {
450 resource.newPassword = $('#'+one.main.admin.id.modal.password.form.set, $modal).val();
453 var verify = $('#'+one.main.admin.id.modal.password.form.verify, $modal).val();
454 if (verify != resource.newPassword) {
455 alert('Passwords do not match');
459 resource.currentPassword = $('#'+one.main.admin.id.modal.password.form.old, $modal).val();
461 $.post(one.main.admin.address.password+id, resource, function(data) {
465 body : function(id) {
466 var $form = $(document.createElement('form'));
467 var $fieldset = $(document.createElement('fieldset'));
469 var $label = one.lib.form.label('Username');
470 var $input = one.lib.form.input('');
471 $input.attr('disabled', 'disabled');
473 $fieldset.append($label)
476 var $label = one.lib.form.label('Old Password');
477 var $input = one.lib.form.input('Old Password');
478 $input.attr('id', one.main.admin.id.modal.password.form.old);
479 $input.attr('type', 'password');
480 $fieldset.append($label).append($input);
482 var $label = one.lib.form.label('New Password');
483 var $input = one.lib.form.input('New Password');
484 $input.attr('id', one.main.admin.id.modal.password.form.set);
485 $input.attr('type', 'password');
486 $fieldset.append($label).append($input);
487 // verify new password
488 var $label = one.lib.form.label('Verify Password');
489 var $input = one.lib.form.input('Verify Password');
490 $input.attr('id', one.main.admin.id.modal.password.form.verify);
491 $input.attr('type', 'password');
492 $fieldset.append($label).append($input);
494 $form.append($fieldset);
497 footer : function() {
499 var submit = one.lib.dashlet.button.single('Submit',
500 one.main.admin.id.modal.password.submit, 'btn-primary', '');
501 var $submit = one.lib.dashlet.button.button(submit);
502 footer.push($submit);
503 var cancel = one.lib.dashlet.button.single('Cancel',
504 one.main.admin.id.modal.password.cancel, '', '');
505 var $cancel = one.lib.dashlet.button.button(cancel);
506 footer.push($cancel);
513 id : { // one.main.cluster.id
514 modal : 'one-main-cluster-id-modal',
515 close : 'one-main-cluster-id-close',
516 datagrid : 'one-main-cluster-id-datagrid'
518 registry : { // one.main.cluster.registry
521 initialize : function() {
522 var h3 = 'Cluster Management';
523 var footer = one.main.cluster.footer();
525 var $modal = one.lib.modal.spawn(one.main.cluster.id.modal, h3, $body, footer);
528 $('#'+one.main.cluster.id.close, $modal).click(function() {
529 $modal.modal('hide');
533 $.getJSON('/admin/cluster', function(data) {
534 var $gridHTML = one.lib.dashlet.datagrid.init(one.main.cluster.id.datagrid, {
538 flexibleRowsPerPage: true
539 }, 'table-striped table-condensed table-cursor');
540 var source = one.main.cluster.data(data);
541 $gridHTML.datagrid({dataSource : source}).on('loaded', function() {
542 $(this).find('tbody tr').click(function() {
544 if ($tr.find('td:nth-child(1)').attr('colspan') === '1') {
547 var address = one.main.cluster.registry.cluster[$tr.index()];
548 one.main.cluster.nodes.initialize(address);
551 one.lib.modal.inject.body($modal, $gridHTML);
556 data : function(data) {
559 $(data).each(function(idx, val) {
561 name = one.lib.dashlet.label(name, null)[0].outerHTML;
562 if (val.me === true) {
563 var me = one.lib.dashlet.label('*', 'label-inverse')[0].outerHTML;
566 if (val.coordinator === true) {
567 var coord = one.lib.dashlet.label('C')[0].outerHTML;
568 name += ' '+coord;
573 registry.push(val.address);
575 one.main.cluster.registry.cluster = registry;
576 var source = new StaticDataSource({
579 property : 'controller',
580 label : 'Controller',
589 footer : function() {
591 var close = one.lib.dashlet.button.single('Close', one.main.cluster.id.close, '', '');
592 var $close = one.lib.dashlet.button.button(close);
598 one.main.cluster.nodes = {
599 id : { // one.main.cluster.nodes.id
600 modal : 'one-main-cluster-nodes-id-modal',
601 close : 'one-main-cluster-nodes-id-close',
602 datagrid : 'one-main-cluser-nodes-id-datagrid'
604 initialize : function(address) { // one.main.cluster.nodes.initialize
605 var h3 = 'Connected Nodes';
606 var footer = one.main.cluster.nodes.footer();
608 var $modal = one.lib.modal.spawn(one.main.cluster.nodes.id.modal, h3, $body, footer);
611 $('#'+one.main.cluster.nodes.id.close, $modal).click(function() {
612 $modal.modal('hide');
616 $.getJSON('/admin/cluster/controller/'+JSON.stringify(address), function(data) {
617 var $gridHTML = one.lib.dashlet.datagrid.init(one.main.cluster.nodes.id.datagrid, {
621 flexibleRowsPerPage: true
622 }, 'table-striped table-condensed');
623 var source = one.main.cluster.nodes.data(data);
624 $gridHTML.datagrid({dataSource : source});
625 one.lib.modal.inject.body($modal, $gridHTML);
630 data : function(data) {
632 $(data).each(function(idx, val) {
634 'node' : val.description
637 var source = new StaticDataSource({
650 footer : function() { // one.main.cluster.nodes.footer
652 var close = one.lib.dashlet.button.single('Close', one.main.cluster.nodes.id.close, '', '');
653 var $close = one.lib.dashlet.button.button(close);
661 top : $("#left-top .dashlet"),
662 bottom : $("#left-bottom .dashlet")
665 bottom : $("#right-bottom .dashlet")
670 $(".modal").on('hidden', function() {
674 $("#alert .close").click(function() {
681 one.role = $('#admin').data('role');
684 $("#admin").click(function() {
685 one.main.admin.modal.initialize(function($modal) {
691 $('#cluster').click(function() {
692 one.main.cluster.initialize();
696 $("#save").click(function() {
697 $.post(one.main.constants.address.save, function(data) {
698 if (data == "Success") {
699 one.lib.alert("Configuration Saved");
701 one.lib.alert("Unable to save configuration: " + data);
707 $("#logout").click(function() {
708 location.href = "/logout";
712 complete : function(xhr, textStatus) {
713 var mime = xhr.getResponseHeader('Content-Type');
714 if (mime.substring(0, 9) == 'text/html') {
720 /** MAIN PAGE LOAD */
721 one.main.menu.load();