$(document).ready(function(e){
//multi monitor manager
$.multimon={e:$('#multi_mon')};
$.multimon.table=$.multimon.e.find('.tableData tbody');
$.multimon.f=$.multimon.e.find('form');
$.multimon.f.on('change','#multimon_select_all',function(e){
e.e=$(this);
e.p=e.e.prop('checked')
e.a=$.multimon.f.find('input[type=checkbox][name]')
if(e.p===true){
e.a.prop('checked',true)
}else{
e.a.prop('checked',false)
}
})
$.multimon.e.find('.import_config').click(function(){
var e={};e.e=$(this);e.mid=e.e.parents('[mid]').attr('mid');
$.confirm.e.modal('show');
$.confirm.title.text(lang['Import Monitor Configuration'])
e.html=lang.ImportMultiMonitorConfigurationText+'
';
$.confirm.body.html(e.html)
$.confirm.e.find('.upload').change(function(e){
var files = e.target.files; // FileList object
f = files[0];
var reader = new FileReader();
reader.onload = function(ee) {
$.confirm.e.find('textarea').val(ee.target.result);
}
reader.readAsText(f);
});
$.confirm.click({title:'Import',class:'btn-primary'},function(){
// setTimeout(function(){
// $.confirm.e.modal('show');
// },1000)
// $.confirm.title.text(lang['Are you sure?'])
// $.confirm.body.html(lang.ImportMultiMonitorConfigurationText)
// $.confirm.click({title:'Save Set',class:'btn-danger'},function(){
try{
var postMonitor = function(v){
$.post($.ccio.init('location',$user)+$user.auth_token+'/configureMonitor/'+$user.ke+'/'+v.mid,{data:JSON.stringify(v,null,3)},function(d){
$.ccio.log(d)
})
}
var parseZmMonitor = function(Monitor){
console.log(Monitor)
var newMon = $.aM.generateDefaultMonitorSettings()
newMon.details = JSON.parse(newMon.details)
newMon.details.stream_type = 'jpeg'
switch(Monitor.Type.toLowerCase()){
case'ffmpeg':case'libvlc':
newMon.details.auto_host_enable = '1'
newMon.details.auto_host = Monitor.Path
if(newMon.auto_host.indexOf('rtsp://') > -1 || newMon.auto_host.indexOf('rtmp://') > -1 || newMon.auto_host.indexOf('rtmps://') > -1){
newMon.type = 'h264'
}else{
$.ccio.init('note',{title:lang['Please Check Your Settings'],text:lang.migrateText1,type:'error'})
}
break;
case'local':
newMon.details.auto_host = Monitor.Device
break;
case'remote':
break;
}
newMon.details = JSON.stringify(newMon.details)
console.log(newMon)
return newMon
}
parsedData=JSON.parse($.confirm.e.find('textarea').val());
//zoneminder one monitor
if(parsedData.monitor){
$.aM.import({
values : parseZmMonitor(parsedData.monitor.Monitor)
})
$.aM.e.modal('show')
}else
//zoneminder multiple monitors
if(parsedData.monitors){
$.each(parsedData.monitors,function(n,v){
$.aM.import({
values : parseZmMonitor(parsedData.Monitor)
})
parseZmMonitor(v.Monitor)
})
}else
//shinobi one monitor
if(parsedData.mid){
postMonitor(parsedData)
}else
//shinobi multiple monitors
if(parsedData[0] && parsedData[0].mid){
$.each(parsedData,function(n,v){
postMonitor(v)
})
}
}catch(err){
$.ccio.log(err)
$.ccio.init('note',{title:lang['Invalid JSON'],text:lang.InvalidJSONText,type:'error'})
}
// });
});
})
$.multimon.getSelectedMonitors = function(unclean){
var arr=[];
if(unclean === true){
var monitors = $.ccio.mon
}else{
var monitors = $.ccio.init('cleanMons','object')
}
$.each($.multimon.f.serializeObject(),function(n,v){
arr.push(monitors[n])
})
return arr;
}
$.multimon.e.find('.delete').click(function(){
var arr=$.multimon.getSelectedMonitors(true);
if(arr.length===0){
$.ccio.init('note',{title:'No Monitors Selected',text:'Select atleast one monitor to delete.',type:'error'});
return
}
$.confirm.e.modal('show');
$.confirm.title.text(lang['Delete']+' '+lang['Monitors'])
e.html=''+lang.DeleteMonitorsText+'
';
$.confirm.body.html(e.html)
$.confirm.click([
{
title:'Delete Monitors',
class:'btn-danger',
callback:function(){
$.each(arr,function(n,v){
$.get($.ccio.init('location',$user)+v.user.auth_token+'/configureMonitor/'+v.ke+'/'+v.mid+'/delete',function(data){
console.log(data)
})
})
}
},
{
title:'Delete Monitors and Files',
class:'btn-danger',
callback:function(){
$.each(arr,function(n,v){
$.get($.ccio.init('location',$user)+v.user.auth_token+'/configureMonitor/'+v.ke+'/'+v.mid+'/delete?deleteFiles=true',function(data){
console.log(data)
})
})
}
}
]);
})
//$.multimon.e.find('.edit_all').click(function(){
// var arr=$.multimon.getSelectedMonitors();
// var arrObject={}
// if(arr.length===0){
// $.ccio.init('note',{title:'No Monitors Selected',text:'Select atleast one monitor to delete.',type:'error'});
// return
// }
// $.multimonedit.selectedList = arr;
// $.multimonedit.e.modal('show')
//})
$.multimon.e.find('.save_config').click(function(){
var e={};e.e=$(this);
var arr=$.multimon.getSelectedMonitors();
if(arr.length===0){
$.ccio.init('note',{title:'No Monitors Selected',text:'Select atleast one monitor to delete.',type:'error'});
return
}
e.dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(arr));
$('#temp').html('')
.find('a')
.attr('href',e.dataStr)
.attr('download','Shinobi_Monitors_'+(new Date())+'.json')
[0].click()
})
$.multimon.e.on('shown.bs.modal',function() {
var tmp=''
$.each($.ccio.mon,function(n,v){
var streamURL = $.ccio.init('streamURL',v)
if(streamURL!=='Websocket'&&v.mode!==('idle'&&'stop')){
streamURL=''+streamURL+''
}
var img = $('#left_menu [mid="'+v.mid+'"][auth="'+v.user.auth_token+'"] [monitor="watch"]').attr('src')
tmp+=''
tmp+=' | '
tmp+=' | '+v.name+' '+v.mid+' | '+v.status+' | '+streamURL+' | '
//buttons
tmp+=' | '
tmp+='
'
})
$.multimon.table.html(tmp)
})
})