/* * Contact page scripts. */ (function (win, doc, undef) { "use strict"; sbm.itemIdPrefix = 'Itm_'; let $pnl = sbm.$pnl; let $frm = sbm.$frm; let $dlg = sbm.$dlg; //-------------------------------------------------------------- sbm.refreshResults = function (delay) { if (!sbm.awaitingRefreshResponse) { $('.sbm-burger', $pnl.filter).hide(); $('.sbm-panel-item-list', $pnl.results).fadeOut(200).empty(); $('.sbm-panel-messages', $pnl.results).hide().empty().append($('
')).fadeIn(200); } sbm.ajax.refreshResults = sbm.ajax.refreshResults || { url: sbm.url.base + 'Contact/Ajax/List', formId: 'frmContactFilter', callbackFn: sbm.doRefreshResults }; sbm.doAjaxRequest(sbm.ajax.refreshResults, delay || 50); sbm.awaitingRefreshResponse = true; } sbm.getFilterDropdownTemplate = function () { return $('.sbm-panel-item-template .sbm-dropdown-menu.ContactFilter li.sbm-dropdown-item', $pnl.filter).clone(); } sbm.getItemTemplate = function () { return $('.sbm-panel-item-template .sbm-panel-item.Contact', $pnl.results).clone(); } sbm.getItemDropdownTemplate = function () { return $('.sbm-panel-item-template .sbm-dropdown-menu.Contact li.sbm-dropdown-item', $pnl.results).clone(); } sbm.doRefreshResults = function (response) { //sbm.debug('doRefreshResults', response); delete sbm.awaitingRefreshResponse; sbm.refreshControlValues(response.controlValues); var $msgs = $('.sbm-panel-messages', $pnl.results).hide().empty(); var $items = $('.sbm-panel-item-list', $pnl.results).hide().empty(); sbm.refreshPaging(response, '#frmContactFilter', sbm.refreshResults); if (!response.success) return; // Reference data - Statuses. if (response.defaultStatusCode) sbm.data.defaultStatusCode = response.defaultStatusCode; if (response.statuses) sbm.populateSelectCodeDesc('#cbContactStatus', response.statuses); // Menu. var $bgr = $('.sbm-burger', $pnl.filter).hide(); var $mnu = $('ul.sbm-dropdown-menu', $bgr).empty(); $mnu.append(sbm.getFilterMenuOption(sbm.lbl.refresh, function () { sbm.refreshResults(); })); $mnu.append(sbm.getFilterMenuOption(sbm.lbl.createOrg, function () { sbm.createItem(); })); $mnu.append(sbm.getFilterMenuOption(sbm.lbl.createInd, function () { sbm.createItem(1); })); $bgr.toggle(!!$('.sbm-dropdown-item', $mnu).length); // Items. var items = response.affiliates; if (!items.length) return $msgs.append($('')).fadeIn(500); for (let itemIdx = 0; itemIdx < items.length; itemIdx++) $items.append(sbm.populateItem(sbm.getItemTemplate(), items[itemIdx])); $items.fadeIn(50); } sbm.populateItem = function ($item, item) { if (!item) return; $item.prop('id', sbm.itemIdPrefix + item.id); $('.ContactName', $item).text(item.displayName); $('.ContactType', $item).text(item.typeDesc); $('.ContactAssociationCount', $item).on('click', function () { sbm.onClickAssociationCount(item.id); }).toggle(item.associationCount).find('.AssociationCount').text(item.associationCount); $('.ContactAddress', $item).text(item.addressSummary); $('.ContactNotes', $item).text(item.notes); $('.StatusDesc', $item).text(item.statusDesc).addClass('sbm-status-' + item.statusCode.toLowerCase()); $('.sbm-caption .sbm-action').toggleClass('sbm-action', !item.deleted); let $mnu = $('ul.sbm-dropdown-menu', $item).empty(); if (!item.deleted) { $mnu.append(sbm.getItemMenuOption(sbm.lbl.edit, function () { sbm.updateItem(item.id) })); $('.sbm-header .sbm-action.sbm-item-update', $item).off('click').on('click', function () { sbm.updateItem(item.id) }); $item.off('dblclick').on('dblclick', function () { sbm.updateItem(item.id) }); } $('.sbm-burger', $item).toggle(!!$('.sbm-dropdown-item', $mnu).length); $('.sbm-panel-messages', $pnl.results).hide().empty(); return $item; } //-------------------------------------------------------------- sbm.getFilterMenuOption = function (lbl, fn) { return sbm.getMenuOption(sbm.getFilterDropdownTemplate(), lbl, fn); } sbm.getItemMenuOption = function (lbl, fn) { return sbm.getMenuOption(sbm.getItemDropdownTemplate(), lbl, fn); } sbm.getMenuOption = function ($opt, lbl, fn) { return $opt.find('div.sbm-label').text(lbl).end().on('click', fn); } //-------------------------------------------------------------- sbm.createItem = function (ind) { let frm = $frm.contact; sbm.clearControlErrors(frm); $('.AffiliateId,.ContactExists,input[type="text"],textarea,select', frm).val(''); $('.ContactIndividual', frm).val(!!ind ? 1 : null); $('.ContactStatus', frm).val(sbm.data.defaultStatusCode); sbm.toggleContactControls(ind); $dlg.contact.dialog('option', 'title', sbm.dlg.title.createContact); sbm.openDialog($dlg.contact, 600, 600); } sbm.toggleContactControls = function (ind) { let frm = $frm.contact; $('.sbm-form-control.ContactType,.sbm-form-control.ContactName', frm).toggle(!ind).find('input,select').prop('disabled', !!ind); $('.sbm-form-control.ContactFirstName,.sbm-form-control.ContactLastName', frm).toggle(!!ind).find('input,select').prop('disabled', !ind); } //-------------------------------------------------------------- sbm.updateItem = function (id) { $('.AffiliateId', $frm.contactId).val(id); sbm.ajax.updateItem = sbm.ajax.updateItem || { url: sbm.url.base + 'Contact/Ajax/GetItem', formId: 'frmContactId', callbackFn: sbm.onUpdateItem }; sbm.doAjaxRequest(sbm.ajax.updateItem, 50); } sbm.onUpdateItem = function (response) { //sbm.debug('onUpdateItem', response); let frm = $frm.contact; $('.AffiliateId,input[type="text"],textarea,select', frm).val(''); if (!response.success) return; let item = response.affiliate; sbm.toggleContactControls(item.individual); $('.AffiliateId', frm).val(item.id); $('.ContactExists', frm).val(1); $('.ContactIndividual', frm).val(!!item.individual ? 1 : null); $('.ContactType', frm).val(item.typeCode); $('.ContactName', frm).val(item.name); $('.ContactFirstName', frm).val(item.firstName); $('.ContactLastName', frm).val(item.lastName); $('.ContactNotes', frm).val(item.notes); $('.ContactStatus', frm).val(item.statusCode); sbm.clearControlErrors(); $dlg.contact.dialog('option', 'title', sbm.dlg.title.updateContact); sbm.openDialog($dlg.contact, 600, 600); } //-------------------------------------------------------------- sbm.storeItem = function () { sbm.ajax.storeItem = sbm.ajax.storeItem || { url: sbm.url.base + 'Contact/Ajax/StoreItem', formId: 'frmContact', callbackFn: sbm.onStoreItem }; sbm.doAjaxRequest(sbm.ajax.storeItem, 50); } sbm.onStoreItem = function (response) { //sbm.debug('onStoreItem', response); sbm.refreshControlValues(response.controlValues); if (!response.success) return; $dlg.contact.dialog('close'); var item = response.affiliate; var $item = $('#' + sbm.itemIdPrefix + item.id); if (!$item.length) { $item = sbm.getItemTemplate(); $('.sbm-panel-item-list', $pnl.results).prepend($item).show(); } $item.replaceWith(sbm.populateItem(sbm.getItemTemplate(), item)); } //-------------------------------------------------------------- sbm.onClickAssociationCount = function (id) { if (!(id * 1)) return; sbm.doPleaseWait(); let frm = $frm.contactId; $('.AffiliateId', frm).val(id); frm.prop('action', sbm.url.base + 'Association').submit(); } //-------------------------------------------------------------- $(function () { $pnl.contacts = $('.sbm-panel.Contacts'); $pnl.filter = $('.sbm-panel-filter', $pnl.contacts); $pnl.results = $('.sbm-panel-results', $pnl.contacts); $('.sbm-input, .sbm-textarea').on('input', function () { sbm.clearControlError(this); }); $('.sbm-select').on('change', function () { sbm.clearControlError(this); }); $frm.filter = $('#frmContactFilter'); $('.FilterContact', $frm.filter).on('input', function () { sbm.refreshResults(250); }); $('.FilterContactType', $frm.filter).on('change', function () { sbm.refreshResults(50); }); $frm.contactId = $('#frmContactId'); $frm.contact = $('#frmContact'); var opt = sbm.dlgOpts(); opt.buttons[sbm.dlg.btn.ok] = function () { sbm.storeItem(); }; opt.buttons[sbm.dlg.btn.cancel] = function () { $(this).dialog('close'); }; $dlg.contact = $('#dlgContact').dialog(opt); setTimeout(sbm.refreshResults, 250); }); }(window, window.document)); /* The End */