$(document).ready(function(){ var selectedApiKey = `${$user.auth_token}` var theBlock = $('#tab-monitorsList') var theList = $('#monitorsListRows') var apiKeySelector = $('#multi_mon_api_key_selector') var multiMonitorSelect = $('#multimon_select_all') function getRowsMonitorId(rowEl){ var el = $(rowEl).parents('[data-mid]') var monitorId = el.attr('data-mid') return monitorId } function drawRowToList(row){ var streamUrl = libURL + buildStreamUrl(row.mid).replace($user.auth_token,selectedApiKey) theList.append(`
${buildMiniMonitorCardBody(loadedMonitors[row.mid],null,`
${row.name}
${row.host}
${row.status || lang.Stopped}
`,true)}
`) } function createMonitorVideosTab(monitor){ var startDate = moment().subtract(32, 'hour').utc() var endDate = moment().add(1, 'hour').utc() var newTabId = `monitorVideos-${monitor.mid}` var tabLabel = `${lang['Videos']} : ${monitor.name}` var baseHtml = `
${lang['Videos']} : ${monitor.name}
` createNewTab(newTabId,tabLabel,baseHtml,{},null,'videosList') getVideos({ monitorId: monitor.mid, startDate: startDate._d, endDate: endDate._d, },function(data){ var videos = data.videos if(videos.length === 0){ getVideos({ monitorId: monitor.mid, limit: 20, },function(data){ var videos = data.videos drawVideoRowsToList(`#tab-monitorVideos-${monitor.mid} .video-list`,videos) }) }else{ drawVideoRowsToList(`#tab-monitorVideos-${monitor.mid} .video-list`,videos) } }) $(`#daterange-${newTabId}`).daterangepicker({ timePicker: true, startDate: startDate, endDate: endDate, locale: { format: 'YYYY-MM-DD hh:mm:ss A' } }, function(start, end, label) { var startDate = start.clone().utc() var endDate = end.clone().utc() getVideos({ monitorId: monitor.mid, startDate: startDate._d, endDate: endDate._d, },function(data){ var videos = data.videos drawVideoRowsToList(`#tab-monitorVideos-${monitor.mid} .video-list`,videos) }) }) } function loadMonitorsFromMemory(options,callback){ theList.empty(); $.each(loadedMonitors,function(n,row){ drawRowToList(row) }) } function getSelectedMonitors(){ var monitorsSelected = []; theList.find('.monitor-list-select').each(function(n,v){ var el = $(v) if(el.is(':checked')){ var key = el.attr('name') monitorsSelected.push(getDbColumnsForMonitor(loadedMonitors[key])) } }) return monitorsSelected; } function toggleMonitorListSelectAll(isChecked){ var nameField = theList.find('input[type=checkbox][name]') if(isChecked === true){ nameField.prop('checked',true) }else{ nameField.prop('checked',false) } } function drawMonitorsListApiKeyList(){ $.getJSON(getApiPrefix(`api`) + '/list',function(d){ var html = '' $.each(d.keys || [],function(n,key){ console.log(key) html += createOptionHtml({ value: key.code, label: key.code, }) }) apiKeySelector.find('optgroup').html(html) }) } function correctDropdownPosition(dropdownElement){ var p = dropdownElement.offset(); if (p.top < 0){ dropdownElement[0].style = `transform:translate(0px, ${-p.top + 20}px)!important;` } } var monitorListMenuDropdownOpen = null var monitorListScrollTimeout = null theBlock.on('mouseup','[data-bs-toggle="dropdown"]',function(){ var dropdownElement = $(this).next() monitorListMenuDropdownOpen = dropdownElement setTimeout(function(){ correctDropdownPosition(dropdownElement) },500) }) $('body') .on('click','.create-live-player',function(){ var el = $(this).parents('[data-mid]') var monitorId = el.attr('data-mid') createLivePlayerTab(loadedMonitors[monitorId]) }) .on('click','[set-mode]',function(){ var thisEl = $(this) var el = thisEl.parents('[data-mid]') var monitorId = el.attr('data-mid') var mode = thisEl.attr('set-mode') $.getJSON(`${getApiPrefix('monitor')}/${monitorId}/${mode}`,function(data){ console.log(data) }) }) .on('click','.open-videos',function(){ var monitorId = getRowsMonitorId(this) var monitor = loadedMonitors[monitorId] createMonitorVideosTab(monitor) console.log(monitorId) }) .on('click','.export-this-monitor-settings',function(){ var monitorId = getRowsMonitorId(this) downloadMonitorConfigurationsToDisk([ monitorId ]) }) theBlock .find('.export-selected-monitor-settings').click(function(){ var monitorsSelected = getSelectedMonitors() if(monitorsSelected.length === 0){ new PNotify({ title: lang['No Monitors Selected'], type: 'error' }); return } downloadMonitorConfigurationsToDisk(monitorsSelected) }) theBlock .find('.delete-selected-monitor-settings').click(function(){ var monitorsSelected = getSelectedMonitors() if(monitorsSelected.length === 0){ new PNotify({ title: lang['No Monitors Selected'], text: lang['Select atleast one monitor to delete'], type: 'error' }); return } deleteMonitors(monitorsSelected) }) theList .on('click','.copy-stream-url',function(e){ e.preventDefault() var el = $(this) var href = el.attr('href') copyToClipboard(href) new PNotify({ title: lang['Copied'], text: lang['Copied to Clipboard'], type: 'success' }) return false }) multiMonitorSelect.change(function(){ var el = $(this); var isChecked = el.prop('checked') toggleMonitorListSelectAll(isChecked) }) apiKeySelector.change(function(){ var value = $(this).val() selectedApiKey = `${value}` loadMonitorsFromMemory() multiMonitorSelect.prop('checked',false) }) theBlock.find('.import-monitor-settings').click(function(){ launchImportMonitorWindow() }) addOnTabOpen('monitorsList', function () { loadMonitorsFromMemory() drawMonitorsListApiKeyList() }) addOnTabReopen('monitorsList', function () { loadMonitorsFromMemory() drawMonitorsListApiKeyList() }) // $('#monitors_list_search').keyup(function(){ // var monitorBlocks = $('.monitor_block'); // var searchTerms = $(this).val().toLowerCase().split(' ') // if(searchTerms.length === 0 || searchTerms[0] === ''){ // monitorBlocks.show() // return // } // monitorBlocks.hide() // $.each($.ccio.mon,function(n,monitor){ // var searchThis = JSON.stringify($.ccio.init('cleanMon',monitor)).toLowerCase().replace('"',''); // $.each(searchTerms,function(m,term){ // if(searchThis.indexOf(term) >-1 ){ // $('.monitor_block[ke="'+monitor.ke+'"][mid="'+monitor.mid+'"]').show() // } // }) // }) // }) })