/* * Admin - Sport page scripts. */ (function (win, doc, undef) { "use strict"; let $pnl = sax.$pnl, $frm = sax.$frm, $dlg = sax.$dlg; sax.itemIdPrefix = 'Itm_'; //-------------------------------------------------------------- sax.refreshResults = function (delay) { if (!sax.awaitingRefreshResponse) { $('.sax-burger', $pnl.filter).hide(); 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 + 'Sport/Ajax/GetList', formId: 'frmSportFilter', callbackFn: sax.doRefreshResults }; sax.doAjaxRequest(sax.ajax.refreshResults, delay || 50); sax.awaitingRefreshResponse = true; } sax.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(); sax.refreshPaging(response, '#frmSportFilter', sax.refreshResults); if (!response.success) return; // Reference data - Statuses. if (response.defaultStatusCode) sax.data.defaultStatusCode = response.defaultStatusCode; if (response.statuses) sax.populateSelectCodeDesc('#cbSportStatus', response.statuses); // Menu. var $bgr = $('.sax-burger', $pnl.filter).hide(); var $mnu = $('ul.sax-dropdown-menu', $bgr).empty(); $mnu.append(sax.getFilterMenuOption(sax.lbl.refresh, function () { sax.refreshResults(); })); $mnu.append(sax.getFilterMenuOption(sax.lbl.create, function () { sax.createItem(); })); $bgr.toggle(!!$('.sax-dropdown-item', $mnu).length); // Items. var items = response.sports; if (!items.length) return $msgs.append($('')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $items.append(sax.populateItem(sax.getItemTemplate(), items[itemIdx])); $items.fadeIn(50); } sax.populateItem = function ($item, item) { if (!item) return; $item.prop('id', sax.itemIdPrefix + item.id); $('.SportName', $item).text(item.name); $('.SportSpecialityLabel', $item).text(item.specialityLabelDesc); $('.SportSpeciality', $item).toggle(!!item.specialityLabelCode); $('.StatusDesc', $item).text(item.statusDesc); $('.sax-caption .sax-action').toggleClass('sax-action', !item.deleted); let $mnu = $('ul.sax-dropdown-menu', $item); if (!item.deleted) { $mnu.append(sax.getItemMenuOption(sax.lbl.edit, function () { sax.updateItem(item) })); $('.sax-header .sax-action.sax-item-update', $item).off('click').on('click', function () { sax.updateItem(item) }); $item.off('dblclick').on('dblclick', function () { sax.updateItem(item) }); } $('.sax-burger', $item).toggle(!!$('.sax-dropdown-item', $mnu).length); $('.sax-panel-messages', $pnl.results).hide().empty(); return $item; } //-------------------------------------------------------------- sax.getFilterDropdownTemplate = function () { return $('.sax-panel-item-template .sax-dropdown-menu.SportFilter li.sax-dropdown-item', $pnl.filter).clone(); } sax.getItemTemplate = function () { return $('.sax-panel-item-template .sax-panel-item.Sport', $pnl.results).clone(); } sax.getItemDropdownTemplate = function () { return $('.sax-panel-item-template .sax-dropdown-menu.Sport li.sax-dropdown-item', $pnl.results).clone(); } sax.getFilterMenuOption = function (lbl, fn) { return sax.getMenuOption(sax.getFilterDropdownTemplate(), lbl, fn); } sax.getItemMenuOption = function (lbl, fn) { return sax.getMenuOption(sax.getItemDropdownTemplate(), lbl, fn); } sax.getMenuOption = function ($opt, lbl, fn) { return $opt.find('div.sax-label').text(lbl).end().on('click', fn); } //-------------------------------------------------------------- sax.createItem = function () { let frm = $frm.sport; $('.SportId,input[type="text"],textarea,select', frm).val(''); $('.SportStatus', frm).val(sax.data.defaultStatusCode); sax.clearControlErrors(); $dlg.sport.dialog('option', 'title', sax.dlg.title.createSport); sax.openDialog($dlg.sport, 600, 600); } //-------------------------------------------------------------- sax.updateItem = function (item) { $('.SportId', $frm.sportId).val(item.id); sax.ajax.updateItem = sax.ajax.updateItem || { url: sax.url.base + 'Sport/Ajax/GetItem', formId: 'frmSportId', callbackFn: sax.onUpdateItem }; sax.doAjaxRequest(sax.ajax.updateItem, 50); } sax.onUpdateItem = function (response) { //sax.debug('onUpdateItem', response); let frm = $frm.sport; $('.SportId,input[type="text"],textarea,select', frm).val(''); if (!response.success) return; let item = response.sport; $('.SportId', frm).val(item.id); $('.SportName', frm).val(item.name); $('.SportSpecialityLabel', frm).val(item.specialityLabelCode); $('.SportStatus', frm).val(item.statusCode); sax.clearControlErrors(); $dlg.sport.dialog('option', 'title', sax.dlg.title.updateSport); sax.openDialog($dlg.sport, 600, 600); } //-------------------------------------------------------------- sax.storeItem = function () { sax.ajax.storeItem = sax.ajax.storeItem || { url: sax.url.base + 'Sport/Ajax/StoreItem', formId: 'frmSport', callbackFn: sax.onStoreItem }; sax.doAjaxRequest(sax.ajax.storeItem, 50); } sax.onStoreItem = function (response) { //sax.debug('onStoreItem', response); sax.refreshControlValues(response.controlValues); if (!response.success) return; $dlg.sport.dialog('close'); var item = response.sport; var $item = $('#' + sax.itemIdPrefix + item.id); if (!$item.length) { $item = sax.getItemTemplate(); $('.sax-panel-item-list', $pnl.results).prepend($item).show(); } sax.populateItem($item, item) } //-------------------------------------------------------------- $(function () { $pnl.sports = $('.sax-panel.Sports'); $pnl.filter = $('.sax-panel-filter', $pnl.sports); $pnl.results = $('.sax-panel-results', $pnl.sports); sax.$frm.filter = $('#frmSportFilter'); $('.FilterSport', sax.$frm.filter).on('input', function () { sax.refreshResults(250); }); sax.$frm.sportId = $('#frmSportId'); sax.$frm.sport = $('#frmSport'); $('.sax-input', sax.$frm.sport).on('input', function () { sax.clearControlError(this); }); $('.sax-select', sax.$frm.sport).on('change', function () { sax.clearControlError(this); }); var opt = sax.dlgOpts(); opt.buttons[sax.dlg.btn.ok] = function () { sax.storeItem(); }; opt.buttons[sax.dlg.btn.cancel] = function () { $(this).dialog('close'); }; $dlg.sport = $('#dlgSport').dialog(opt); setTimeout(sax.refreshResults, 250); }); }(window, window.document)); /* The End */