113 lines
4.2 KiB
JavaScript
113 lines
4.2 KiB
JavaScript
/*
|
|
* 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($('<div class="sbc-message">' + sbc.msg.dataQuerying + '</div>')).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($('<div class="sbc-message">' + sbc.msg.dataNoneFound + '</div>')).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 = { mode: { search: 1 }, data: {}, ajax: {}, $pnl: {}, $frm: {}, $ctrl: {}, $dlg: {} };
|
|
|
|
env.$pnl.items = $('.sbc-panel.Tables');
|
|
env.$pnl.hdr = env.$pnl.items.find('.sbc-panel-header');
|
|
env.$pnl.bgr = env.$pnl.hdr.find('.sbc-burger').invisible();
|
|
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 */ |