205 lines
6.4 KiB
JavaScript
205 lines
6.4 KiB
JavaScript
// used by the tabbing interface to make sure the correct
|
|
// ajax content is loaded
|
|
var path = 'admin';
|
|
|
|
// keep track of timers so we can kill them
|
|
var nd_timers = new Array();
|
|
var timermax = [% settings.jobqueue_refresh || 5 | html_entity %];
|
|
var timercache = timermax - 1;
|
|
|
|
// this is called by do_search to support local code
|
|
// which might need to act on the newly inserted content
|
|
// but which cannot use jQuery delegation via .on()
|
|
function inner_view_processing(tab) {
|
|
|
|
// reload this table every 5 seconds
|
|
if (tab == 'jobqueue'
|
|
&& $('#nd_countdown-control-icon').hasClass('icon-play')) {
|
|
|
|
$('#nd_countdown').text(timermax);
|
|
|
|
// add new timers
|
|
for (var i = timercache; i > 0; i--) {
|
|
nd_timers.push(setTimeout(function() {
|
|
$('#nd_countdown').text(timercache);
|
|
timercache = timercache - 1;
|
|
}, ((timermax * 1000) - (i * 1000)) ));
|
|
}
|
|
|
|
nd_timers.push(setTimeout(function() {
|
|
// clear any running timers
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
|
|
// reset the timer cache
|
|
timercache = timermax - 1;
|
|
|
|
// reload the tab content in...
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}, (timermax * 1000)));
|
|
}
|
|
|
|
// activate typeahead on the topo boxes
|
|
$('.nd_topo_dev').autocomplete({
|
|
source: uri_base + '/ajax/data/deviceip/typeahead'
|
|
,delay: 150
|
|
,minLength: 0
|
|
});
|
|
|
|
// activate typeahead on the topo boxes
|
|
$('.nd_topo_port.nd_topo_dev1').autocomplete({
|
|
source: function (request, response) {
|
|
var query = $('.nd_topo_dev1').serialize();
|
|
return $.get( uri_base + '/ajax/data/port/typeahead', query, function (data) {
|
|
return response(data);
|
|
});
|
|
}
|
|
,delay: 150
|
|
,minLength: 0
|
|
});
|
|
|
|
// activate typeahead on the topo boxes
|
|
$('.nd_topo_port.nd_topo_dev2').autocomplete({
|
|
source: function (request, response) {
|
|
var query = $('.nd_topo_dev2').serialize();
|
|
return $.get( uri_base + '/ajax/data/port/typeahead', query, function (data) {
|
|
return response(data);
|
|
});
|
|
}
|
|
,delay: 150
|
|
,minLength: 0
|
|
});
|
|
|
|
// activate modals and tooltips
|
|
$('.nd_modal').modal({show: false});
|
|
$("[rel=tooltip]").tooltip({live: true});
|
|
}
|
|
|
|
// on load, establish global delegations for now and future
|
|
$(document).ready(function() {
|
|
var tab = '[% task.tag | html_entity %]'
|
|
var target = '#' + tab + '_pane';
|
|
|
|
// get all devices on device input focus
|
|
$(target).on('focus', '.nd_topo_dev', function(e) {
|
|
$(this).autocomplete('search', '%') });
|
|
$(target).on('click', '.nd_topo_dev_caret', function(e) {
|
|
$(this).siblings('.nd_topo_dev').autocomplete('search', '%') });
|
|
|
|
// get all ports on port input focus
|
|
$(target).on('focus', '.nd_topo_port', function(e) {
|
|
$(this).autocomplete('search') });
|
|
$(target).on('click', '.nd_topo_port_caret', function(e) {
|
|
$(this).siblings('.nd_topo_port').val('');
|
|
$(this).siblings('.nd_topo_port').autocomplete('search');
|
|
});
|
|
|
|
// job control refresh icon should reload the page
|
|
$('#nd_countdown-refresh').click(function(event) {
|
|
event.preventDefault();
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
$('#' + tab + '_form').trigger('submit');
|
|
});
|
|
|
|
// job control pause/play icon switcheroo
|
|
$('#nd_countdown-control').click(function(event) {
|
|
event.preventDefault();
|
|
var icon = $('#nd_countdown-control-icon');
|
|
icon.toggleClass('icon-pause icon-play text-error text-success');
|
|
|
|
if (icon.hasClass('icon-pause')) {
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
$('#nd_countdown').text('0');
|
|
}
|
|
else {
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
});
|
|
|
|
// activity for admin task tables
|
|
// dynamically bind to all forms in the table
|
|
$('.content').on('click', '.nd_adminbutton', function(event) {
|
|
// stop form from submitting normally
|
|
event.preventDefault();
|
|
|
|
// clear any running timers
|
|
for (var i = 0; i < nd_timers.length; i++) {
|
|
clearTimeout(nd_timers[i]);
|
|
}
|
|
|
|
// what purpose - add/update/del
|
|
var mode = $(this).attr('name');
|
|
|
|
// submit the query and put results into the tab pane
|
|
$.ajax({
|
|
type: 'POST'
|
|
,async: true
|
|
,dataType: 'html'
|
|
,url: uri_base + '/ajax/control/admin/' + tab + '/' + mode
|
|
,data: $(this).closest('tr').find('input[data-form="' + mode + '"],select[data-form="' + mode + '"]').serializeArray()
|
|
,beforeSend: function() {
|
|
if (mode == 'add' || mode == 'delete') {
|
|
$(target).html(
|
|
'<div class="span2 alert">Request submitted...</div>'
|
|
);
|
|
}
|
|
}
|
|
,success: function() {
|
|
if (mode == 'add') {
|
|
toastr.success('Added record');
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
else if (mode == 'delete') {
|
|
toastr.success('Deleted record');
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
else {
|
|
toastr.success('Updated record');
|
|
}
|
|
}
|
|
// TODO: fix sanity_ok in Netdisco Web
|
|
,error: function() {
|
|
if (mode == 'add') {
|
|
toastr.error('Failed to add record');
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
else if (mode == 'delete') {
|
|
toastr.error('Failed to delete record');
|
|
$('#' + tab + '_form').trigger('submit');
|
|
}
|
|
else {
|
|
toastr.error('Failed to update record');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
// bind qtip2 to show the event log output
|
|
$(target).on('mouseover', '.nd_jobqueueitem', function(event) {
|
|
$(this).qtip({
|
|
overwrite: false,
|
|
content: {
|
|
text: $('<span/>').text( $(this).attr("data-content") ).html()
|
|
},
|
|
show: {
|
|
event: event.type,
|
|
ready: true,
|
|
delay: 100
|
|
},
|
|
position: {
|
|
my: 'top center',
|
|
at: 'bottom center',
|
|
target: false
|
|
},
|
|
style: {
|
|
classes: 'qtip-cluetip qtip-rounded nd_qtip-unconstrained'
|
|
}
|
|
});
|
|
});
|
|
});
|