1
0
Fork 0
mirror of https://gitlab.com/Shinobi-Systems/ShinobiCE.git synced 2025-03-09 15:40:15 +00:00
ShinobiCE/web/libs/js/dash2.schedules.js

128 lines
5.1 KiB
JavaScript

$(document).ready(function(){
$.schedules = {
e: $('#schedules'),
selector: $('#schedulesSelector'),
loadedMonitorStates: {},
loadedSchedules: {}
}
$.schedules.f = $.schedules.e.find('form')
$.schedules.selectedStates = $.schedules.e.find('[name="monitorStates"]')
$.schedules.selectedDays = $.schedules.e.find('[name="days"]')
$.schedules.loadSchedules = function(callback){
$.get($.ccio.init('location',$user) + $user.auth_token + '/schedule/' + $user.ke,function(d){
console.log(d)
var html = ''
$.each(d.schedules,function(n,v){
$.schedules.loadedSchedules[v.name] = v
html += $.ccio.tm('option',{
id: v.name,
name: v.name
})
})
$.schedules.selector.find('optgroup').html(html)
if(callback)callback()
})
}
$.schedules.loadMonitorStates = function(){
$.get($.ccio.init('location',$user) + $user.auth_token + '/monitorStates/' + $user.ke,function(d){
var html = ''
$.each(d.presets,function(n,v){
$.schedules.loadedMonitorStates[v.name] = v
html += $.ccio.tm('option',{
id: v.name,
name: v.name
})
})
$.schedules.selectedStates.html(html)
})
}
$.schedules.e.on('shown.bs.modal', function (e) {
$.schedules.loadMonitorStates()
$.schedules.loadSchedules()
})
$.schedules.e.on('click','.delete',function(e){
$.confirm.e.modal('show');
$.confirm.title.text(lang['Delete Monitor States Preset']);
$.confirm.body.html(lang.deleteMonitorStateText1);
$.confirm.click({title:'Delete',class:'btn-danger'},function(){
var form = $.schedules.f.serializeObject()
$.post($.ccio.init('location',$user) + $user.auth_token + '/schedule/' + $user.ke + '/' + form.name + '/delete',function(d){
$.ccio.log(d)
if(d.ok === true){
$.schedules.loadSchedules()
$.ccio.init('note',{title:lang.Success,text:d.msg,type:'success'})
}
})
})
})
$.schedules.selector.change(function(e){
var selected = $(this).val()
var loaded = $.schedules.loadedSchedules[selected]
var namespace = $.schedules.e.find('[name="name"]')
var deleteButton = $.schedules.e.find('.delete')
var tzEl = $.schedules.e.find('[name="timezone"]')
$.schedules.selectedStates.find('option:selected').removeAttr('selected')
$.schedules.selectedDays.find('option:selected').removeAttr('selected')
if(loaded){
namespace.val(loaded.name)
var html = ''
$.each(loaded,function(n,v){
$.schedules.f.find('[name="' + n + '"]').val(v)
})
$.each(loaded.details.monitorStates,function(n,v){
$.schedules.selectedStates.find('option[value="' + v + '"]').prop('selected',true)
})
$.each(loaded.details.days,function(n,v){
$.schedules.selectedDays.find('option[value="' + v + '"]').prop('selected',true)
})
tzEl.val(loaded.details.timezone || '+0')
deleteButton.show()
}else{
tzEl.val('+0')
namespace.val('')
deleteButton.hide()
}
})
$.schedules.f.submit(function(e){
e.preventDefault()
var el = $(this)
var form = el.serializeObject()
var monitors = []
var failedToParseAJson = false
var rows = $.monitorStates.monitors.find('.state-monitor-row')
if(form.name === ''){
return $.ccio.init('note',{title:lang['Invalid Data'],text:lang['Name cannot be empty.'],type:'error'})
}
if(form.start === ''){
return $.ccio.init('note',{title:lang['Invalid Data'],text:lang['Start Time cannot be empty.'],type:'error'})
}
if(form.monitorStates instanceof Array === false){
form.monitorStates = [form.monitorStates]
}
if(!form.days || form.days === ''){
form.days = null
}else if(form.days instanceof Array === false){
form.days = [form.days]
}
var data = {
start: form.start,
end: form.end,
enabled: form.enabled,
details: {
monitorStates: form.monitorStates,
days: form.days,
timezone: form.timezone,
}
}
$.post($.ccio.init('location',$user) + $user.auth_token + '/schedule/' + $user.ke + '/' + form.name + '/insert',{data:data},function(d){
$.ccio.log(d)
if(d.ok === true){
$.schedules.loadSchedules(function(){
$.schedules.selector.val(form.name)
})
$.ccio.init('note',{title:lang.Success,text:d.msg,type:'success'})
}
})
return false;
})
})