`
}
}
}
})
}
return html
}
var drawMonitor = function(preloadedData){
var MonitorSettings = definitions['Monitor Settings']
var html = ''
console.log(MonitorSettings)
Object.keys(MonitorSettings.blocks).forEach(function(blockKey){
var block = MonitorSettings.blocks[blockKey]
html += drawBlock(block,preloadedData)
})
var monitorSelect = ``
var fullHtml = `
${monitorSelect}
${html}
`
return fullHtml
}
monitorStatesPage.on('click','.add-monitor',function(e){
e.stopPropagation()
var el = $(this)
var html = drawMonitor()
monitorStatesMonitors.append(html)
return false;
})
monitorStatesPage.on('click','.state-monitor-row-fields-container .list-group-item',function(e){
var el = $(this)
var listGroupParent = el.parents('.list-group')
var fieldContainer = el.find('.state-monitor-row-fields-field')
var name = el.attr('data-name')
var value = el.attr('data-value')
if(el.hasClass('active')){
el.removeClass('active')
fieldContainer.hide()
}else{
el.addClass('active')
fieldContainer.show()
}
})
monitorStatesPage.on('click','.state-monitor-row-fields-container .form-control',function(e){
e.preventDefault()
return false
})
monitorStatesPage.on('change','.json',function(e){
var el = $(this)
var val = el.val()
try{
el.css('border-color','green')
var parsed = JSON.parse(val)
el.val(JSON.stringify(parsed,null,3))
}catch(err){
el.css('border-color','red')
return new PNotify({title:lang['Invalid JSON'],text:lang.InvalidJSONText,type:'error'})
}
})
monitorStatesPage.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 = theForm.serializeObject()
$.post(getApiPrefix(`monitorStates`) + '/' + form.name + '/delete',function(d){
debugLog(d)
if(d.ok === true){
loadMonitorStatesPresets()
new PNotify({title:lang.Success,text:d.msg,type:'success'})
}
})
})
})
monitorStatesPage.on('click','.delete-monitor',function(e){
var el = $(this).parents('.state-monitor-row')
$.confirm.e.modal('show');
$.confirm.title.text(lang['Delete Monitor State']);
$.confirm.body.html(lang.deleteMonitorStateText2)
$.confirm.click({title:'Delete',class:'btn-danger'},function(){
el.remove()
})
})
monitorStatesSelector.change(function(e){
var selected = $(this).val()
var loaded = monitorStatesLoaded[selected]
var namespace = monitorStatesPage.find('[name="name"]')
var deleteButton = monitorStatesPage.find('.delete')
if(loaded){
namespace.val(loaded.name)
var html = ''
$.each(loaded.details.monitors,function(n,v){
html += drawMonitor(v)
})
monitorStatesMonitors.html(html)
deleteButton.show()
}else{
namespace.val('')
monitorStatesMonitors.empty()
deleteButton.hide()
}
})
function getFormValues(){
var rows = monitorStatesMonitors.find('.state-monitor-row')
var monitors = []
rows.each(function(n,v){
var monitorJson = {
details: {}
}
var el = $(v)
var fieldsSelcted = el.find('.list-group-item.active')
monitorJson.mid = el.find('.state-monitor-row-select').val()
fieldsSelcted.each(function(nn,element){
var field = $(element)
var name = field.attr('data-name')
var value = field.find('.form-control').val()
var isDetail = false
if(name.indexOf('detail=') > -1){
isDetail = true
name = name.replace('detail=','')
monitorJson.details[name] = value
}else{
monitorJson[name] = value
}
})
if(Object.keys(monitorJson).length > 2 || Object.keys(monitorJson.details).length > 2){
monitors.push(monitorJson)
}
})
return monitors
}
theForm.submit(function(e){
e.preventDefault()
var el = $(this)
var form = el.serializeObject()
var monitors = getFormValues()
if(form.name === ''){
return new PNotify({title:lang['Invalid Data'],text:lang['Name cannot be empty.'],type:'error'})
}
if(monitors.length === 0){
return new PNotify({title:lang['Invalid Data'],text:lang['Must be atleast one row'],type:'error'})
}
var data = {
monitors: monitors
}
$.post(getApiPrefix(`monitorStates`) + '/' + form.name + '/insert',{data:data},function(d){
debugLog(d)
if(d.ok === true){
loadMonitorStatesPresets(function(){
monitorStatesSelector.val(form.name)
})
new PNotify({title:lang.Success,text:d.msg,type:'success'})
}
})
return false;
})
})