diff --git a/web/assets/css/bs5.powerVideo.css b/web/assets/css/bs5.powerVideo.css index 42f23544..c3596f2a 100644 --- a/web/assets/css/bs5.powerVideo.css +++ b/web/assets/css/bs5.powerVideo.css @@ -183,3 +183,9 @@ #powerVideo .vis-labelset .vis-label { color: #fff; } + +#powerVideo .videoPlayer-detection-info-buttons { + position: absolute; + top: 5px; + right: 5px; +} diff --git a/web/assets/js/bs5.dashboard-base.js b/web/assets/js/bs5.dashboard-base.js index a098f15d..eca99660 100644 --- a/web/assets/js/bs5.dashboard-base.js +++ b/web/assets/js/bs5.dashboard-base.js @@ -883,6 +883,10 @@ function downloadFile(url,filename) { link.click(); document.body.removeChild(link); } +function getFilenameFromUrl(url) { + const parts = url.split("/"); + return parts[parts.length - 1]; +} function notifyIfActionFailed(data){ if(data.ok === false){ new PNotify({ diff --git a/web/assets/js/bs5.powerVideo.js b/web/assets/js/bs5.powerVideo.js index 00a55b3c..3bbe57ac 100644 --- a/web/assets/js/bs5.powerVideo.js +++ b/web/assets/js/bs5.powerVideo.js @@ -472,6 +472,10 @@ $(document).ready(function(e){ if(!monitorSlotPlaySpeeds)monitorSlotPlaySpeeds[video.mid] = {} powerVideoMonitorViewsElement.append(`
+
+ + +
@@ -566,9 +570,15 @@ $(document).ready(function(e){ var selectedMonitors = Object.keys(form).filter(key => form[key] == '1') return selectedMonitors } + function getActiveVideoInSlot(monitorId){ + return powerVideoMonitorViewsElement.find(`.videoPlayer[data-mid="${monitorId}"] video.videoNow`)[0] + } function getAllActiveVideosInSlots(){ return powerVideoMonitorViewsElement.find('video.videoNow') } + function getActiveVideoRow(monitorId){ + return currentlyPlayingVideos[monitorId] + } function pauseAllSlots(){ getAllActiveVideosInSlots().each(function(n,video){ if(!video.paused)video.pause() @@ -669,18 +679,27 @@ $(document).ready(function(e){ }) lastPowerVideoSelectedMonitors = ([]).concat(monitorIdsSelectedNow || []) } - function getFilenameFromUrl(url) { - const parts = url.split("/"); - return parts[parts.length - 1]; + function downloadPlayingVideo(video){ + if(video.currentSrc){ + var filename = getFilenameFromUrl(video.currentSrc) + downloadFile(video.currentSrc,filename) + } } function downloadAllPlayingVideos(){ getAllActiveVideosInSlots().each(function(n,video){ - if(video.currentSrc){ - var filename = getFilenameFromUrl(video.currentSrc) - downloadFile(video.currentSrc,filename) - } + downloadPlayingVideo(video) }) } + function openVideoPlayerTabFromViewer(el){ + var monitorId = el.attr('data-mid') || el.parents('[data-mid]').attr('data-mid') + var video = getActiveVideoRow(monitorId) + createVideoPlayerTab(video) + } + function downloadPlayingVideoTabFromViewer(el){ + var monitorId = el.attr('data-mid') || el.parents('[data-mid]').attr('data-mid') + var video = getActiveVideoInSlot(monitorId) + downloadPlayingVideo(video) + } powerVideoMonitorsListElement.on('change','input',onPowerVideoSettingsChange); powerVideoVideoLimitElement.change(onPowerVideoSettingsChange); powerVideoEventLimitElement.change(onPowerVideoSettingsChange); @@ -695,6 +714,14 @@ $(document).ready(function(e){ var el = $(this) var controlType = el.attr('powerVideo-control') switch(controlType){ + // single video affected + case'downloadVideo': + downloadPlayingVideoTabFromViewer(el) + break; + case'openVideoPlayer': + openVideoPlayerTabFromViewer(el) + break; + // all videos affected case'downloadPlaying': downloadAllPlayingVideos() break;