/* * 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($('
')).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($('')).fadeIn(500); for (const item of items) $ctrl.cbFolders.append($('')); 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($('')).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($('')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $ctrl.cbYears.append($('')); 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($('')).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($('')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $ctrl.cbMonths.append($('')); 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($('')).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($('')).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($('')); 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 = $('