/* * 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($('
' + sax.msg.dataQuerying + '
')).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($('
' + sax.msg.dataNoneFound + '
')).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($('
').text(col.name)); $('.Unique', $idx).text(idx.unique ? 'Yes' : ''); $idxs.append($idx); } // Display table details. $dlg.table.dialog('option', 'title', response.popupTitle || "Table: " + item.name); sax.openDialog($dlg.table, 600, 600); } sd.clearItem = function () { let $frmT = $frm.table; $('input[type="text"],textarea,select', $frmT).val(''); sax.clearControlErrors(); } sd.getTablePropertyTemplate = function () { return sd.getTableRowTemplate('TableProperty'); } sd.getTableColumnTemplate = function () { return sd.getTableRowTemplate('TableColumn'); } sd.getTableIndexTemplate = function () { return sd.getTableRowTemplate('TableIndex'); } sd.getTableRowTemplate = function (name) { return $('.sax-panel-item-template .' + name, $dlg.table).clone(); } //-------------------------------------------------------------- $(function () { $pnl.tables = $('.DatabaseTables'); $pnl.filter = $('.sax-panel-filter', $pnl.tables); $pnl.results = $('.sax-panel-results', $pnl.tables); $pnl.filter.on('click', '.sax-action.sax-results-refresh', function () { sd.refreshResults(); }); $('.sax-input').on('input', function () { sax.clearControlError(this); }); $frm.filter = $('#frmDbTableFilter'); $('.FilterDatabaseTable', $frm.filter).on('input', function () { sd.refreshResults(250); }); $frm.tableName = $('#frmDbTableName'); $frm.table = $('#frmDbTable'); var opt = sax.dlgOpts(); //opt.buttons[sax.dlg.btn.ok] = function () { sax.storeItem(); }; opt.buttons[sax.dlg.btn.close] = function () { $(this).dialog('close'); }; $dlg.table = $('#dlgDbTable').dialog(opt); setTimeout(sd.refreshResults, 250); }); }(window, window.document)); /* The End */