/* * Admin - Home page scripts. */ (function (win, doc, undef) { "use strict"; let ah = sax.adminHome = {}; let $pnl = ah.$pnl = {}, $dlg = ah.$dlg = {}, $frm = ah.$frm = {}; sax.itemIdPrefix = 'Itm_'; //-------------------------------------------------------------- ah.refreshApplicationStats = function (delay) { clearTimeout(ah.toStats); if (sax.awaitingLogin) return; if (!ah.awaitingStatsResponse) { var $items = $('.sax-panel-item-list', $pnl.appStats).fadeOut(200).empty(); var $msgs = $('.sax-panel-messages', $pnl.appStats).hide().empty().append($('
' + sax.msg.dataQuerying + '
')).fadeIn(200); } sax.ajax.awaitAct = sax.ajax.awaitAct || { url: sax.url.base + 'Home/Ajax/GetApplicationStats', formId: 'frmNavigate', callbackFn: ah.handleStatsResponse, noWaitIcon: true }; sax.doAjaxRequest(sax.ajax.awaitAct, delay || 50); ah.awaitingStatsResponse = true; } ah.handleStatsResponse = function (response) { //sax.debug('handleAwaitActivateResponse', response); delete ah.awaitingStatsResponse; var $msgs = $('.sax-panel-messages', $pnl.appStats).hide().empty(); var $items = $('.sax-panel-item-list', $pnl.appStats).hide().empty(); ah.toStats = setTimeout(ah.refreshApplicationStats, 60000); if (!response.success) return; //return $msgs.append($('
' + sax.msg.noItemsAwaitAct + '
')).fadeIn(500); // Users. let user = response.stats.user; let $user = sax.getAppStatItemTemplate(); $('.sax-header .sax-caption', $user).text(user.caption||'Users'); ah.populateAppStat($user, user.awaiting.label, user.awaiting.value, user.awaitingLink) for (let item of user.onlineStats) ah.populateAppStat($user, item.label, item.value, user.onlineLink) $items.append($user); // Organisations. let org = response.stats.organisation; let $org = sax.getAppStatItemTemplate(); $('.sax-header .sax-caption', $org).text(org.caption||'Organisations'); ah.populateAppStat($org, org.awaiting.label, org.awaiting.value, org.awaitingLink) $items.append($org); $items.slideDown(750); } ah.populateAppStat = function ($item, label, value, link) { let $stat = sax.getAppStatStatTemplate(); $stat.on('click', function () { win.location = link; }); $('.sax-label', $stat).text(label + ':'); $('.sax-value', $stat).text(value); $('table.sax-item-stats', $item).append($stat); return $item; } sax.getAppStatItemTemplate = function () { return $('.sax-panel-item-template .sax-panel-item.sax-item-stats', $pnl.appStats).clone(); } sax.getAppStatStatTemplate = function () { return $('.sax-panel-item-template .sax-item-stat', $pnl.appStats).clone(); } //-------------------------------------------------------------- sax.refreshDbSchema = function (delay) { if (sax.awaitingLogin) return; if (!ah.awaitingSchemaResponse) { var $items = $('.sax-panel-item-list', $pnl.dbSchema).fadeOut(200).empty(); var $msgs = $('.sax-panel-messages', $pnl.dbSchema).hide().empty().append($('
' + sax.msg.dataQuerying + '
')).fadeIn(200); } sax.ajax.dbSchema = sax.ajax.dbSchema || { url: sax.url.base + 'System/Ajax/ValidateDatabaseSchema', formId: 'frmNavigate', callbackFn: sax.handleDbSchemaResponse, noWaitIcon: true }; sax.doAjaxRequest(sax.ajax.dbSchema, delay || 50); ah.awaitingSchemaResponse = true; } sax.handleDbSchemaResponse = function (response) { //sax.debug('handleDbSchemaResponse', response); delete ah.awaitingSchemaResponse; var $msgs = $('.sax-panel-messages', $pnl.dbSchema).hide().empty(); var $items = $('.sax-panel-item-list', $pnl.dbSchema).hide().empty(); var $tmpl = $('.sax-panel-item-template .sax-panel-item.DbSchemaItem', $pnl.dbSchema); if (!response.success) return; // Items. var items = response.items; if (!items.length) return $msgs.append($('
' + sax.msg.dbSchemaValid + '
')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $items.append(sax.populateDbSchemaItem($tmpl.clone(), items[itemIdx])); $items.slideDown(750); } sax.populateDbSchemaItem = function ($item, item) { if (!item) return; $item.prop('id', sax.itemIdPrefix + item.id); $('.TableName', $item).text(item.tableName); $('.IndexName', $item).text(item.indexName); $('.SchemaIndex', $item).toggle(!!item.indexName); $('.ColumnName', $item).text(item.columnName); $('.SchemaColumn', $item).toggle(!!item.columnName); $('.Comment', $item).text(item.comment); return $item; } //-------------------------------------------------------------- $(function () { $pnl.appStats = $('.sax-panel-results.ApplicationStats'); $pnl.dbSchema = $('.sax-panel-results.DbSchema'); ah.toStats = setTimeout(ah.refreshApplicationStats, 400); ah.toSchema = setTimeout(sax.refreshDbSchema, 600); }); //-------------------------------------------------------------- }(window, window.document)); /* The End */