/* * Admin - System Database page scripts. */ (function (win, doc, undef) { "use strict"; let sd = sax.sysDb = { $pnl: {}, $frm: {}, $dlg: {} }; let $pnl = sd.$pnl; let $frm = sd.$frm; let $dlg = sd.$dlg; sax.itemIdPrefix = 'Itm_'; //-------------------------------------------------------------- sd.refreshResults = function (delay) { if (!sax.awaitingRefreshResponse) { var $items = $('.sax-panel-item-list', $pnl.results).fadeOut(200).empty(); var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty().append($('
')).fadeIn(200); } sax.ajax.refreshResults = sax.ajax.refreshResults || { url: sax.url.base + 'System/Ajax/GetDatabaseTables', formId: 'frmDbTableFilter', callbackFn: sd.doRefreshResults }; sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50); sax.awaitingRefreshResponse = true; } sd.doRefreshResults = function (response) { //sax.debug('doRefreshResults', response); delete sax.awaitingRefreshResponse; sax.refreshControlValues(response.controlValues); var $msgs = $('.sax-panel-messages', $pnl.results).hide().empty(); var $items = $('.sax-panel-item-list', $pnl.results).hide().empty(); if (!response.success) return; // Items. var items = response.tables; if (!items.length) return $msgs.append($('')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $items.append(sd.populateItem(sd.getTableTemplate(), items[itemIdx])); $items.fadeIn(50); } sd.populateItem = function ($item, item) { if (!item) return $item; $item.prop('id', sax.itemIdPrefix + item.id); $('.TableName', $item).text(item.qualifiedName); $('.RowCount', $item).text(item.rowCount); $('.ColumnCount', $item).text(item.columnCount); $('.IndexCount', $item).text(item.indexCount); $('.sax-caption .sax-action, .sax-actions .sax-action.sax-item-view', $item).off('click').on('click', function () { sd.viewItem(item) }) $item.off('dblclick').on('dblclick', function () { sax.viewItem(item) }) $('.sax-panel-results .sax-panel-messages').hide().empty(); return $item; } sd.getTableTemplate = function () { return $('.sax-panel-item-template .sax-panel-item.DatabaseTable', $pnl.results).clone(); } //-------------------------------------------------------------- sd.viewItem = function (item) { //sax.debug('viewItem', item.tableName, $frm.tableName, $('.DatabaseTableName', $frm.tableName)) $('.DatabaseTableName', $frm.tableName).val(item.tableName); sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'System/Ajax/GetDatabaseTable', formId: 'frmDbTableName', callbackFn: sd.onViewItem }; sax.doAjaxRequest(sax.ajax.updateItem, 50); } sd.onViewItem = function (response) { //sax.debug('onViewItem', response); sd.clearItem(); if (!response.success) return; let item = response.table; let $frmT = $frm.table; $('.DatabaseTableName', $frmT).val(item.name); // Properties. let prts = item.properties; let $prts = $('.TableProperties', $dlg.table); $('tr:not(.sax-heading)', $prts).remove(); for (let prtIdx = 0; prtIdx < prts.length; prtIdx++) { let prt = prts[prtIdx]; let $prt = sd.getTablePropertyTemplate().addClass('sax-' + (prtIdx % 2 ? 'even' : 'odd')); $('.Label', $prt).text(prt.label); $('.Value', $prt).text(prt.value); $prts.append($prt); } // Columns. let cols = item.columns; let $cols = $('.TableColumns', $dlg.table); $('tr:not(.sax-heading)', $cols).remove(); for (let colIdx = 0; colIdx < cols.length; colIdx++) { let col = cols[colIdx]; let $col = sd.getTableColumnTemplate().addClass('sax-' + (colIdx % 2 ? 'even' : 'odd')); $('.Pos', $col).text(col.pos); $('.Name', $col).text(col.name); $('.Format', $col).text(col.format); $cols.append($col); } // Indices. let idxs = item.indices; let $idxs = $('.TableIndices', $dlg.table); $('tr:not(.sax-heading)', $idxs).remove(); for (let idxIdx = 0; idxIdx < idxs.length; idxIdx++) { let idx = idxs[idxIdx]; let $idx = sd.getTableIndexTemplate().addClass('sax-' + (idxIdx % 2 ? 'even' : 'odd')); $('.Name', $idx).text(idx.name); for (const col of idx.columns) $('.Columns', $idx).append($('