$(document).ready(function(e){ var regionEditorWindow = $('#region_editor') var regionEditorForm = regionEditorWindow.find('form') var regionEditorRegionsList = $('#regions_list') var regionEditorRegionsPoints = $('#regions_points') var regionEditorRegionsCanvas = $('#regions_canvas') var regionStillImage = $('#region_still_image'); var regionEditorCanvasHolder = regionEditorWindow.find('.canvas_holder') var getRegionEditorCanvas = function(){ return regionEditorWindow.find('canvas') } var getRegionEditorNameField = function(){ return regionEditorWindow.find('[name="name"]') } var getCurrentlySelectedRegionId = function(){ return regionEditorRegionsList.val() } var regionViewerDetails = {} var createBlankCoorindateObject = function(name){ return { name: name, sensitivity: 10, max_sensitivity: '', threshold: 1, color_threshold: 9, points: [ [0, 0], [0, 100], [100, 0] ] } } var loadRegionEditor = function(monitorDetails){ var width = $.aM.e.find('[detail="detector_scale_x"]').val() var height = $.aM.e.find('[detail="detector_scale_y"]').val() monitorDetails.cords = $.aM.e.find('[detail="cords"]').val() if(width === ''){ monitorDetails.detector_scale_x = 640 monitorDetails.detector_scale_y = 480 $.aM.e.find('[detail="detector_scale_x"]').val(monitorDetails.detector_scale_x) $.aM.e.find('[detail="detector_scale_y"]').val(monitorDetails.detector_scale_y) }else{ monitorDetails.detector_scale_x = width monitorDetails.detector_scale_y = height } regionEditorWindow.modal('show') getRegionEditorCanvas().attr('width',monitorDetails.detector_scale_x).attr('height',monitorDetails.detector_scale_y) regionEditorCanvasHolder.css({ width: monitorDetails.detector_scale_x, height: monitorDetails.detector_scale_y }); if(monitorDetails.cords && (monitorDetails.cords instanceof Object) === false){ try{ monitorDetails.cords = JSON.parse(monitorDetails.cords) }catch(er){ } } if(!monitorDetails.cords || monitorDetails.cords === ''){ monitorDetails.cords = {} monitorDetails.cords[s.gid(5)] = createBlankCoorindateObject('newName') } regionViewerDetails = monitorDetails; initiateRegionList() } var drawPointsTable = function(){ var currentRegionId = getCurrentlySelectedRegionId() var value = regionEditorRegionsCanvas.val().replace(/(,[^,]*),/g, '$1;').split(';'); var newArray = []; $.each(value,function(n,v){ v = v.split(',') if(v[1]){ newArray.push([v[0],v[1]]) } }) regionViewerDetails.cords[currentRegionId].points = newArray regionEditorRegionsPoints.empty() $.each(regionViewerDetails.cords[currentRegionId].points,function(n,v){ if(isNaN(v[0])){v[0] = 20} if(isNaN(v[1])){v[1] = 20} regionEditorRegionsPoints.append(` `) }) } var saveCoords = function(){ $.aM.e.find('[detail="cords"]').val(JSON.stringify(regionViewerDetails.cords)).change() } var initiateRegionList = function(){ regionEditorRegionsList.empty() regionEditorRegionsPoints.empty() $.each(regionViewerDetails.cords,function(regionId,region){ if(region && region.name){ regionEditorRegionsList.append('') } }); regionEditorRegionsList.change(); } var initLiveStream = function(e){ var e={} var liveElement = $('#region_editor_live'); var apiPoint = 'embed' liveElement.find('iframe,img').attr('src','about:blank').hide() if(regionStillImage.is(':checked')){ liveElement = liveElement.find('img') apiPoint = 'jpeg' }else{ liveElement = liveElement.find('iframe') apiPoint = 'embed' } var apiUrl = `${$.ccio.init('location',$user)+$user.auth_token}/${apiPoint}/${$user.ke}/${$.aM.selected.mid}` if(apiPoint === 'embed'){ apiUrl += '/fullscreen|jquery|relative' }else{ apiUrl += '/s.jpg' } if(liveElement.attr('src') !== apiUrl){ liveElement.attr('src',apiUrl).show() } liveElement.attr('width',regionViewerDetails.detector_scale_x) liveElement.attr('height',regionViewerDetails.detector_scale_y) } var initCanvas = function(){ var newArray = []; var regionEditorRegionsListValue = regionEditorRegionsList.val(); if(!regionEditorRegionsListValue){ regionEditorForm.find('[name="name"]').val('') regionEditorForm.find('[name="sensitivity"]').val('') regionEditorForm.find('[name="max_sensitivity"]').val('') regionEditorForm.find('[name="threshold"]').val('') regionEditorForm.find('[name="color_threshold"]').val('') regionEditorRegionsPoints.empty() }else{ var cord = regionViewerDetails.cords[regionEditorRegionsListValue]; if(!cord.points){ cord.points = [ [0,0], [0,100], [100,0] ] } $.each(cord.points,function(n,v){ newArray = newArray.concat(v) }) if(isNaN(cord.sensitivity)){ cord.sensitivity = regionViewerDetails.detector_sensitivity } regionEditorForm.find('[name="name"]').val(cord.name || regionEditorRegionsListValue) regionEditorWindow.find('.cord_name').text(cord.name || regionEditorRegionsListValue) regionEditorForm.find('[name="sensitivity"]').val(cord.sensitivity) regionEditorForm.find('[name="max_sensitivity"]').val(cord.max_sensitivity) regionEditorForm.find('[name="threshold"]').val(cord.threshold) regionEditorForm.find('[name="color_threshold"]').val(cord.color_threshold) regionEditorWindow.find('.canvas_holder canvas').remove() initLiveStream() regionEditorRegionsCanvas.val(newArray.join(',')) regionEditorRegionsCanvas.canvasAreaDraw({ imageUrl: placeholder.getData(placeholder.plcimg({ bgcolor: 'transparent', text: ' ', size: regionViewerDetails.detector_scale_x+'x'+regionViewerDetails.detector_scale_y })) }) drawPointsTable() } } regionEditorRegionsList.change(function(e){ initCanvas(); }) regionEditorWindow.on('change','[name]',function(){ var currentRegionId = getCurrentlySelectedRegionId() var el = $(this) var val = el.val() var key = el.attr('name') regionViewerDetails.cords[currentRegionId][key] = val saveCoords() }) regionEditorWindow.on('change','[point]',function(e){ var currentRegionId = getCurrentlySelectedRegionId() var points = []; $('[points]').each(function(n,v){ var el = $(this) var pointValueX = el.find('[point="x"]').val() if(pointValueX){ points.push([ pointValueX, el.find('[point="y"]').val() ]) } }) regionViewerDetails.cords[currentRegionId].points = points; initCanvas() }) regionEditorWindow.find('.erase').click(function(e){ var currentRegionId = getCurrentlySelectedRegionId() var newCoordinates = [] $.each(regionViewerDetails.cords,function(n,points){ if(points && points !== regionViewerDetails.cords[currentRegionId]){ newCoordinates.push(points) } }) regionViewerDetails.cords = newCoordinates.concat([]) if(Object.keys(regionViewerDetails.cords).length > 0){ initiateRegionList(); }else{ regionEditorForm.find('input').prop('disabled',true) regionEditorRegionsPoints.empty() regionEditorRegionsList.find('[value="'+currentRegionId+'"]').remove() $.aM.e.find('[detail="cords"]').val('{}').change() } }) regionEditorWindow.on('changed','#regions_canvas',function(e){ drawPointsTable() saveCoords() }) regionEditorForm.submit(function(e){ e.preventDefault() return false; }) regionEditorRegionsPoints .on('click','.delete',function(e){ var elParent = $(this).parents('tr') var points = elParent.attr('points') delete(regionViewerDetails.cords[regionEditorRegionsList.val()].points[points]) saveCoords() elParent.remove() regionEditorRegionsList.change() }) regionEditorWindow.on('click','.add',function(e){ regionEditorForm.find('input').prop('disabled',false) var randomId = $.ccio.gid(5); var newCoordinates = {} $.each(regionViewerDetails.cords,function(n,v){ if(v && v !== null && v !== 'null'){ newCoordinates[n] = v; } }) regionViewerDetails.cords = newCoordinates regionViewerDetails.cords[randomId] = createBlankCoorindateObject(randomId) regionEditorRegionsList.append(``) regionEditorRegionsList.val(randomId) regionEditorRegionsList.change() }) regionStillImage.change(function(e){ var dashboardSwitches = $.ccio.op().switches || {} if($(this).is(':checked')){ dashboardSwitches.regionStillImage = 1 }else{ dashboardSwitches.regionStillImage = "0" } $.ccio.op('switches',dashboardSwitches) initLiveStream() }).ready(function(e){ var dashboardSwitches = $.ccio.op().switches || {} if(dashboardSwitches.regionStillImage === 1){ regionStillImage.prop('checked',true) } }) $.loadRegionEditor = loadRegionEditor })