2022-06-25 07:10:17 +00:00
|
|
|
$(document).ready(function(e){
|
|
|
|
var theEnclosure = $('#tab-fileBinView')
|
|
|
|
var monitorsList = theEnclosure.find('.monitors_list')
|
|
|
|
var dateSelector = theEnclosure.find('.date_selector')
|
|
|
|
var fileBinDrawArea = $('#fileBin_draw_area')
|
2022-06-27 07:31:27 +00:00
|
|
|
var fileBinPreviewArea = $('#fileBin_preview_area')
|
2022-06-25 07:10:17 +00:00
|
|
|
var loadedVideosInMemory = {};
|
|
|
|
function openFileBinView(monitorId,startDate,endDate){
|
|
|
|
drawFileBinViewElements(monitorId,startDate,endDate)
|
|
|
|
}
|
|
|
|
function getSelectedTime(asUtc){
|
|
|
|
var dateRange = dateSelector.data('daterangepicker')
|
|
|
|
var startDate = dateRange.startDate.clone()
|
|
|
|
var endDate = dateRange.endDate.clone()
|
|
|
|
if(asUtc){
|
|
|
|
startDate = startDate.utc()
|
|
|
|
endDate = endDate.utc()
|
|
|
|
}
|
|
|
|
startDate = startDate.format('YYYY-MM-DDTHH:mm:ss')
|
|
|
|
endDate = endDate.format('YYYY-MM-DDTHH:mm:ss')
|
|
|
|
return {
|
|
|
|
startDate: startDate,
|
|
|
|
endDate: endDate
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dateSelector.daterangepicker({
|
|
|
|
startDate: moment().utc().subtract(2, 'days'),
|
|
|
|
endDate: moment().utc(),
|
|
|
|
timePicker: true,
|
|
|
|
locale: {
|
|
|
|
format: 'YYYY/MM/DD hh:mm:ss A'
|
|
|
|
}
|
|
|
|
}, function(start, end, label) {
|
|
|
|
drawFileBinViewElements()
|
|
|
|
})
|
|
|
|
monitorsList.change(function(){
|
|
|
|
drawFileBinViewElements()
|
|
|
|
})
|
|
|
|
function drawFileBinViewElements(selectedMonitor,startDate,endDate){
|
|
|
|
var dateRange = getSelectedTime(false)
|
|
|
|
if(!startDate)startDate = dateRange.startDate
|
|
|
|
if(!endDate)endDate = dateRange.endDate
|
|
|
|
if(!selectedMonitor)selectedMonitor = monitorsList.val()
|
|
|
|
var queryString = ['start=' + startDate,'end=' + endDate,'limit=0']
|
|
|
|
var frameIconsHtml = ''
|
|
|
|
var apiURL = getApiPrefix('fileBin') + '/' + selectedMonitor;
|
|
|
|
var fileBinData = []
|
|
|
|
loadedVideosInMemory = {}
|
|
|
|
$.getJSON(apiURL + '?' + queryString.join('&'),function(data){
|
2022-06-27 07:31:27 +00:00
|
|
|
fileBinDrawArea.bootstrapTable('destroy')
|
2022-06-25 07:10:17 +00:00
|
|
|
fileBinDrawArea.bootstrapTable({
|
|
|
|
pagination: true,
|
|
|
|
search: true,
|
|
|
|
columns: [
|
2022-06-27 22:49:24 +00:00
|
|
|
{
|
|
|
|
field: 'monitorName',
|
|
|
|
title: lang['Monitor']
|
|
|
|
},
|
2022-06-25 07:10:17 +00:00
|
|
|
{
|
2022-06-26 07:57:18 +00:00
|
|
|
field: 'name',
|
2022-06-25 07:10:17 +00:00
|
|
|
title: lang['Filename']
|
2022-06-26 07:57:18 +00:00
|
|
|
},
|
|
|
|
{
|
2022-06-25 07:10:17 +00:00
|
|
|
field: 'time',
|
|
|
|
title: lang['Time Created']
|
2022-06-26 07:57:18 +00:00
|
|
|
},
|
2022-06-27 22:49:24 +00:00
|
|
|
{
|
|
|
|
field: 'size',
|
|
|
|
title: ''
|
|
|
|
},
|
2022-06-26 07:57:18 +00:00
|
|
|
{
|
2022-06-27 07:31:27 +00:00
|
|
|
field: 'buttons',
|
2022-06-27 22:49:24 +00:00
|
|
|
title: ''
|
2022-06-25 07:10:17 +00:00
|
|
|
}
|
|
|
|
],
|
2022-06-26 07:57:18 +00:00
|
|
|
data: data.files.map((file) => {
|
2022-07-05 14:46:05 +00:00
|
|
|
var href = getApiPrefix('fileBin') + '/' + selectedMonitor + '/' + file.name
|
2022-06-26 07:57:18 +00:00
|
|
|
return {
|
2022-06-27 22:49:24 +00:00
|
|
|
monitorName: `<b>${loadedMonitors[file.mid]?.name || file.mid}</b>`,
|
2022-06-26 07:57:18 +00:00
|
|
|
name: file.name,
|
2022-06-27 22:49:24 +00:00
|
|
|
time: `
|
|
|
|
<div><b>${lang.Created}</b> ${formattedTime(file.time, 'DD-MM-YYYY hh:mm:ss AA')}</div>
|
|
|
|
${file.details.start ? `<div><b>${lang.Started}</b> ${formattedTime(file.details.start, 'DD-MM-YYYY hh:mm:ss AA')}</div>` : ''}
|
|
|
|
${file.details.end ? `<div><b>${lang.Ended}</b> ${formattedTime(file.details.end, 'DD-MM-YYYY hh:mm:ss AA')}</div>` : ''}
|
|
|
|
`,
|
|
|
|
size: convertKbToHumanSize(file.size),
|
2022-06-27 07:31:27 +00:00
|
|
|
buttons: `
|
2022-07-05 14:46:05 +00:00
|
|
|
<a class="btn btn-sm btn-primary" href="${href}" download title="${lang.Download}"><i class="fa fa-download"></i></a>
|
|
|
|
${file.details.video ? `<a class="btn btn-sm btn-primary preview-video" href="${href}" title="${lang.Play}"><i class="fa fa-play"></i></a>` : ``}
|
2022-06-27 07:31:27 +00:00
|
|
|
`,
|
2022-06-26 07:57:18 +00:00
|
|
|
}
|
|
|
|
})
|
2022-06-25 07:10:17 +00:00
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
2022-06-27 22:03:55 +00:00
|
|
|
function drawPreviewVideo(href){
|
|
|
|
fileBinPreviewArea.html(`<video class="video_video" style="width:100%" autoplay controls preload loop src="${href}"></video>`)
|
|
|
|
}
|
2022-06-27 07:31:27 +00:00
|
|
|
$('body')
|
2022-06-27 22:03:55 +00:00
|
|
|
.on('click','.open-fileBin-video',function(e){
|
|
|
|
e.preventDefault()
|
|
|
|
var href = $(this).attr('href')
|
2022-06-25 07:10:17 +00:00
|
|
|
openTab(`fileBinView`,{},null)
|
2022-06-27 22:03:55 +00:00
|
|
|
drawPreviewVideo(href)
|
|
|
|
return false;
|
2022-06-27 07:31:27 +00:00
|
|
|
});
|
|
|
|
theEnclosure
|
|
|
|
.on('click','.preview-video',function(e){
|
|
|
|
e.preventDefault()
|
|
|
|
var href = $(this).attr('href')
|
2022-06-27 22:03:55 +00:00
|
|
|
drawPreviewVideo(href)
|
2022-06-27 07:31:27 +00:00
|
|
|
return false;
|
2022-06-25 07:10:17 +00:00
|
|
|
})
|
|
|
|
addOnTabOpen('fileBinView', function () {
|
|
|
|
drawMonitorListToSelector(monitorsList)
|
|
|
|
drawFileBinViewElements()
|
|
|
|
})
|
|
|
|
addOnTabReopen('fileBinView', function () {
|
|
|
|
var theSelected = `${monitorsList.val()}`
|
|
|
|
drawMonitorListToSelector(monitorsList)
|
|
|
|
monitorsList.val(theSelected)
|
|
|
|
})
|
2022-06-27 07:31:27 +00:00
|
|
|
addOnTabAway('fileBinView', function () {
|
|
|
|
fileBinPreviewArea.find('video')[0].pause()
|
|
|
|
})
|
2022-06-25 07:10:17 +00:00
|
|
|
})
|