293 lines
11 KiB
JavaScript
293 lines
11 KiB
JavaScript
/*
|
|
* Admin - System Logs page scripts.
|
|
*/
|
|
|
|
(function (win, doc, undef)
|
|
{
|
|
"use strict";
|
|
let sl = sbc.sysLogs = { data: {}, $pnl: {}, $frm: {}, $ctrl: {}, $dlg: {} };
|
|
let $pnl = sl.$pnl; let $frm = sl.$frm; let $ctrl = sl.$ctrl; let $dlg = sl.$dlg;
|
|
|
|
//--------------------------------------------------------------
|
|
sl.refreshFolders = function (delay)
|
|
{
|
|
if (!sl.data.awaitingRefreshFoldersResponse)
|
|
{
|
|
sl.clearFiles();
|
|
//$pnl.msgs.hide().empty().append($('<div class="sbc-message">' + sbc.msg.dataQuerying + '</div>')).fadeIn(200);
|
|
}
|
|
sbc.ajax.refreshFolders = sbc.ajax.refreshFolders || { url: sbc.url.base + 'System/Ajax/Logs/GetFolders', formSel: sl.$frm.filter, callbackFn: sl.doRefreshFolders };
|
|
sbc.doAjaxRequest(sbc.ajax.refreshFolders, delay || 50);
|
|
sl.data.awaitingRefreshFoldersResponse = true;
|
|
}
|
|
sl.doRefreshFolders = function (response)
|
|
{
|
|
//sbc.debug('doRefreshFolders', response);
|
|
delete sl.data.awaitingRefreshFoldersResponse;
|
|
sl.clearFilterFolders();
|
|
sbc.refreshControlValues(response.controlValues);
|
|
$pnl.msgs.hide().empty();
|
|
if (!response.success) return;
|
|
// Folders.
|
|
var items = response.folders;
|
|
if (!items.length)
|
|
return $pnl.msgs.append($('<div class="sbc-message">' + sbc.msg.dataNoneFound + '</div>')).fadeIn(500);
|
|
for (const item of items)
|
|
$ctrl.cbFolders.append($('<option value="' + item.name + '">' + item.name + '</option>'));
|
|
if (sbc.data.logFolder) $ctrl.cbFolders.val(sbc.data.logFolder);
|
|
if (!$ctrl.cbFolders.val()) $ctrl.cbFolders.val(items[0].name);
|
|
delete sbc.data.logFolder;
|
|
if ($ctrl.cbFolders.val()) $ctrl.cbFolders.trigger('change');
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
sl.clearFilterFolders = function ()
|
|
{
|
|
sl.clearFilterYears();
|
|
$('option', $ctrl.cbFolders).remove();
|
|
}
|
|
sl.clearFilterYears = function ()
|
|
{
|
|
sl.clearFilterMonths();
|
|
$('option', $ctrl.cbYears).remove();
|
|
}
|
|
sl.clearFilterMonths = function ()
|
|
{
|
|
sl.clearFiles();
|
|
$('option', $ctrl.cbMonths).remove();
|
|
}
|
|
sl.clearFiles = function ()
|
|
{
|
|
$pnl.msgs.hide().empty();
|
|
$pnl.list.find('tbody tr').remove();
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
sl.refreshYears = function (delay)
|
|
{
|
|
if (!sl.data.awaitingRefreshYearsResponse)
|
|
{
|
|
sl.clearFiles();
|
|
//$pnl.msgs.hide().empty().append($('<div class="sbc-message">' + sbc.msg.dataQuerying + '</div>')).fadeIn(200);
|
|
}
|
|
sbc.ajax.refreshYears = sbc.ajax.refreshYears || { url: sbc.url.base + 'System/Ajax/Logs/GetYears', formSel: sl.$frm.filter, callbackFn: sl.doRefreshYears };
|
|
sbc.doAjaxRequest(sbc.ajax.refreshYears, delay || 50);
|
|
sl.data.awaitingRefreshYearsResponse = true;
|
|
}
|
|
sl.doRefreshYears = function (response)
|
|
{
|
|
//sbc.debug('doRefreshYears', response);
|
|
delete sl.data.awaitingRefreshYearsResponse;
|
|
sl.clearFilterYears();
|
|
sbc.refreshControlValues(response.controlValues);
|
|
$pnl.msgs.hide().empty();
|
|
if (!response.success) return;
|
|
// Years.
|
|
var items = response.years;
|
|
if (!items.length)
|
|
return $pnl.msgs.append($('<div class="sbc-message">' + sbc.msg.dataNoneFound + '</div>')).fadeIn(500);
|
|
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
|
$ctrl.cbYears.append($('<option value="' + items[itemIdx].name + '">' + items[itemIdx].name + '</option>'));
|
|
if (sbc.data.logYear) $ctrl.cbYears.val(sbc.data.logYear);
|
|
delete sbc.data.logYear;
|
|
if ($ctrl.cbYears.val()) $ctrl.cbYears.trigger('change');
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
sl.refreshMonths = function (delay)
|
|
{
|
|
if (!sl.data.awaitingRefreshMonthsResponse)
|
|
{
|
|
sl.clearFiles();
|
|
//$pnl.msgs.hide().empty().append($('<div class="sbc-message">' + sbc.msg.dataQuerying + '</div>')).fadeIn(200);
|
|
}
|
|
sbc.ajax.refreshMonths = sbc.ajax.refreshMonths || { url: sbc.url.base + 'System/Ajax/Logs/GetMonths', formSel: sl.$frm.filter, callbackFn: sl.doRefreshMonths };
|
|
sbc.doAjaxRequest(sbc.ajax.refreshMonths, delay || 50);
|
|
sl.data.awaitingRefreshMonthsResponse = true;
|
|
}
|
|
sl.doRefreshMonths = function (response)
|
|
{
|
|
//sbc.debug('doRefreshMonths', response);
|
|
delete sl.data.awaitingRefreshMonthsResponse;
|
|
sl.clearFilterMonths();
|
|
sbc.refreshControlValues(response.controlValues);
|
|
$pnl.msgs.hide().empty();
|
|
if (!response.success) return;
|
|
sbc.data.logYear = $ctrl.cbYears.val();
|
|
// Months.
|
|
var items = response.months;
|
|
if (!items.length)
|
|
return $pnl.msgs.append($('<div class="sbc-message">' + sbc.msg.dataNoneFound + '</div>')).fadeIn(500);
|
|
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
|
$ctrl.cbMonths.append($('<option value="' + items[itemIdx].name + '">' + items[itemIdx].name + '</option>'));
|
|
if (sbc.data.logMonth) $ctrl.cbMonths.val(sbc.data.logMonth);
|
|
if (!$ctrl.cbMonths.val() && items.length) $ctrl.cbMonths.val(items[0].name);
|
|
delete sbc.data.logMonth;
|
|
if ($ctrl.cbMonths.val()) $ctrl.cbMonths.trigger('change');
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
sl.refreshFiles = function (delay)
|
|
{
|
|
if (!sl.data.awaitingRefreshFilesResponse)
|
|
{
|
|
sl.clearFiles();
|
|
//$pnl.msgs.hide().empty().append($('<div class="sbc-message">' + sbc.msg.dataQuerying + '</div>')).fadeIn(200);
|
|
}
|
|
sbc.ajax.refreshFiles = sbc.ajax.refreshFiles || { url: sbc.url.base + 'System/Ajax/Logs/GetFiles', formSel: sl.$frm.filter, callbackFn: sl.doRefreshFiles };
|
|
sbc.doAjaxRequest(sbc.ajax.refreshFiles, delay || 50);
|
|
sl.data.awaitingRefreshFilesResponse = true;
|
|
}
|
|
sl.doRefreshFiles = function (response)
|
|
{
|
|
//sbc.debug('doRefreshFiles', response);
|
|
delete sl.data.awaitingRefreshFilesResponse;
|
|
sl.clearFiles();
|
|
sbc.refreshControlValues(response.controlValues);
|
|
if (!response.success) return;
|
|
sbc.data.logMonth = $ctrl.cbMonths.val();
|
|
// Files.
|
|
var items = response.files;
|
|
sl.data.files = response.files;
|
|
if (!(items || []).length)
|
|
return $pnl.msgs.append($('<div class="sbc-message">' + sbc.msg.dataNoneFound + '</div>')).fadeIn(500);
|
|
for (let itemIdx = 0; itemIdx < items.length; itemIdx++)
|
|
$pnl.list.append(sl.populateItem(sl.getFileTemplate(), items[itemIdx]));
|
|
$pnl.list.fadeIn(50);
|
|
}
|
|
sl.populateItem = function ($item, item)
|
|
{
|
|
if (!item) return $item;
|
|
$item.off('click').on('click', function () { sl.showFile(item.name) });
|
|
$('.Filename', $item).text(item.name);
|
|
$('.Updated', $item).text(item.updateFmt);
|
|
$('.Size', $item).text(sbc.formatFileSize(item.size, 2));
|
|
return $item;
|
|
}
|
|
sl.getFileTemplate = function ()
|
|
{
|
|
return $('.sbc-panel-item-template .sbc-panel-item.LogFile', $pnl.results).clone();
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
sl.showFile = function (filename, delay)
|
|
{
|
|
$('.FilterLogFilename', $frm.filter).val(filename);
|
|
sl.setFileTitle(filename);
|
|
if (!sl.data.awaitingGetFileResponse)
|
|
{
|
|
sl.setFileData($('<div class="sbc-message">' + sbc.msg.dataQuerying + '</div>'));
|
|
sl.openFileDlg();
|
|
}
|
|
sbc.ajax.getFile = sbc.ajax.getFile || { url: sbc.url.base + 'System/Ajax/Logs/GetFile', formSel: sl.$frm.filter, callbackFn: sl.onShowFile };
|
|
sbc.doAjaxRequest(sbc.ajax.getFile, delay || 50);
|
|
sl.data.awaitingGetFileResponse = true;
|
|
}
|
|
sl.onShowFile = function (response)
|
|
{
|
|
//sbc.debug('doGetFiles', response);
|
|
delete sl.data.awaitingGetFileResponse;
|
|
$pnl.msgs.hide().empty();
|
|
if (!response.success) return;
|
|
|
|
// Configure file action buttons.
|
|
let files = sl.data.files;
|
|
let filename = response.file.name;
|
|
$ctrl.filePrev.prop('disabled', (files || []).length < 2 || !filename || files[0].name == filename);
|
|
$ctrl.fileNext.prop('disabled', (files || []).length < 2 || !filename || files[files.length - 1].name == filename);
|
|
|
|
// Display table details.
|
|
sl.setFileTitle(filename || response.popupTitle);
|
|
$('.LogFilename', $dlg.file).val(filename);
|
|
sl.setFileData(response.file.html);
|
|
sl.openFileDlg();
|
|
}
|
|
sl.openFileDlg = function ()
|
|
{
|
|
sbc.openDialog($dlg.file, $(win).width(), $(win).height());
|
|
}
|
|
sl.setFileTitle = function (filename)
|
|
{
|
|
$dlg.file.dialog('option', 'title', "File: " + filename);
|
|
}
|
|
sl.setFileData = function (data)
|
|
{
|
|
$('.FileData', $dlg.file).html(data);
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
sl.onCreateLogFileDlg = function ()
|
|
{
|
|
let $btnPane = $('#dlgLogFile + div.ui-dialog-buttonpane');
|
|
$pnl.logFileActions = $('<div id="LogFileActions" style="float:left;">');
|
|
$ctrl.filePrev = $('<button type="button" class="ui-button ui-corner-all ui-widget">').prop('value', 'LogFilePrev').text('Prev').on('click', sl.prevLogFile);
|
|
$ctrl.fileNext = $('<button type="button" class="ui-button ui-corner-all ui-widget">').prop('value', 'LogFileNext').text('Next').on('click', sl.nextLogFile);
|
|
$btnPane.append($pnl.logFileActions.append($ctrl.filePrev).append($ctrl.fileNext));
|
|
}
|
|
sl.prevLogFile = function ()
|
|
{
|
|
let files = sl.data.files;
|
|
if ((files || []).length < 2) return;
|
|
let filename = $('.LogFilename', $dlg.file).val();
|
|
let filenamePrev = files[files.length - 1].name;
|
|
for (let fileIdx = 0; fileIdx < files.length; fileIdx++)
|
|
{
|
|
let filenameNext = files[fileIdx].name;
|
|
if (filenameNext == filename)
|
|
{
|
|
sl.showFile(filenamePrev);
|
|
return;
|
|
}
|
|
filenamePrev = filenameNext;
|
|
}
|
|
}
|
|
sl.nextLogFile = function ()
|
|
{
|
|
let files = sl.data.files;
|
|
if ((files || []).length < 2) return;
|
|
let filename = $('.LogFilename', $dlg.file).val();
|
|
let filenameNext = files[0].name;
|
|
for (let fileIdx = files.length - 1; fileIdx >= 0; fileIdx--)
|
|
{
|
|
let filenamePrev = files[fileIdx].name;
|
|
if (filenamePrev == filename)
|
|
{
|
|
sl.showFile(filenameNext);
|
|
return;
|
|
}
|
|
filenameNext = filenamePrev;
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------
|
|
$(function ()
|
|
{
|
|
$pnl.logFiles = $('.LogFiles');
|
|
$pnl.filter = $pnl.logFiles.find('.sbc-panel-filter');
|
|
$pnl.results = $pnl.logFiles.find('.sbc-panel-results');
|
|
$pnl.msgs = $pnl.results.find('.sbc-panel-messages')
|
|
$pnl.list = $pnl.results.find('table.sbc-item-list')
|
|
|
|
$pnl.filter.on('click', '.sbc-action.sbc-results-refresh', function () { sl.refreshFiles(); });
|
|
$('.sbc-input').on('input', function () { sbc.clearControlError(this); });
|
|
|
|
$frm.filter = $('#frmLogsFilter');
|
|
$ctrl.cbFolders = $frm.filter.find('#cbFilterLogFolder').on('change', function () { sl.refreshYears(250); });
|
|
$ctrl.cbYears = $frm.filter.find('#cbFilterLogYear').on('change', function () { sl.refreshMonths(250); });
|
|
$ctrl.cbMonths = $frm.filter.find('#cbFilterLogMonth').on('change', function () { sl.refreshFiles(250); });
|
|
$('.icon-year-prev').on('click', () => { sbc.offsetSelectedOption($ctrl.cbYears, -1) });
|
|
$('.icon-year-next').on('click', () => { sbc.offsetSelectedOption($ctrl.cbYears, 1) });
|
|
$('.icon-month-prev').on('click', () => { sbc.offsetSelectedOption($ctrl.cbMonths, -1) });
|
|
$('.icon-month-next').on('click', () => { sbc.offsetSelectedOption($ctrl.cbMonths, 1) });
|
|
|
|
var opt = sbc.dlgOpts();
|
|
opt.buttons[sbc.lbl.close] = function () { $(this).dialog('close'); sl.setFileData(); };
|
|
opt.create = sl.onCreateLogFileDlg;
|
|
$dlg.file = $('#dlgLogFile').dialog(opt);
|
|
|
|
setTimeout(sl.refreshFolders, 250);
|
|
});
|
|
|
|
}(window, window.document));
|
|
|
|
/* The End */ |