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;