/* * SBM - Control - Instance - Core Database. */ (function (win, doc, undef) { "use strict"; let cd = sbc.mdl.coreDatabase = { env: {}, data: {} }; //-------------------------------------------------------------- cd.refreshItems = function (env, delay) { //sbc.debug('refreshItems', env); if (!env.$frm.filter.find('.FilterContext').val()) return; if (!cd.awaitingRefreshResponse) { env.$pnl.bgr.invisible(); env.$pnl.table.find('tbody tr').remove(); env.$pnl.msgs.hide().empty().append($('
' + sbc.msg.dataQuerying + '
')).fadeIn(200); } env.ajax.tables = env.ajax.tables || { url: sbc.url.base + 'Instance/Repository/Ajax/GetTables', formSel: env.$frm.filter, callbackFn: function (response) { cd.displayItems(env, response); } }; sbc.doAjaxRequest(env.ajax.tables, delay || 50); cd.awaitingRefreshResponse = true; } cd.displayItems = function (env, response) { //sbc.debug('displayItems', env, response); delete cd.awaitingRefreshResponse; env.$pnl.msgs.hide().empty(); let $table = $('table', env.$pnl.table).find('tbody tr').remove().end(); if (!response.success) return; env.config = response.config || {}; // Menu. if (env.$pnl.bgr.length) { env.$pnl.bgr.invisible(); env.$pnl.mnu.empty(); env.$pnl.mnu.append(cd.getFilterMenuOption(env, sbc.lbl.refresh, function () { cd.refreshItems(env); }, 'sbc-refresh')); env.$pnl.bgr.toggleVisibility(!!$('.sbc-dropdown-item', env.$pnl.mnu).length); } // Items. var items = response.tables || []; if (!items.length) return env.$pnl.msgs.append($('
' + sbc.msg.dataNoneFound + '
')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $table.append(cd.populateItem(env, cd.getItemTemplate(env), items[itemIdx])); sbc.configureItemTable(env.config, $table); } cd.populateItem = function (env, $item, item) { if (!item) return $item; $item.prop('id', cd.getItemId(item)); $('.SchemaName', $item).text(item.schemaName); $('.TableName', $item).text(item.tableName); if (item.columnCount) $('.ColumnCount', $item).text(item.columnCount); if (item.indexCount) $('.IndexCount', $item).text(item.indexCount); if (item.rowCount) $('.RowCount', $item).text(item.rowCount); return $item; } cd.getItemId = function (item) { return 'Tbl_' + (item || {}).TableName; } //-------------------------------------------------------------- cd.getFilterDropdownTemplate = function (env) { return env.$pnl.tmpls.find('.sbc-dropdown-menu.TableFilter li.sbc-dropdown-item').clone(); } cd.getItemTemplate = function (env) { return env.$pnl.tmpls.find('table tr.sbc-row-item.Table').clone(); } cd.getItemDropdownTemplate = function (env) { return env.$pnl.tmpls.find('.sbc-dropdown-menu.Table li.sbc-dropdown-item').clone(); } cd.getFilterMenuOption = function (env, lbl, fn, cls) { return cd.getMenuOption(cd.getFilterDropdownTemplate(env), lbl, fn, cls); } cd.getItemMenuOption = function (env, lbl, fn, cls) { return cd.getMenuOption(cd.getItemDropdownTemplate(env), lbl, fn, cls); } cd.getMenuOption = function ($opt, lbl, fn, cls) { return $opt.find('div.sbc-label').text(lbl).end().on('click', fn).addClass(cls); } //-------------------------------------------------------------- $(function () { let env = cd.env.init = { data: {}, ajax: {}, $pnl: {}, $frm: {}, $ctrl: {}, $dlg: {} }; env.$pnl.items = $('.sbc-panel.Tables'); env.$pnl.header = env.$pnl.items.find('.sbc-panel-header'); env.$pnl.bgr = env.$pnl.header.find('.sbc-burger'); env.$pnl.mnu = env.$pnl.bgr.find('ul.sbc-dropdown-menu'); env.$pnl.table = env.$pnl.items.find('.sbc-panel-item-table'); env.$pnl.msgs = env.$pnl.table.find('.sbc-panel-messages'); env.$pnl.tmpls = env.$pnl.items.find('.sbc-panel-item-template'); env.$frm.filter = env.$pnl.items.find('#frmTableFilter'); env.$frm.filter.on('input', '.FilterSearch', function () { cd.refreshItems(env, 250); }).on('change', '.FilterContext', function () { cd.refreshItems(env, 100); }); if (env.$frm.filter.length) cd.refreshItems(env, 250); }); //-------------------------------------------------------------- }(window, window.document)); /* The End */