zoneminder/web/skins/classic/views/js/events.js

282 lines
9.0 KiB
JavaScript
Raw Normal View History

2019-02-07 02:31:34 +08:00
function thumbnail_onmouseover(event) {
var img = event.target;
img.src = '';
2019-02-07 02:31:34 +08:00
img.src = img.getAttribute('stream_src');
}
2019-02-07 02:31:34 +08:00
function thumbnail_onmouseout(event) {
var img = event.target;
img.src = '';
2019-02-07 02:31:34 +08:00
img.src = img.getAttribute('still_src');
}
function initThumbAnimation() {
$j('.colThumbnail img').each(function() {
this.addEventListener('mouseover', thumbnail_onmouseover, false);
this.addEventListener('mouseout', thumbnail_onmouseout, false);
});
}
2020-08-17 00:34:37 +08:00
// Returns the event id's of the selected rows
2020-08-16 04:27:58 +08:00
function getIdSelections() {
var table = $j('#eventTable');
2020-08-16 04:54:58 +08:00
return $j.map(table.bootstrapTable('getSelections'), function(row) {
return row.Id.replace(/(<([^>]+)>)/gi, ''); // strip the html from the element before sending
2020-08-16 04:54:58 +08:00
});
}
2020-08-17 00:34:37 +08:00
// Returns a boolen to indicate at least one selected row is archived
2020-08-16 04:27:58 +08:00
function getArchivedSelections() {
2020-08-16 04:54:58 +08:00
var table = $j('#eventTable');
var selection = $j.map(table.bootstrapTable('getSelections'), function(row) {
return row.Archived;
});
return selection.includes("Yes");
}
2020-09-13 23:39:51 +08:00
// Load the Delete Confirmation Modal HTML via Ajax call
function getDelConfirmModal() {
$j.getJSON(thisUrl + '?request=modal&modal=delconfirm')
.done(function(data) {
if ( $j('#deleteConfirm').length ) {
$j('#deleteConfirm').replaceWith(data.html);
} else {
$j("body").append(data.html);
}
manageDelConfirmModalBtns();
})
.fail(logAjaxFail);
2020-09-13 23:39:51 +08:00
}
2020-09-17 07:22:37 +08:00
// Manage the DELETE CONFIRMATION modal button
2020-09-13 23:39:51 +08:00
function manageDelConfirmModalBtns() {
document.getElementById("delConfirmBtn").addEventListener("click", function onDelConfirmClick(evt) {
if ( ! canEditEvents ) {
enoperm();
2020-09-13 23:39:51 +08:00
return;
}
var selections = getIdSelections();
evt.preventDefault();
$j.getJSON(thisUrl + '?request=events&action=delete&eids[]='+selections.join('&eids[]='))
2020-09-14 00:25:31 +08:00
.done( function(data) {
$j('#eventTable').bootstrapTable('refresh');
2020-09-17 07:22:37 +08:00
window.location.reload(true);
2020-09-14 00:25:31 +08:00
})
.fail(logAjaxFail);
2020-09-13 23:39:51 +08:00
});
// Manage the CANCEL modal button
document.getElementById("delCancelBtn").addEventListener("click", function onDelCancelClick(evt) {
$j('#deleteConfirm').modal('hide');
});
}
function getEventDetailModal(eid) {
$j.getJSON(thisUrl + '?request=modal&modal=eventdetail&eids[]=' + eid)
2020-09-16 20:57:44 +08:00
.done(function(data) {
if ( $j('#eventDetailModal').length ) {
$j('#eventDetailModal').replaceWith(data.html);
} else {
$j("body").append(data.html);
}
$j('#eventDetailModal').modal('show');
// Manage the Save button
$j('#eventDetailSaveBtn').click(function(evt) {
evt.preventDefault();
$j('#eventDetailForm').submit();
});
})
.fail(logAjaxFail);
}
function initPage() {
2020-08-19 05:57:03 +08:00
var backBtn = $j('#backBtn');
2020-08-17 00:34:37 +08:00
var viewBtn = $j('#viewBtn');
var archiveBtn = $j('#archiveBtn');
var unarchiveBtn = $j('#unarchiveBtn');
var editBtn = $j('#editBtn');
var exportBtn = $j('#exportBtn');
var downloadBtn = $j('#downloadBtn');
var deleteBtn = $j('#deleteBtn');
var table = $j('#eventTable');
2020-09-13 23:39:51 +08:00
// Load the delete confirmation modal into the DOM
getDelConfirmModal();
2020-08-17 05:02:43 +08:00
// Init the bootstrap-table
2020-09-24 03:32:40 +08:00
table.bootstrapTable({icons: icons});
2020-08-17 05:02:43 +08:00
// Hide these columns on first run when no cookie is saved
if ( !getCookie("zmEventsTable.bs.table.columns") ) {
table.bootstrapTable('hideColumn', 'Archived');
table.bootstrapTable('hideColumn', 'Emailed');
}
2020-08-17 05:02:43 +08:00
// enable or disable buttons based on current selection and user rights
2020-08-17 00:34:37 +08:00
table.on('check.bs.table uncheck.bs.table ' +
'check-all.bs.table uncheck-all.bs.table',
function() {
selections = table.bootstrapTable('getSelections');
viewBtn.prop('disabled', !(selections.length && canViewEvents));
archiveBtn.prop('disabled', !(selections.length && canEditEvents));
2020-08-17 00:34:37 +08:00
unarchiveBtn.prop('disabled', !(getArchivedSelections()) && canEditEvents);
editBtn.prop('disabled', !(selections.length && canEditEvents));
exportBtn.prop('disabled', !(selections.length && canViewEvents));
downloadBtn.prop('disabled', !(selections.length && canViewEvents));
deleteBtn.prop('disabled', !(selections.length && canEditEvents));
2020-08-17 00:34:37 +08:00
});
2020-08-20 01:07:31 +08:00
// Don't enable the back button if there is no previous zm page to go back to
backBtn.prop('disabled', !document.referrer.length);
// Setup the thumbnail video animation
initThumbAnimation();
2020-08-19 01:40:27 +08:00
// Some toolbar events break the thumbnail animation, so re-init eventlistener
table.on('all.bs.table', initThumbAnimation);
2020-08-19 01:40:27 +08:00
// Manage the BACK button
document.getElementById("backBtn").addEventListener("click", function onBackClick(evt) {
evt.preventDefault();
2020-08-19 05:57:03 +08:00
window.history.back();
2019-02-07 02:31:34 +08:00
});
2020-08-20 01:07:31 +08:00
// Manage the REFRESH Button
document.getElementById("refreshBtn").addEventListener("click", function onRefreshClick(evt) {
evt.preventDefault();
window.location.reload(true);
});
2020-08-20 01:07:31 +08:00
// Manage the TIMELINE Button
document.getElementById("tlineBtn").addEventListener("click", function onTlineClick(evt) {
evt.preventDefault();
window.location.assign('?view=timeline'+filterQuery);
2019-02-07 02:31:34 +08:00
});
2020-08-20 01:07:31 +08:00
2020-08-16 04:27:58 +08:00
// Manage the VIEW button
document.getElementById("viewBtn").addEventListener("click", function onViewClick(evt) {
var selections = getIdSelections();
2020-08-16 04:54:58 +08:00
2020-08-16 04:27:58 +08:00
evt.preventDefault();
var filter = '&filter[Query][terms][0][attr]=Id&filter[Query][terms][0][op]=%3D%5B%5D&filter[Query][terms][0][val]='+selections.join('%2C');
window.location.href = thisUrl+'?view=event&eid='+selections[0]+filter+sortQuery+'&page=1&play=1';
});
2020-08-20 01:07:31 +08:00
2020-08-16 04:27:58 +08:00
// Manage the ARCHIVE button
document.getElementById("archiveBtn").addEventListener("click", function onArchiveClick(evt) {
var selections = getIdSelections();
2020-08-16 04:54:58 +08:00
2020-08-16 04:27:58 +08:00
evt.preventDefault();
$j.getJSON(thisUrl + '?request=events&action=archive&eids[]='+selections.join('&eids[]='))
.done( function(data) {
$j('#eventTable').bootstrapTable('refresh');
window.location.reload(true);
})
.fail(logAjaxFail);
2020-08-16 04:54:58 +08:00
});
2020-08-20 01:07:31 +08:00
2020-08-16 04:27:58 +08:00
// Manage the UNARCHIVE button
document.getElementById("unarchiveBtn").addEventListener("click", function onUnarchiveClick(evt) {
if ( ! canEditEvents ) {
enoperm();
2020-08-16 04:27:58 +08:00
return;
}
var selections = getIdSelections();
console.log(selections);
2020-08-16 04:54:58 +08:00
2020-08-16 04:27:58 +08:00
evt.preventDefault();
$j.getJSON(thisUrl + '?request=events&action=unarchive&eids[]='+selections.join('&eids[]='))
.done( function(data) {
$j('#eventTable').bootstrapTable('refresh');
window.location.reload(true);
})
.fail(logAjaxFail);
2020-08-16 04:54:58 +08:00
//window.location.reload(true);
2020-08-16 04:27:58 +08:00
});
2020-08-20 01:07:31 +08:00
2020-08-16 04:27:58 +08:00
// Manage the EDIT button
document.getElementById("editBtn").addEventListener("click", function onEditClick(evt) {
if ( ! canEditEvents ) {
enoperm();
2020-08-16 04:27:58 +08:00
return;
}
2020-08-16 04:54:58 +08:00
2020-08-16 04:27:58 +08:00
var selections = getIdSelections();
2020-08-16 04:54:58 +08:00
2020-08-16 04:27:58 +08:00
evt.preventDefault();
$j.getJSON(thisUrl + '?request=modal&modal=eventdetail&eids[]='+selections.join('&eids[]='))
2020-09-16 20:57:44 +08:00
.done(function(data) {
if ( $j('#eventDetailModal').length ) {
$j('#eventDetailModal').replaceWith(data.html);
} else {
$j("body").append(data.html);
}
$j('#eventDetailModal').modal('show');
// Manage the Save button
$j('#eventDetailSaveBtn').click(function(evt) {
evt.preventDefault();
$j('#eventDetailForm').submit();
});
})
.fail(logAjaxFail);
2020-08-16 04:27:58 +08:00
});
2020-08-20 01:07:31 +08:00
2020-08-16 04:27:58 +08:00
// Manage the EXPORT button
document.getElementById("exportBtn").addEventListener("click", function onExportClick(evt) {
var selections = getIdSelections();
2020-08-16 04:54:58 +08:00
2020-08-16 04:27:58 +08:00
evt.preventDefault();
window.location.assign('?view=export&eids[]='+selections.join('&eids[]='));
});
2020-08-20 01:07:31 +08:00
2020-08-16 04:27:58 +08:00
// Manage the DOWNLOAD VIDEO button
document.getElementById("downloadBtn").addEventListener("click", function onDownloadClick(evt) {
var selections = getIdSelections();
2020-08-16 04:54:58 +08:00
2020-08-16 04:27:58 +08:00
evt.preventDefault();
2020-09-30 22:12:54 +08:00
$j.getJSON(thisUrl + '?request=modal&modal=download&eids[]='+selections.join('&eids[]='))
.done(function(data) {
if ( $j('#downloadModal').length ) {
$j('#downloadModal').replaceWith(data.html);
} else {
$j("body").append(data.html);
}
$j('#downloadModal').modal('show');
// Manage the GENERATE DOWNLOAD button
$j('#exportButton').click(exportEvent);
})
.fail(logAjaxFail);
2020-08-16 04:27:58 +08:00
});
2020-08-20 01:07:31 +08:00
2020-08-16 04:27:58 +08:00
// Manage the DELETE button
document.getElementById("deleteBtn").addEventListener("click", function onDeleteClick(evt) {
if ( ! canEditEvents ) {
enoperm();
2020-08-16 04:27:58 +08:00
return;
}
2020-08-18 21:06:58 +08:00
evt.preventDefault();
$j('#deleteConfirm').modal('show');
});
// Manage the eventdetail links in the events list
$j(".eDetailLink").click(function(evt) {
evt.preventDefault();
var eid = $j(this).data('eid');
getEventDetailModal(eid);
});
// The table is initially given a hidden style, so now that we are done rendering, show it
table.show();
}
2020-08-16 04:27:58 +08:00
$j(document).ready(function() {
initPage();
});