$(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) }) })