Easier multiselect in Wall Display, include Tag selection
parent
6d05a0806f
commit
5cbbf20fc9
|
@ -21,7 +21,7 @@
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: 0.2s;
|
transition: 0.2s;
|
||||||
z-index: 11;
|
z-index: 12;
|
||||||
border-radius: 0 0 5px 5px;
|
border-radius: 0 0 5px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#wallview-monitorList .active i{
|
#wallview-monitorList .active i{
|
||||||
display: inlin-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
#wallview-canvas .wallview-video {
|
#wallview-canvas .wallview-video {
|
||||||
|
@ -90,3 +90,15 @@
|
||||||
#wallview-canvas .wallview-video:hover .wallview-item-controls{
|
#wallview-canvas .wallview-video:hover .wallview-item-controls{
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#wallview-monitorList {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 11;
|
||||||
|
width: 300px;
|
||||||
|
height: 80vh;
|
||||||
|
background: rgba(0,0,0,0.6);
|
||||||
|
right: 0;
|
||||||
|
bottom: 10vh;
|
||||||
|
overflow: auto;
|
||||||
|
border-radius: 10px 0 0 10px;;
|
||||||
|
}
|
||||||
|
|
|
@ -40,18 +40,44 @@ function getWindowName(){
|
||||||
const theWindowChoice = urlParams.get('window');
|
const theWindowChoice = urlParams.get('window');
|
||||||
return theWindowChoice || '1'
|
return theWindowChoice || '1'
|
||||||
}
|
}
|
||||||
function drawMonitorListItem(monitor){
|
|
||||||
wallViewMonitorList.append(`<li><a class="dropdown-item" select-monitor="${monitor.mid}" href="#"><i class="fa fa-check"></i> ${monitor.name}</a></li>`)
|
|
||||||
}
|
|
||||||
function drawMonitorList(){
|
function drawMonitorList(){
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
$.get(getApiPrefix('monitor'),function(monitors){
|
$.get(getApiPrefix('monitor'),function(monitors){
|
||||||
$.each(monitors, function(n,monitor){
|
$.each(monitors, function(n,monitor){
|
||||||
if(monitor.mode !== 'stop' && monitor.mode !== 'idle'){
|
if(monitor.mode !== 'stop' && monitor.mode !== 'idle'){
|
||||||
loadedMonitors[monitor.mid] = monitor;
|
loadedMonitors[monitor.mid] = monitor;
|
||||||
drawMonitorListItem(monitor)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
var tags = getListOfTagsFromMonitors()
|
||||||
|
var monitorsOrdered = Object.values(loadedMonitors).sort((a, b) => a.name.localeCompare(b.name));
|
||||||
|
var allFound = [
|
||||||
|
{
|
||||||
|
attributes: `tag=""`,
|
||||||
|
class: `cursor-pointer wallview-open-monitor-group`,
|
||||||
|
color: 'forestgreen',
|
||||||
|
label: lang['All Monitors'],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
$.each(tags,function(tag,monitors){
|
||||||
|
allFound.push({
|
||||||
|
attributes: `tag="${tag}"`,
|
||||||
|
class: `cursor-pointer wallview-open-monitor-group`,
|
||||||
|
color: 'blue',
|
||||||
|
label: tag,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
$.each(monitorsOrdered,function(monitorKey,monitor){
|
||||||
|
var monitorId = monitor.mid
|
||||||
|
var label = monitor.name
|
||||||
|
allFound.push({
|
||||||
|
attributes: `select-monitor="${monitorId}"`,
|
||||||
|
class: `cursor-pointer`,
|
||||||
|
color: 'grey',
|
||||||
|
label,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
var html = allFound.map(item => `<div class="mb-1"><a class="btn d-block btn-primary btn-sm ${item.class}" ${item.attributes} href="#">${item.label}</a></div>`).join('')
|
||||||
|
wallViewMonitorList.html(html)
|
||||||
resolve(monitors)
|
resolve(monitors)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -481,14 +507,14 @@ function selectMonitor(monitorId, css){
|
||||||
});
|
});
|
||||||
initiateLiveGridPlayer(loadedMonitor, subStreamChannel)
|
initiateLiveGridPlayer(loadedMonitor, subStreamChannel)
|
||||||
attachVideoElementErrorHandler(monitorId)
|
attachVideoElementErrorHandler(monitorId)
|
||||||
getMonitorListItem(monitorId).addClass('active')
|
getMonitorListItem(monitorId).removeClass('btn-primary').addClass('btn-warning')
|
||||||
}
|
}
|
||||||
function deselectMonitor(monitorId){
|
function deselectMonitor(monitorId){
|
||||||
delete(selectedMonitors[monitorId])
|
delete(selectedMonitors[monitorId])
|
||||||
closeLiveGridPlayer(monitorId, true)
|
closeLiveGridPlayer(monitorId, true)
|
||||||
var monitorItem = wallViewCanvas.find(`[live-stream="${monitorId}"]`);
|
var monitorItem = wallViewCanvas.find(`[live-stream="${monitorId}"]`);
|
||||||
monitorItem.remove()
|
monitorItem.remove()
|
||||||
getMonitorListItem(monitorId).removeClass('active')
|
getMonitorListItem(monitorId).removeClass('btn-warning').addClass('btn-primary')
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCurrentLayout(){
|
function getCurrentLayout(){
|
||||||
|
@ -732,6 +758,31 @@ $(document).ready(function(){
|
||||||
.on('click', '.wallview-close-all', function(e){
|
.on('click', '.wallview-close-all', function(e){
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
closeAllMonitors()
|
closeAllMonitors()
|
||||||
|
})
|
||||||
|
.on('click', '.wallview-toggle-monitor-list', function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
wallViewMonitorList.toggleClass('d-none')
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
.on('click', '.wallview-open-monitor-group', function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
var el = $(this)
|
||||||
|
var tag = el.attr('tag')
|
||||||
|
if(!tag){
|
||||||
|
for(monitorId of Object.keys(loadedMonitors)){
|
||||||
|
selectMonitor(monitorId)
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
var tags = getListOfTagsFromMonitors()
|
||||||
|
var monitorIds = tags[tag]
|
||||||
|
for(monitorId of monitorIds){
|
||||||
|
selectMonitor(monitorId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
autoPlaceCurrentMonitorItems()
|
||||||
|
displayInfoScreen()
|
||||||
|
saveLayout()
|
||||||
|
return false;
|
||||||
});
|
});
|
||||||
createWebsocket(location.origin,{
|
createWebsocket(location.origin,{
|
||||||
path: websocketPath
|
path: websocketPath
|
||||||
|
|
|
@ -80,13 +80,9 @@
|
||||||
<% }) %>
|
<% }) %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown d-inline-block">
|
<a class="btn btn-secondary wallview-toggle-monitor-list" href="#"><%- lang.Monitors %></a>
|
||||||
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="monitorListButton" data-bs-toggle="dropdown" aria-expanded="false">
|
|
||||||
<%- lang.Monitors %>
|
|
||||||
</a>
|
|
||||||
<ul id="wallview-monitorList" class="dropdown-menu" aria-labelledby="monitorListButton"></ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div id="wallview-monitorList" class="d-none p-2"></div>
|
||||||
</div>
|
</div>
|
||||||
<script src="<%- urlPrefix %>assets/js/bs5.embed.utils.js"></script>
|
<script src="<%- urlPrefix %>assets/js/bs5.embed.utils.js"></script>
|
||||||
<script src="<%- urlPrefix %>assets/vendor/js/poseidon.js"></script>
|
<script src="<%- urlPrefix %>assets/vendor/js/poseidon.js"></script>
|
||||||
|
|
Loading…
Reference in New Issue