$(document).ready(function(e){ //Monitor Editor $.aM={e:$('#add_monitor'),monitorsForCopy:$('#copy_settings_monitors')}; $.aM.f=$.aM.e.find('form') $.aM.channels=$('#monSectionStreamChannels') $.aM.maps=$('#monSectionInputMaps') $.aM.e.find('.follow-list ul').affix(); $.aM.generateDefaultMonitorSettings=function(){ return { "mode": "start", "mid": $.ccio.gid(), "name": "Some Stream", "type": "h264", "host": "", "port": "", "path": "/", "height": "480", "width": "640", "ext": "mp4", "protocol": "http", "fps": "1", "details": "{\"max_keep_days\":\"\",\"notes\":\"\",\"dir\":\"\",\"rtmp_key\":\"\",\"auto_host_enable\":\"1\",\"auto_host\":\"\",\"rtsp_transport\":\"tcp\",\"muser\":\"\",\"mpass\":\"\",\"port_force\":\"0\",\"fatal_max\":\"0\",\"skip_ping\":null,\"is_onvif\":null,\"onvif_port\":\"\",\"primary_input\":null,\"aduration\":\"1000000000\",\"probesize\":\"1000000000\",\"stream_loop\":\"0\",\"sfps\":\"\",\"accelerator\":\"0\",\"hwaccel\":\"auto\",\"hwaccel_vcodec\":\"\",\"hwaccel_device\":\"\",\"use_coprocessor\":null,\"stream_type\":\"hls\",\"stream_flv_type\":\"ws\",\"stream_flv_maxLatency\":\"\",\"stream_mjpeg_clients\":\"\",\"stream_vcodec\":\"copy\",\"stream_acodec\":\"no\",\"hls_time\":\"2\",\"hls_list_size\":\"3\",\"preset_stream\":\"ultrafast\",\"signal_check\":\"10\",\"signal_check_log\":\"0\",\"stream_quality\":\"15\",\"stream_fps\":\"2\",\"stream_scale_x\":\"\",\"stream_scale_y\":\"\",\"rotate_stream\":\"no\",\"svf\":\"\",\"tv_channel\":\"0\",\"tv_channel_id\":\"\",\"tv_channel_group_title\":\"\",\"stream_timestamp\":\"0\",\"stream_timestamp_font\":\"\",\"stream_timestamp_font_size\":\"\",\"stream_timestamp_color\":\"\",\"stream_timestamp_box_color\":\"\",\"stream_timestamp_x\":\"\",\"stream_timestamp_y\":\"\",\"stream_watermark\":\"0\",\"stream_watermark_location\":\"\",\"stream_watermark_position\":\"tr\",\"snap\":\"0\",\"snap_fps\":\"\",\"snap_scale_x\":\"\",\"snap_scale_y\":\"\",\"snap_vf\":\"\",\"vcodec\":\"copy\",\"crf\":\"1\",\"acodec\":\"no\",\"record_scale_y\":\"\",\"record_scale_x\":\"\",\"cutoff\":\"15\",\"rotate_record\":\"no\",\"vf\":\"\",\"timestamp\":\"0\",\"timestamp_font\":\"\",\"timestamp_font_size\":\"10\",\"timestamp_color\":\"white\",\"timestamp_box_color\":\"0x00000000@1\",\"timestamp_x\":\"(w-tw)/2\",\"timestamp_y\":\"0\",\"watermark\":\"0\",\"watermark_location\":\"\",\"watermark_position\":\"tr\",\"record_timelapse\":null,\"record_timelapse_mp4\":null,\"record_timelapse_fps\":null,\"record_timelapse_scale_x\":\"\",\"record_timelapse_scale_y\":\"\",\"record_timelapse_vf\":\"\",\"record_timelapse_watermark\":null,\"record_timelapse_watermark_location\":\"\",\"record_timelapse_watermark_position\":null,\"cust_input\":\"\",\"cust_stream\":\"\",\"cust_snap\":\"\",\"cust_record\":\"\",\"cust_detect\":\"\",\"cust_sip_record\":\"\",\"custom_output\":\"\",\"detector\":\"0\",\"detector_http_api\":null,\"detector_send_frames\":\"1\",\"detector_lock_timeout\":\"\",\"detector_save\":\"0\",\"detector_fps\":\"\",\"detector_scale_x\":\"640\",\"detector_scale_y\":\"480\",\"detector_record_method\":\"sip\",\"detector_trigger\":\"1\",\"detector_trigger_record_fps\":\"\",\"detector_timeout\":\"10\",\"detector_send_video_length\":\"\",\"watchdog_reset\":\"0\",\"detector_delete_motionless_videos\":\"0\",\"det_multi_trig\":null,\"group_detector_multi\":\"\",\"detector_webhook\":\"0\",\"detector_webhook_url\":\"\",\"detector_webhook_method\":null,\"detector_command_enable\":\"0\",\"detector_command\":\"\",\"detector_command_timeout\":\"\",\"detector_mail\":\"0\",\"detector_mail_timeout\":\"\",\"detector_discordbot\":null,\"detector_discordbot_send_video\":null,\"detector_discordbot_timeout\":\"\",\"use_detector_filters\":null,\"use_detector_filters_object\":null,\"cords\":\"[]\",\"detector_filters\":\"\",\"detector_pam\":\"1\",\"detector_show_matrix\":null,\"detector_sensitivity\":\"\",\"detector_max_sensitivity\":\"\",\"detector_threshold\":\"1\",\"detector_color_threshold\":\"\",\"detector_frame\":\"0\",\"detector_noise_filter\":null,\"detector_noise_filter_range\":\"\",\"detector_notrigger\":\"0\",\"detector_notrigger_mail\":\"0\",\"detector_notrigger_timeout\":\"\",\"detector_audio\":null,\"detector_audio_min_db\":\"\",\"detector_audio_max_db\":\"\",\"detector_use_detect_object\":\"0\",\"detector_send_frames_object\":null,\"detector_obj_region\":null,\"detector_use_motion\":\"1\",\"detector_fps_object\":\"\",\"detector_scale_x_object\":\"\",\"detector_scale_y_object\":\"\",\"detector_lisence_plate\":\"0\",\"detector_lisence_plate_country\":\"us\",\"detector_buffer_vcodec\":\"auto\",\"detector_buffer_acodec\":null,\"detector_buffer_fps\":\"\",\"detector_buffer_hls_time\":\"\",\"detector_buffer_hls_list_size\":\"\",\"detector_buffer_start_number\":\"\",\"detector_buffer_live_start_index\":\"\",\"control\":\"0\",\"control_base_url\":\"\",\"control_url_method\":null,\"control_digest_auth\":null,\"control_stop\":\"0\",\"control_url_stop_timeout\":\"\",\"control_url_center\":\"\",\"control_url_left\":\"\",\"control_url_left_stop\":\"\",\"control_url_right\":\"\",\"control_url_right_stop\":\"\",\"control_url_up\":\"\",\"control_url_up_stop\":\"\",\"control_url_down\":\"\",\"control_url_down_stop\":\"\",\"control_url_enable_nv\":\"\",\"control_url_disable_nv\":\"\",\"control_url_zoom_out\":\"\",\"control_url_zoom_out_stop\":\"\",\"control_url_zoom_in\":\"\",\"control_url_zoom_in_stop\":\"\",\"groups\":\"[]\",\"loglevel\":\"warning\",\"sqllog\":\"0\",\"detector_cascades\":\"\",\"stream_channels\":\"\",\"input_maps\":\"\",\"input_map_choices\":\"\"}", "shto": "[]", "shfr": "[]" } } $.aM.sections = {} var addSection = function(section){ $.aM.sections[section.name] = section.id if(section.info){ $.each(section.info,function(m,block){ if(block.isFormGroupGroup === true){ addSection(block) } }) } if(section.blocks){ $.each(section.blocks,function(m,block){ addSection(block) }) } } $.each($.ccio.definitions['Monitor Settings'].blocks,function(n,section){ addSection(section) }) $.aM.drawList = function(){ var list = $.aM.e.find('.follow-list ul') var html = '' $.each($.aM.sections,function(sectionName,sectionId){ var el = $('#' + sectionId + ':visible') if(el.length > 0){ html += '
  • ' + sectionName + '
  • ' } }) list.html(html) } $.aM.e.on('shown.bs.modal', function () { $.aM.drawList() }) $.aM.import=function(e){ $.get($.ccio.init('location',$user)+$user.auth_token+'/hls/'+e.values.ke+'/'+e.values.mid+'/detectorStream.m3u8',function(data){ $('#monEditBufferPreview').html(data) }) $.aM.e.find('.edit_id').text(e.values.mid); $.aM.e.attr('mid',e.values.mid).attr('ke',e.values.ke).attr('auth',e.auth) $.each(e.values,function(n,v){ $.aM.e.find('[name="'+n+'"]').val(v).change() }) e.ss=JSON.parse(e.values.details); //get maps $.aM.maps.empty() if(e.ss.input_maps&&e.ss.input_maps!==''){ var input_maps try{ input_maps = JSON.parse(e.ss.input_maps) }catch(er){ input_maps = e.ss.input_maps; } if(input_maps.length>0){ $.aM.showInputMappingFields() $.each(input_maps,function(n,v){ var tempID = $.ccio.tm('input-map') var parent = $('#monSectionMap'+tempID) $.each(v,function(m,b){ parent.find('[map-detail="'+m+'"]').val(b).change() }) }) }else{ $.aM.showInputMappingFields(false) } } //get channels $.aM.channels.empty() if(e.ss.stream_channels&&e.ss.stream_channels!==''){ var stream_channels try{ stream_channels = JSON.parse(e.ss.stream_channels) }catch(er){ stream_channels = e.ss.stream_channels; } $.each(stream_channels,function(n,v){ var tempID = $.ccio.tm('stream-channel') var parent = $('#monSectionChannel'+tempID) $.each(v,function(m,b){ parent.find('[channel-detail="'+m+'"]').val(b) }) }) } //get map choices for outputs $('[input-mapping] .choices').empty() if(e.ss.input_map_choices&&e.ss.input_map_choices!==''){ var input_map_choices try{ input_map_choices = JSON.parse(e.ss.input_map_choices) }catch(er){ input_map_choices = e.ss.input_map_choices; } $.each(input_map_choices,function(n,v){ $.each(v,function(m,b){ var parent = $('[input-mapping="'+n+'"] .choices') $.ccio.tm('input-map-selector',b,parent) }) }) } $.aM.e.find('[detail]').each(function(n,v){ v=$(v).attr('detail');if(!e.ss[v]){e.ss[v]=''} }) $.each(e.ss,function(n,v){ var theVal = v; if(v instanceof Object){ theVal = JSON.stringify(v); } $.aM.e.find('[detail="'+n+'"]').val(theVal).change(); }); $.each(e.ss,function(n,v){ try{ var variable=JSON.parse(v) }catch(err){ var variable=v } if(variable instanceof Object){ $('[detailContainer="'+n+'"][detailObject]').prop('checked',false) $('[detailContainer="'+n+'"][detailObject]').parents('.mdl-js-switch').removeClass('is-checked') if(variable instanceof Array){ $.each(variable,function(m,b,parentOfObject){ $('[detailContainer="'+n+'"][detailObject="'+b+'"]').prop('checked',true) parentOfObject=$('[detailContainer="'+n+'"][detailObject="'+b+'"]').parents('.mdl-js-switch') parentOfObject.addClass('is-checked') }) }else{ $.each(variable,function(m,b){ if(typeof b ==='string'){ $('[detailContainer="'+n+'"][detailObject="'+m+'"]').val(b).change() }else{ $('[detailContainer="'+n+'"][detailObject="'+m+'"]').prop('checked',true) parentOfObject=$('[detailContainer="'+n+'"][detailObject="'+m+'"]').parents('.mdl-js-switch') parentOfObject.addClass('is-checked') } }) } } }); try{ $.each(['groups','group_detector_multi'],function(m,b){ var tmp='' $.each($user.mon_groups,function(n,v){ tmp+='
  • '; tmp+=''; tmp+=v.name; tmp+=''; tmp+=''; tmp+=''; tmp+=''; tmp+='
  • '; }) $('#monitor_'+b).html(tmp) }) componentHandler.upgradeAllRegistered() }catch(er){ console.log(er) //no group, this 'try' will be removed in future. }; $('#copy_settings').val('0').change() var tmp = ''; $.each($.ccio.mon,function(n,v){ if(v.ke === $user.ke){ tmp += $.ccio.tm('option',{auth_token:$user.auth_token,id:v.mid,name:v.name},null,$user); } }) $.aM.monitorsForCopy.find('optgroup').html(tmp) $.aM.drawList() } //parse "Automatic" field in "Input" Section $.aM.e.on('change','.auto_host_fill input,.auto_host_fill select',function(e){ var theSwitch = $.aM.e.find('[detail="auto_host_enable"]').val() if(!theSwitch||theSwitch===''){ theSwitch='1' } if(theSwitch==='1'){ return } if($.aM.e.find('[name="host"]').val() !== ''){ $.aM.e.find('[detail="auto_host"]').val($.aM.buildMonitorURL()) } }) $.aM.e.on('change','[detail="auto_host"]',function(e){ var isRTSP = false var inputType = $.aM.e.find('[name="type"]').val() var url = $(this).val() var theSwitch = $.aM.e.find('[detail="auto_host_enable"]') var disabled = theSwitch.val() if(!disabled||disabled===''){ //if no value, then probably old version of monitor config. Set to Manual to avoid confusion. disabled='0' theSwitch.val('0').change() } if(disabled==='0'){ return } if(inputType === 'local'){ $.aM.e.find('[name="path"]').val(url).change() }else{ var urlSplitByDots = url.split('.') var has = function(query,searchIn){if(!searchIn){searchIn=url;};return url.indexOf(query)>-1} var protocol = url.split('://')[0] console.log(url.split('://')) //switch RTSP, RTMP and RTMPS to parse URL if(has('rtsp://')){ isRTSP = true; url = url.replace('rtsp://','http://') } if(has('rtmp://')){ isRTMP = true; url = url.replace('rtmp://','http://') } if(has('rtmps://')){ isRTMPS = true; url = url.replace('rtmps://','http://') } //parse URL var parsedURL = document.createElement('a'); parsedURL.href = url; var pathname = parsedURL.pathname if(url.indexOf('?') > -1){ pathname += '?'+url.split('?')[1] } $.aM.e.find('[name="protocol"]').val(protocol).change() if(isRTSP){ $.aM.e.find('[detail="rtsp_transport"]').val('tcp').change() $.aM.e.find('[detail="aduration"]').val(1000000).change() $.aM.e.find('[detail="probesize"]').val(1000000).change() } $.aM.e.find('[detail="muser"]').val(parsedURL.username).change() $.aM.e.find('[detail="mpass"]').val(parsedURL.password).change() $.aM.e.find('[name="host"]').val(parsedURL.hostname).change() $.aM.e.find('[name="port"]').val(parsedURL.port).change() $.aM.e.find('[name="path"]').val(pathname).change() delete(parsedURL) } }) $.aM.e.find('.refresh_cascades').click(function(e){ $.ccio.cx({f:'ocv_in',data:{f:'refreshPlugins',ke:$user.ke}}) }) $.aM.f.submit(function(ee){ ee.preventDefault(); e={e:$(this)}; e.s=e.e.serializeObject(); e.er=[]; $.each(e.s,function(n,v){e.s[n]=v.trim()}); e.s.mid=e.s.mid.replace(/[^\w\s]/gi,'').replace(/ /g,'') if(e.s.mid.length<3){e.er.push('Monitor ID too short')} if(e.s.port==''){ if(e.s.protocol === 'https'){ e.s.port = 443 }else{ e.s.port = 80 } } if(e.s.name==''){e.er.push('Monitor Name cannot be blank')} // if(e.s.protocol=='rtsp'){e.s.ext='mp4',e.s.type='rtsp'} if(e.er.length>0){ $.sM.e.find('.msg').html(e.er.join('
    ')); $.ccio.init('note',{title:'Configuration Invalid',text:e.er.join('
    '),type:'error'}); return; } $.post($.ccio.init('location',$user)+$user.auth_token+'/configureMonitor/'+$user.ke+'/'+e.s.mid,{data:JSON.stringify(e.s)},function(d){ $.ccio.log(d) }) // if($('#copy_settings').val() === '1'){ e.s.details = JSON.parse(e.s.details); var copyMonitors = $.aM.monitorsForCopy.val(); var chosenSections = []; var chosenMonitors = {}; if(!copyMonitors||copyMonitors.length===0){ $.ccio.init('note',{title:lang['No Monitors Selected'],text:lang.monSavedButNotCopied}) return } $.aM.e.find('[copy]').each(function(n,v){ var el = $(v) if(el.val() === '1'){ chosenSections.push(el.attr('copy')) } }) var alterSettings = function(settingsToAlter,monitor){ monitor.details = JSON.parse(monitor.details); var searchElements = [] if(settingsToAlter.indexOf('field=') > -1){ var splitSettingsToAlter = settingsToAlter.split('=') if(splitSettingsToAlter[1] === 'detail' && splitSettingsToAlter[2]){ searchElements = $.aM.e.find(`[detail="${splitSettingsToAlter[2]}"]`) }else{ searchElements = $.aM.e.find(`[name="${splitSettingsToAlter[1]}"]`) } }else{ searchElements = $.aM.e.find(settingsToAlter).find('input,select,textarea') } searchElements.each(function(n,v){ var el = $(v); var name = el.attr('name') var detail = el.attr('detail') var value switch(true){ case !!name: var value = e.s[name] monitor[name] = value; break; case !!detail: detail = detail.replace('"','') var value = e.s.details[detail] monitor.details[detail] = value; break; } }) monitor.details = JSON.stringify(monitor.details); return monitor; } $.each(copyMonitors,function(n,id){ var monitor if(id === '$New'){ monitor = $.aM.generateDefaultMonitorSettings(); //connection monitor.name = e.s.name+' - '+monitor.mid monitor.type = e.s.type monitor.protocol = e.s.protocol monitor.host = e.s.host monitor.port = e.s.port monitor.path = e.s.path monitor.details.fatal_max = e.s.details.fatal_max monitor.details.port_force = e.s.details.port_force monitor.details.muser = e.s.details.muser monitor.details.password = e.s.details.password monitor.details.rtsp_transport = e.s.details.rtsp_transport monitor.details.auto_host = e.s.details.auto_host monitor.details.auto_host_enable = e.s.details.auto_host_enable //input monitor.details.aduration = e.s.details.aduration monitor.details.probesize = e.s.details.probesize monitor.details.stream_loop = e.s.details.stream_loop monitor.details.sfps = e.s.details.sfps monitor.details.accelerator = e.s.details.accelerator monitor.details.hwaccel = e.s.details.hwaccel monitor.details.hwaccel_vcodec = e.s.details.hwaccel_vcodec monitor.details.hwaccel_device = e.s.details.hwaccel_device }else{ monitor = Object.assign({},$.ccio.init('cleanMon',$.ccio.mon[$user.ke+id+$user.auth_token])); } $.each(chosenSections,function(n,section){ monitor = alterSettings(section,monitor) }) console.log(monitor) $.post($.ccio.init('location',$user)+$user.auth_token+'/configureMonitor/'+$user.ke+'/'+monitor.mid,{data:JSON.stringify(monitor)},function(d){ $.ccio.log(d) }) chosenMonitors[monitor.mid] = monitor; }) console.log(chosenMonitors) } $.aM.e.modal('hide') return false; }); ////////////////// //Input Map (Feed) $.aM.mapPlacementInit = function(){ $('.input-map').each(function(n,v){ var _this = $(this) _this.find('.place').text(n+1) }) } $.aM.mapSave = function(){ var e={}; var mapContainers = $('[input-mapping]'); var stringForSave={} mapContainers.each(function(q,t){ var mapRowElement = $(t).find('.map-row'); var mapRow = [] mapRowElement.each(function(n,v){ var map={} $.each($(v).find('[map-input]'),function(m,b){ map[$(b).attr('map-input')]=$(b).val() }); mapRow.push(map) }); stringForSave[$(t).attr('input-mapping')] = mapRow; }); $.aM.e.find('[detail="input_map_choices"]').val(JSON.stringify(stringForSave)).change(); } $.aM.maps.on('click','.delete',function(){ $(this).parents('.input-map').remove() var inputs = $('[map-detail]') if(inputs.length===0){ $.aM.e.find('[detail="input_maps"]').val('[]').change() $.aM.showInputMappingFields(false) }else{ inputs.first().change() $.aM.showInputMappingFields() } $.aM.mapPlacementInit() }) $.aM.e.on('change','[map-detail]',function(){ var e={}; e.e=$.aM.maps.find('.input-map') e.s=[] e.e.each(function(n,v){ var map={} $.each($(v).find('[map-detail]'),function(m,b){ map[$(b).attr('map-detail')]=$(b).val() }); e.s.push(map) }); $.aM.e.find('[detail="input_maps"]').val(JSON.stringify(e.s)).change() }) $.aM.e.on('click','[input-mapping] .add_map_row',function(){ $.ccio.tm('input-map-selector',{},$(this).parents('[input-mapping]').find('.choices')) $.aM.mapSave() }) $.aM.e.on('click','[input-mapping] .delete_map_row',function(){ $(this).parents('.map-row').remove() $.aM.mapSave() }) $.aM.e.on('change','[map-input]',function(){ $.aM.mapSave() }) ////////////////// //Stream Channels $.aM.channelSave = function(){ var e={}; e.e=$.aM.channels.find('.stream-channel') e.s=[] e.e.each(function(n,v){ var channel={} $.each($(v).find('[channel-detail]'),function(m,b){ channel[$(b).attr('channel-detail')]=$(b).val() }); e.s.push(channel) }); $.aM.e.find('[detail="stream_channels"]').val(JSON.stringify(e.s)).change() } $.aM.channelPlacementInit = function(){ $('.stream-channel').each(function(n,v){ var _this = $(this) _this.attr('stream-channel',n) _this.find('.place').text(n) _this.find('[input-mapping]').attr('input-mapping','stream_channel-'+n) $.aM.mapSave() }) } $.aM.buildMonitorURL = function(){ var e={}; e.user=$.aM.e.find('[detail="muser"]').val(); e.pass=$.aM.e.find('[detail="mpass"]').val(); e.host=$.aM.e.find('[name="host"]').val(); e.protocol=$.aM.e.find('[name="protocol"]').val(); e.port=$.aM.e.find('[name="port"]').val(); e.path=$.aM.e.find('[name="path"]').val(); if($.aM.e.find('[name="type"]').val()==='local'){ e.url=e.path; }else{ if(e.host.indexOf('@')===-1&&e.user!==''){ e.host=e.user+':'+e.pass+'@'+e.host; } e.url=$.ccio.init('url',e)+e.path; } return e.url } $.aM.showInputMappingFields = function(showMaps){ var el = $('[input-mapping],.input-mapping') if(showMaps === undefined)showMaps = true if(showMaps){ el.show() }else{ el.hide() } $.aM.drawList() } $.aM.channels.on('click','.delete',function(){ $(this).parents('.stream-channel').remove() $.aM.channelSave() $.aM.channelPlacementInit() }) $.aM.e.on('change','[channel-detail]',function(){ $.aM.channelSave() }) ////////////////// $.aM.e.on('change','[groups]',function(){ var e={}; e.e=$.aM.e.find('[groups]:checked'); e.s=[]; e.e.each(function(n,v){ e.s.push($(v).val()) }); $.aM.e.find('[detail="groups"]').val(JSON.stringify(e.s)).change() }) $.aM.e.on('change','[group_detector_multi]',function(){ var e={}; e.e=$.aM.e.find('[group_detector_multi]:checked'); e.s=[]; e.e.each(function(n,v){ e.s.push($(v).val()) }); $.aM.e.find('[detail="group_detector_multi"]').val(JSON.stringify(e.s)).change() }) $.aM.e.on('change','.detector_cascade_selection',function(){ var e={}; e.e=$.aM.e.find('.detector_cascade_selection:checked'); e.s={}; e.e.each(function(n,v){ e.s[$(v).val()]={} }); $.aM.e.find('[detail="detector_cascades"]').val(JSON.stringify(e.s)).change() }) //$.aM.e.on('change','.detector_cascade_selection',function(){ // var e={}; // e.details=$.aM.e.find('[name="details"]') // try{ // e.detailsVal=JSON.parse(e.details.val()) // }catch(err){ // e.detailsVal={} // } // e.detailsVal.detector_cascades=[]; // e.e=$.aM.e.find('.detector_cascade_selection:checked'); // e.e.each(function(n,v){ // e.detailsVal.detector_cascades.push($(v).val()) // }); // e.details.val(JSON.stringify(e.detailsVal)) //}) $.aM.e.find('.probe_config').click(function(){ $.pB.e.find('[name="url"]').val($.aM.buildMonitorURL()); $.pB.f.submit(); $.pB.e.modal('show'); }) $.aM.e.find('.import_config').click(function(e){ 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.ImportMonitorConfigurationText+'
    '; $.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(){ try{ e.values=JSON.parse($.confirm.e.find('textarea').val()); $.aM.import(e) $.aM.e.modal('show') }catch(err){ $.ccio.log(err) $.ccio.init('note',{title:lang['Invalid JSON'],text:lang.InvalidJSONText,type:'error'}) } }); }); $.aM.e.find('.save_config').click(function(e){ var e={};e.e=$(this);e.mid=e.e.parents('[mid]').attr('mid');e.s=$.aM.f.serializeObject(); if(!e.mid||e.mid===''){ e.mid='NewMonitor' } e.dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(e.s)); $('#temp').html('') .find('a') .attr('href',e.dataStr) .attr('download','Shinobi_'+e.mid+'_config.json') [0].click() }); $.aM.e.find('.add_map').click(function(e){ $.aM.showInputMappingFields() $.ccio.tm('input-map') }); $.aM.e.find('.add_channel').click(function(e){ $.ccio.tm('stream-channel') }); $.aM.f.find('[detail="stream_type"]').change(function(e){ e.e=$(this); if(e.e.val()==='jpeg'){$.aM.f.find('[detail="snap"]').val('1').change()} }) $.aM.f.find('[name="type"]').change(function(e){ e.e=$(this); if(e.e.val()==='h264'){$.aM.f.find('[name="protocol"]').val('rtsp').change()} }) $.aM.md=$.aM.f.find('[detail]'); $.aM.md.change($.ccio.form.details) $.aM.f.on('change','[selector]',function(){ e={e:$(this)} e.v=e.e.val(); e.a=e.e.attr('selector') e.triggerChange=e.e.attr('triggerchange') e.triggerChangeIgnore=e.e.attr('triggerChangeIgnore') $.aM.f.find('.'+e.a+'_input').hide() $.aM.f.find('.'+e.a+'_'+e.v).show(); $.aM.f.find('.'+e.a+'_text').text($(this).find('option:selected').text()) if(e.triggerChange && e.triggerChange !== '' && !e.triggerChangeIgnore || (e.triggerChangeIgnore && e.triggerChangeIgnore.split(',').indexOf(e.v) === -1)){ console.log(e.triggerChange) $(e.triggerChange).trigger('change') } $.aM.drawList() }); $.aM.f.find('[name="type"]').change(function(e){ e.e=$(this); e.v=e.e.val(); e.h=$.aM.f.find('[name="path"]'); e.p=e.e.parents('.form-group'); switch(e.v){ case'local':case'socket': e.h.attr('placeholder','/dev/video0') break; default: e.h.attr('placeholder','/videostream.cgi?1') break; } }); $.aM.connectedDetectorPlugins = {} $.aM.addDetectorPlugin = function(name,d){ $.aM.connectedDetectorPlugins[d.plug] = { id: d.id, plug: d.plug, notice: d.notice, connectionType: d.connectionType } $.aM.drawPluginElements() } $.aM.removeDetectorPlugin = function(name){ delete($.aM.connectedDetectorPlugins[name]) $.aM.drawPluginElements(name) } $.aM.drawPluginElements = function(){ if(Object.keys($.aM.connectedDetectorPlugins).length === 0){ $('.stream-objects .stream-detected-object').remove() $('.shinobi-detector').hide() $('.shinobi-detector-msg').empty() $('.shinobi-detector_name').empty() $('.shinobi-detector_plug').hide() $('.shinobi-detector-invert').show() $.aM.drawList() }else{ var pluginTitle = [] var pluginNotice = [] $.each($.aM.connectedDetectorPlugins,function(name,d){ pluginTitle.push(name) if(d.notice){ pluginNotice.push('' + d.plug + ' : ' + d.notice) } $('.shinobi-detector-'+d.plug).show() }) $('.shinobi-detector').show() $('.shinobi-detector-invert').hide() $('.shinobi-detector_name').text(pluginTitle.join(', ')) if(pluginNotice.length > 0)$('.shinobi-detector-msg').text(pluginNotice.join('
    ')) $.aM.drawList() } } })