{"version":3,"sources":["app.js","app.input.js","app.grids.js","app.fileUploaders.js","app.pagecontent.js","app.utility.js","app.autocomplete.js","customValidators.js"],"names":["app","myApp","Page","applicationPath","util","console","groupCollapsed","this","appPath","id","loads","el","$","document","components","componentActions","currentComponent","allComponents","storage","selectors","grandchildComponent","grandchildAction","datepicker","modals","confirmRemove","confirmRemoveOkButton","descriptiveError","descriptiveErrorMessage","loadError","removeConfirm","saveError","searchBar","initCheckboxLists","initModals","initTooltips","initComponents","initBackToTopButton","groupEnd","log","prototype","startLoad","loading","show","endLoad","hide","init","warn","bindCheckboxLists","foundation","page","not","each","initComponent","initPageAction","e","pc","subtype","group","closest","data","parent","undefined","obj","component","Component","push","findAllComponents","trigger","PageAction","type","on","event","proxy","triggerAction","key","target","is","preventDefault","action","successContent","handleRemoveOkButton","window","scroll","css","mainTop","offset","top","scrollTop","fadeIn","fadeOut","initToasts","toastr","options","closeButton","debug","newestOnTop","progressBar","positionClass","preventDuplicates","onclick","showDuration","hideDuration","timeOut","extendedTimeOut","showEasing","hideEasing","showMethod","hideMethod","attr","change","prop","checked","selAll","length","showDescriptiveError","message","html","handleJsonMessage","s","errorMessage","handleAjaxError","xmlHttpRequest","textStatus","error","status","location","replace","encodeURIComponent","pathname","readyState","responseText","findComponents","merge","myComponent","parentController","role","state","request","isCloning","controller","siblings","editComponent","viewComponent","buttons","cancel","clone","edit","remove","save","validationToken","controllerUrl","urls","base","view","noResultsElement","count","customRecordData","targetType","filterField","value","slideUp","startViewMode","bindViewMode","finishLoad","Foundation","reInit","isEditing","startEditMode","calloutContent","removeComponent","index","indexOf","slideDown","splice","bindEditMode","editEl","stopPropagation","bindSubComponents","bindByElement","isRebind","off","startCloneMode","cancelEditMode","saveEditMode","startRemove","startLoading","addClass","endLoading","removeClass","isInit","filterCriteria","controllerId","newRecordData","abort","ajax","url","context","done","isJsonString","parseJSON","val","form","validator","unobtrusive","parse","valid","componentTop","method","serialize","parseInt","firstError","animate","__RequestVerificationToken","hasClass","warningContent","pageComponentActionAdd","pageComponentActionFilter","pageComponentActionFilterServer","pageComponentActionRefresh","pageComponentActionUpdateSetOptions","pageComponentActionUpdateSetValue","pageComponentActionUpdateSetVisibility","pageComponentActionUpdateId","pageComponentActionUpdateSubtype","postAction","t","componentWrapper","newComponentSelector","wrapperType","append","after","next","before","prev","prepend","rows","i","field","values","toUpperCase","split","v","isPrintableCharacter","delay","timeout","clearTimeout","that","setTimeout","find","name","appendTo","filters","serializeArray","param","targets","targetField","i2","e2","element","toString","includes","queue","token","customContent","format","content","fancyConsole","fn","isDebugMode","formats","arguments","arg","o","shift","join","trace","alertContent","copyToClipboard","clipboardData","setData","queryCommandSupported","textarea","createElement","textContent","style","position","body","appendChild","select","execCommand","ex","removeChild","dateOrNull","d","Date","isNaN","getElementValue","valueType","NodeList","outerHTML","selectedIndex","text","getGuid","c","r","Math","random","getIndexByPropertyValue","array","property","some","item","getPageSize","w","width","getFormattedNumber","abs","parseFloat","toLocaleString","getAccountingNumber","minimumFractionDigits","maximumFractionDigits","getShortFriendlyNumber","numberFormats","toFixed","getFriendlyNumber","JSON","isPageSmall","isPageMedium","isPageLarge","isPageExtraLarge","left","right","result","mergeSort","arr","middle","slice","input","Init","initInputComponents","initMasks","initTextEditor","initDatePicker","initSelectMany","initAutocomplete","inputmask","prefix","groupSeparator","selectManyContext","listSelected","selectedCheckboxNames","fieldSet","map","innerText","get","toLowerCase","selMany","search","selAllChecked","ind","filterTargetFieldset","allSelects","showThis","curCheckbox","selectedOption","filteredField","filteredFieldValue","fdatepicker","ev","endDateElement","date","valueOf","getTime","newDate","setDate","getDate","focus","onRender","startDate","tinymce","tinyMCE","baseURL","relative_urls","remove_script_host","selector","block_formats","plugins","mode","branding","menubar","toolbar","init_instance_callback","editor","triggerSave","settings","ignore","AutoComplete","Autocomplete","BindSetButtons","grids","myGrids","initGridComponents","initPageGridActions","initGridComponent","initPageGridAction","gridComponents","Array","gridElement","unique","componentType","forEach","grid","sortGrid","changeAllDropdown","changeAllTextbox","checkAll","keypress","code","click","pageGrid","gridComponent","table","filterForm","pageSize","showForResults","gridType","filterGrid","alert","sortDescending","removeAttr","reverse","row","children","keyCode","refreshGrid","pageNumber","otherData","pageNum","concat","forResults","eval","report","pageAction","theTarget","fileUploaders","myUploaders","initFileUploadComponents","fileUploadElement","initFileUploadComponent","requestEndpoint","deleteEndpoint","multiUpload","allowedExtensions","allowedExtensionArray","sizeLimit","uploader","qq","FineUploader","multiple","endpoint","deleteFile","enabled","callbacks","onComplete","response","success","fileName","setName","UpdateFile","onStatusChange","oldStatus","newStatus","RemoveFile","thumbnails","placeholders","notAvailablePath","waitingPath","validation","template","addInitialFiles","uuid","thumbnailUrl","size","file","targetIdBase","_options","fileSet","fileElement","newTemplate","idVal","getUuid","getSize","getName","ready","pagecontent","BindContentEditor","mnemonic","isTooltip","jQuery","expr","icontains","a","m","AutocompleteObjects","searchIndex","myAutocomplete","Object","defineProperties","activeItem","resultList","resultItems","searchText","searchBox","generateId","cacheResults","endPoint","initialSelected","initialText","onSelect","selectedItem","outputField","placeholder","searchMinLength","extend","additionaldataselector","selected","outputText","displayText","cache","container","announcement","onFocus","onBlur","onKeyPress","onInput","selectItem","mouseenter","mouseleave","populateTemplate","trim","emptyResultList","keyID","hideResultList","navigateUp","navigateDown","resetSearchList","populateList","delayTimer","getResults","searchData","dataType","results","populatedTemplate","stringify","showResultList","personOption","re","RegExp","cleanupRe","itemData","setValue","call","clearSelectItem","empty","newActiveIndex","eq","offsetTop","first","offsetHeight","addMethod","params","adapters","add","rules","messages","parameters","targetvalue","control","methods","required","dependentproperty"],"mappings":"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","file":"../site.js","sourcesContent":["//*************************************************************************************\r\n//* WaMS Component Framework - app.js\r\n//* Version 1.07f\r\n//* Author: Damian Koch\r\n//* Component framework essentials, plus utilities.\r\n//* Requires jQuery, foundation\r\n//* 4/05/22 DBK: Squish comments, added util namespace & console helpers\r\n//* 4/18/22 DBK: Moved functionality to app.util namespace\r\n//*************************************************************************************\r\n\r\n//$(document).foundation();\r\n\r\nvar app = (function () {\r\n var myApp = {\r\n Page: function (applicationPath) {\r\n app.util.console.groupCollapsed(\"Initializing Component Framework 1.07f...\");\r\n\r\n this.appPath = applicationPath || '';\r\n this.id = 0;\r\n this.loads = 0;\r\n this.el = $(document);\r\n\r\n this.components = {};\r\n this.componentActions = {};\r\n this.currentComponent = {};\r\n this.allComponents = {};\r\n this.storage = {};\r\n\r\n this.selectors = {\r\n components: ':not([data-role~=\"component-template\"]) [data-role~=\"component\"], >[data-role~=\"component\"]',\r\n grandchildComponent: ':not([data-role~=\"component-template\"]) [data-role~=\"component\"] [data-role~=\"component\"], > [data-role~=\"component\"] [data-role~=\"component\"]',\r\n componentActions: '[data-role~=\"component-action\"]',\r\n grandchildAction: ':not([data-role~=\"component-template\"]) [data-role~=\"component\"] [data-role~=\"component-action\"], > [data-role~=\"component\"] [data-role~=\"component-action\"]',\r\n datepicker: '[data-role~=\"datepicker\"]',\r\n modals: {\r\n confirmRemove: '#removeConfirmModal',\r\n confirmRemoveOkButton: '#removeConfirmModal--ok',\r\n descriptiveError: '#descriptiveErrorModal',\r\n descriptiveErrorMessage: '[data-role~=\"descriptiveErrorMessage\"]',\r\n loadError: '#loadErrorModal',\r\n removeConfirm: '#removeConfirmModal',\r\n saveError: '#saveErrorModal'\r\n },\r\n searchBar: '[name=searchForm]'\r\n };\r\n\r\n this.initCheckboxLists();\r\n this.initModals();\r\n this.initTooltips();\r\n this.initComponents();\r\n this.initBackToTopButton();\r\n\r\n app.util.console.groupEnd();\r\n app.util.console.log('Initialization complete.')\r\n }\r\n };\r\n\r\n myApp.Page.prototype.startLoad = function () { if (++this.loads === 1 && this.selectors.loading) this.selectors.loading.show(); };\r\n myApp.Page.prototype.endLoad = function () { if (--this.loads === 0 && this.selectors.loading) this.selectors.loading.hide(); };\r\n\r\n myApp.Page.prototype.init = function () { app.util.console.warn('init called on page, but not implemented'); };\r\n myApp.Page.prototype.initCheckboxLists = function () { this.bindCheckboxLists(this.el); };\r\n myApp.Page.prototype.initTooltips = function () { $(document).foundation(); };\r\n\r\n myApp.Page.prototype.initComponents = function () {\r\n //for each component, set up the component\r\n var page = this;\r\n\r\n app.util.console.groupCollapsed('Initializing Components');\r\n\r\n //exclude child components\r\n $(this.selectors.components).not(this.selectors.grandchildComponent).each(function () { page.initComponent(this, page); });\r\n\r\n app.util.console.groupEnd();\r\n app.util.console.groupCollapsed('Initializing Component Actions');\r\n\r\n $(this.selectors.componentActions).not(this.selectors.grandchildAction).each(function () { page.initPageAction(this, page); });\r\n\r\n app.util.console.groupEnd();\r\n };\r\n myApp.Page.prototype.initComponent = function (e, pc, subtype) {\r\n var type = $(e).closest('[data-component-type]').data('component-type');\r\n var group = type + ($(e).closest('[data-component-group]').data('component-group') || \"\");\r\n var parent = pc || this;\r\n\r\n if (parent.components[group] === undefined) {\r\n parent.components[group] = [];\r\n parent.components[group + '-noResults'] = $('[data-component-role=\"noResults\"][data-component-type=\"' + group + '\"]', parent.el);\r\n }\r\n\r\n var obj = new app.component.Component(e, pc, this, subtype);\r\n obj.init();\r\n parent.components[group].push(obj);\r\n\r\n this.findAllComponents();\r\n\r\n $(document).trigger(\"component-init-complete\", obj);\r\n };\r\n myApp.Page.prototype.initPageAction = function (e, pc) {\r\n var parent = pc || this;\r\n var obj = new app.component.PageAction(e, pc, this);\r\n\r\n if (parent.componentActions[obj.type] === undefined) {\r\n parent.componentActions[obj.type] = [];\r\n }\r\n\r\n $(e).on(obj.event, $.proxy(obj.triggerAction, obj));\r\n\r\n //watch for enter keypress on component action text boxes. this will prevent submits\r\n $(e).on(\"keypress keydown\",\r\n function (e) {\r\n if (e.key === \"Enter\" && $(event.target).is(\"input[type='text']\")) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n });\r\n parent.componentActions[obj.type].push(obj);\r\n $(document).trigger(\"component-action-init-complete\", obj);\r\n app.util.console.log(obj.action, app.util.console.successContent(obj.target), '(' + obj.event + ')', 'action bound.');\r\n };\r\n myApp.Page.prototype.initModals = function () {\r\n this.handleRemoveOkButton = function () {\r\n if (this.currentComponent) {\r\n if (typeof this.currentComponent.confirmRemove === 'function') this.currentComponent.confirmRemove();\r\n }\r\n };\r\n $(this.selectors.modals.confirmRemoveOkButton).on('click', $.proxy(this.handleRemoveOkButton, this));\r\n };\r\n myApp.Page.prototype.initBackToTopButton = function () {\r\n $(window).scroll(function () {\r\n if ($(\".back-to-top\").css('position') === 'fixed') {\r\n var mainTop = $('main').offset().top;\r\n if ($(this).scrollTop() > mainTop) {\r\n $('.back-to-top').fadeIn();\r\n } else {\r\n $('.back-to-top').fadeOut();\r\n }\r\n }\r\n });\r\n $(document).on('click', '.back-to-top', function () {\r\n $(this).fadeOut();\r\n });\r\n };\r\n myApp.Page.prototype.initToasts = function () {\r\n window.toastr.options = {\r\n \"closeButton\": true,\r\n \"debug\": false,\r\n \"newestOnTop\": false,\r\n \"progressBar\": true,\r\n \"positionClass\": 'toast-top-right',\r\n \"preventDuplicates\": false,\r\n \"onclick\": null,\r\n \"showDuration\": '300',\r\n \"hideDuration\": '1000',\r\n \"timeOut\": '5000',\r\n \"extendedTimeOut\": '1000',\r\n \"showEasing\": 'swing',\r\n \"hideEasing\": 'linear',\r\n \"showMethod\": 'fadeIn',\r\n \"hideMethod\": 'fadeOut'\r\n };\r\n };\r\n\r\n myApp.Page.prototype.bindCheckboxLists = function (el) {\r\n $('[type=\"checkbox\"][data-role~=\"selectall\"]', el).each(function () {\r\n $('[type=\"checkbox\"][name=\"' + $(this).attr('name') + '\"]').change(function () {\r\n if ($(this).attr('data-role') === 'selectall') {\r\n $('[type=\"checkbox\"][name=\"' + $(this).attr('name') + '\"]:visible').prop('checked', this.checked);\r\n\r\n } else {\r\n var selAll = $('[type=\"checkbox\"][data-role~=\"selectall\"][name=\"' + $(this).attr('name') + '\"]:visible');\r\n\r\n //check for all selected, or not all selected\r\n if (selAll.is(':checked')) {\r\n if (!this.checked) {\r\n selAll.prop('checked', this.checked);\r\n }\r\n } else {\r\n if ($('[type=\"checkbox\"][name=\"' + $(this).attr('name') + '\"]:not(:checked)').length === 1) {\r\n selAll.prop('checked', this.checked);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n $(document).trigger('component-bindCheckboxLists', el);\r\n };\r\n myApp.Page.prototype.showDescriptiveError = function (message) {\r\n $(app.page.selectors.modals.descriptiveErrorMessage, app.page.selectors.modals.descriptiveError).html(message);\r\n $(app.page.selectors.modals.descriptiveError).foundation('open');\r\n };\r\n myApp.Page.prototype.handleJsonMessage = function (s) {\r\n if (s.errorMessage !== undefined) {\r\n app.page.showDescriptiveError(s.errorMessage);\r\n return true;\r\n }\r\n return false;\r\n };\r\n myApp.Page.prototype.handleAjaxError = function (xmlHttpRequest, textStatus, error) {\r\n if (xmlHttpRequest.status === 401 || xmlHttpRequest.status === 302) {\r\n window.location.replace(app.page.appPath + '/Account/Login?ReturnUrl=' + encodeURIComponent(window.location.pathname));\r\n } else if (textStatus !== 'abort' && xmlHttpRequest.readyState !== 0) {\r\n app.util.console.error(error);\r\n if (xmlHttpRequest.responseText !== '') {\r\n app.page.showDescriptiveError(xmlHttpRequest.responseText);\r\n } else {\r\n $(app.page.selectors.modals.loadError).foundation('open');\r\n }\r\n }\r\n };\r\n\r\n myApp.Page.prototype.findAllComponents = function () {\r\n this.allComponents = {};\r\n this.findComponents(this.components);\r\n };\r\n myApp.Page.prototype.findComponents = function (components) {\r\n for (var group in components) {\r\n if (this.allComponents[group] === undefined) {\r\n this.allComponents[group] = [];\r\n };\r\n $.merge(this.allComponents[group], components[group]);\r\n for (var key in components[group]) {\r\n this.findComponents(components[group][key].components);\r\n }\r\n }\r\n };\r\n\r\n return myApp;\r\n}());\r\n\r\napp.component = (function () {\r\n var myComponent = {\r\n Component: function (e, pc, page, subtype) {\r\n this.el = $(e);\r\n this.parentController = pc || {};\r\n this.page = page || app.page;\r\n this.subtype = subtype;\r\n this.id = this.el.data('component-id') || 0;\r\n this.role = this.el.closest('[data-component-role]').data('component-role');\r\n this.type = this.el.closest('[data-component-type]').data('component-type');\r\n this.group = this.type + (this.el.closest('[data-component-group]').data('component-group') || \"\");\r\n this.state = this.el.data('component-state');\r\n this.request = null;\r\n this.isCloning = false;\r\n\r\n this.controller = this.el.closest('[data-component-controller]').data('component-controller');\r\n\r\n this.siblings = pc ? pc.components[this.group] || [] : [];\r\n\r\n this.selectors = {\r\n editComponent: '> .card > .component-edit > [data-component-role=\"EditComponent\"], > .card.component-edit > [data-component-role=\"EditComponent\"]',\r\n viewComponent: '> .card > .component-view > [data-component-role=\"ViewComponent\"], > .component-view[data-component-role=\"ViewComponent\"]',\r\n buttons: {\r\n cancel: '> .card > .component-edit > .component-buttons [data-component-role=\"CancelButton\"], > .card.component-edit > .component-buttons [data-component-role=\"CancelButton\"]',\r\n clone: '> .card > .component-view > [data-component-role=\"CloneButton\"]',\r\n edit: '> .card > .component-view > .component-buttons > [data-component-role=\"EditButton\"], > .component-view > .row > .component-buttons > [data-component-role=\"EditButton\"], > .card > .component-view > .card-body > .row > .component-buttons > [data-component-role=\"EditButton\"]',\r\n remove: '> .card > .component-edit > .component-buttons [data-component-role=\"RemoveButton\"], > .card.component-edit > .component-buttons [data-component-role=\"RemoveButton\"]',\r\n save: '> .card > .component-edit > .component-buttons [data-component-role=\"SaveButton\"], > .card.component-edit > .component-buttons [data-component-role=\"SaveButton\"]'\r\n },\r\n validationToken: 'input[name=\"__RequestVerificationToken\"]'\r\n };\r\n\r\n\r\n var controllerUrl = this.page.appPath + '/' + this.controller;\r\n\r\n this.urls = {\r\n base: controllerUrl,\r\n view: controllerUrl + '/Show' + this.type,\r\n clone: controllerUrl + '/Show' + this.type + 'CloneForm',\r\n edit: controllerUrl + '/Show' + this.type + 'Form',\r\n save: controllerUrl + '/Update' + this.type,\r\n remove: controllerUrl + '/Remove' + this.type\r\n };\r\n\r\n this.components = {};\r\n this.componentActions = {};\r\n\r\n this.noResultsElement = (pc) ? pc.components[this.group + '-noResults'] || [] : [];\r\n this.viewComponent = '';\r\n this.editComponent = '';\r\n\r\n //add defined values\r\n if (this.el.data('component-key') && this.el.data('component-value') !== 'undefined') {\r\n var count = 2;\r\n this.customRecordData = {};\r\n\r\n this.customRecordData[this.el.data('component-key')] = this.el.data('component-value');\r\n\r\n while (this.el.data('component-key' + count) && this.el.data('component-value' + count)) {\r\n this.customRecordData[this.el.data('component-key' + count)] = this.el.data('component-value' + count);\r\n count++;\r\n }\r\n }\r\n },\r\n PageAction: function (e, pc, page) {\r\n this.el = $(e);\r\n this.parentController = pc || {};\r\n this.page = page || app.page;\r\n this.action = this.el.closest('[data-component-action]').data('component-action');\r\n this.event = this.el.closest('[data-component-action-event]').data('component-action-event') || 'click';\r\n this.type = this.el.closest('[data-component-type]').data('component-type');\r\n this.target = this.el.closest('[data-component-action-target]').data('component-action-target');\r\n this.targetType = this.el.closest('[data-component-action-target-type]').data('component-action-target-type');\r\n this.subtype = this.el.closest('[data-component-subtype]').data('component-subtype');\r\n\r\n switch (this.action) {\r\n case \"filter\":\r\n this.filterField = this.el.closest('[data-component-action-field]').data('component-action-field');\r\n break;\r\n case \"setvalue\":\r\n this.value = this.el.closest('[data-component-action-value]').data('component-action-value');\r\n break;\r\n }\r\n }\r\n };\r\n\r\n //component events\r\n myComponent.Component.prototype.init = function () {\r\n if (this.siblings.length === 0 && this.noResultsElement !== undefined) {\r\n $(this.noResultsElement).slideUp();\r\n }\r\n\r\n if (this.state !== 'active') {\r\n this.startViewMode(true);\r\n } else {\r\n this.bindViewMode();\r\n this.finishLoad();\r\n }\r\n };\r\n myComponent.Component.prototype.finishLoad = function () {\r\n if (this.role === 'accordion') { /*f/b*/ window.Foundation.reInit($('.accordion')); }\r\n if (this.isEditing()) { this.startEditMode(); }\r\n app.util.console.log(app.util.console.calloutContent(this.type), app.util.console.successContent(this.id), 'loaded.');\r\n };\r\n myComponent.Component.prototype.removeComponent = function () {\r\n var index = this.siblings.indexOf(this);\r\n if (this.siblings.length <= 1) {\r\n $(this.noResultsElement).slideDown();\r\n }\r\n\r\n this.siblings.splice(index, 1);\r\n if (this.role === 'accordion') {\r\n this.el.closest('li.accordion-item').remove();\r\n } else {\r\n this.el.remove();\r\n }\r\n };\r\n myComponent.Component.prototype.bindEditMode = function () {\r\n var editEl = $('.component-edit', this.el);\r\n this.page.bindCheckboxLists(editEl);\r\n editEl.foundation();\r\n\r\n //handle enter keypress on a form\r\n $('form', editEl).on('keydown', $.proxy(function () {\r\n switch (event.key) {\r\n case \"Enter\":\r\n // Stop default form submission on \"enter\" click in textbox\r\n if ($(event.target).is(\"input[type='text']\")) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n break;\r\n case \"Escape\":\r\n event.preventDefault();\r\n event.stopPropagation();\r\n //this.cancelEditMode();\r\n break;\r\n }\r\n }, this));\r\n\r\n $(document).trigger(\"component-bind-edit-mode-complete\", this);\r\n $(document).trigger(\"component-bind-edit-mode-complete-\" + this.type, this);\r\n\r\n this.bindSubComponents();\r\n };\r\n myComponent.Component.prototype.bindViewMode = function () {\r\n this.editComponent = $(this.selectors.editComponent, this.el);\r\n this.viewComponent = $(this.selectors.viewComponent, this.el);\r\n\r\n this.bindByElement(this.el, false);\r\n\r\n $(document).trigger(\"component-bind-view-mode-complete\", this);\r\n $(document).trigger(\"component-bind-view-mode-complete-\" + this.type, this);\r\n\r\n this.bindSubComponents();\r\n this.viewComponent.foundation();\r\n };\r\n myComponent.Component.prototype.bindByElement = function (el, isRebind) {\r\n\r\n $(this.selectors.buttons.edit, this.el).off('click').on('click', $.proxy(this.startEditMode, this));\r\n $(this.selectors.buttons.clone, this.el).off('click').on('click', $.proxy(this.startCloneMode, this));\r\n\r\n $(this.selectors.buttons.cancel, this.el).off('click').on('click', $.proxy(this.cancelEditMode, this));\r\n $(this.selectors.buttons.save, this.el).off('click').on('click', $.proxy(this.saveEditMode, this));\r\n $(this.selectors.buttons.remove, this.el).off('click').on('click', $.proxy(this.startRemove, this));\r\n\r\n //is this still needed?\r\n if (!isRebind) {\r\n } \r\n };\r\n myComponent.Component.prototype.bindSubComponents = function () {\r\n var controller = this;\r\n\r\n this.components = {};\r\n $(this.page.selectors.components, this.el).not($(this.page.selectors.grandchildComponent, this.el)).each(function () { controller.page.initComponent(this, controller); });\r\n $(this.page.selectors.componentActions, this.el).not($(this.page.selectors.grandchildAction, this.el)).each(function () { controller.page.initPageAction(this, controller); });\r\n };\r\n myComponent.Component.prototype.startLoading = function () {\r\n this.el.addClass('component-loading');\r\n $(document).trigger(\"component-loading-start\", this);\r\n };\r\n myComponent.Component.prototype.endLoading = function () {\r\n this.el.removeClass('component-loading');\r\n $(document).trigger(\"component-loading-complete\", this);\r\n };\r\n myComponent.Component.prototype.startViewMode = function (isInit, filterCriteria) {\r\n this.startLoading();\r\n var data;\r\n\r\n if (filterCriteria) {\r\n data = filterCriteria;\r\n } else {\r\n data = { id: this.id, controllerId: this.parentController.id };\r\n }\r\n\r\n if (this.customRecordData) {\r\n data = { ...data, ...this.customRecordData }\r\n }\r\n\r\n if (this.parentController.newRecordData) {\r\n data = { ...data, ...this.parentController.newRecordData }\r\n }\r\n\r\n if (this.request != null) {\r\n this.request.abort();\r\n this.request = null;\r\n }\r\n\r\n this.request = $.ajax({ url: this.urls.view, data: data, context: this, error: this.page.handleAjaxError }).done(function (data) {\r\n if (app.util.isJsonString(data)) {\r\n this.page.handleJsonMessage($.parseJSON(data));\r\n this.endLoading();\r\n } else {\r\n this.el.html(data);\r\n this.endLoading();\r\n this.bindViewMode();\r\n if (isInit) {\r\n this.finishLoad();\r\n }\r\n }\r\n });\r\n\r\n };\r\n myComponent.Component.prototype.startCloneMode = function () {\r\n this.isCloning = true;\r\n this.startEditMode();\r\n };\r\n myComponent.Component.prototype.startEditMode = function () {\r\n this.startLoading();\r\n\r\n var data = { id: this.id, controllerId: this.parentController.id, subtype: this.subtype };\r\n\r\n if (this.customRecordData) {\r\n data = { ...data, ...this.customRecordData }\r\n }\r\n\r\n if (this.id === 0 && this.parentController.newRecordData) {\r\n data = { ...data, ...this.parentController.newRecordData }\r\n }\r\n\r\n $.ajax({ url: this.urls.edit, data: data, context: this, error: this.page.handleAjaxError }).done(function (data) {\r\n this.editComponent.html(data);\r\n\r\n if (this.isCloning) {\r\n $('[name=\"Id\"]', this.editComponent).val(0);\r\n }\r\n\r\n this.el.addClass('edit');\r\n this.endLoading();\r\n this.bindEditMode();\r\n });\r\n };\r\n myComponent.Component.prototype.cancelEditMode = function () {\r\n if (this.isCloning) { this.isCloning = false; }\r\n\r\n if (this.id === 0) {\r\n this.removeComponent();\r\n } else {\r\n this.el.removeClass('edit');\r\n }\r\n\r\n $(document).trigger(\"component-edit-cancel\", this);\r\n $(document).trigger(\"component-edit-cancel-\" + this.type, this);\r\n };\r\n myComponent.Component.prototype.saveEditMode = function () {\r\n var form = $('form:not(.component-exclude)', this.editComponent);\r\n $.validator.unobtrusive.parse(form);\r\n\r\n app.util.console.log(\"form valid?\", form.valid());\r\n\r\n if (form.valid()) {\r\n //if the top of the component is off of the page, jump to it\r\n var componentTop = this.editComponent.offset().top - 50;\r\n if ($(document).scrollTop() > componentTop) $('html, body').scrollTop(componentTop);\r\n\r\n this.startLoading();\r\n $.ajax({ url: this.urls.save, method: 'post', data: form.serialize(), context: this, error: this.page.handleAjaxError }).done(function (data) {\r\n this.endLoading();\r\n\r\n if (data) {\r\n //check if result is json, if so we have an issue\r\n if (app.util.isJsonString(data)) {\r\n this.page.handleJsonMessage($.parseJSON(data));\r\n } else {\r\n //it worked, replace the current view partial.\r\n this.viewComponent.html(data);\r\n\r\n if (this.id === 0 || this.isCloning) {\r\n this.id = parseInt($('[name=\"Id\"]', this.viewComponent).val());\r\n if (this.isCloning) { this.isCloning = false; }\r\n this.bindByElement(this.viewComponent, false);\r\n }\r\n else {\r\n this.bindByElement(this.viewComponent, true);\r\n }\r\n\r\n this.viewComponent.foundation();\r\n this.bindSubComponents();\r\n $(document).trigger(\"component-save-complete\", this);\r\n $(document).trigger(\"component-save-complete-\" + this.type, this);\r\n this.cancelEditMode();\r\n }\r\n } else {\r\n $(app.page.selectors.modals.saveError).foundation('open');\r\n }\r\n });\r\n }\r\n else {\r\n //Give focus to the first error\r\n var firstError = $('#' + $('.field-validation-error', form).data('valmsg-for'));\r\n if (firstError.length) {\r\n $('html, body').animate({\r\n scrollTop: firstError.offset().top - 50\r\n }, 500);\r\n }\r\n }\r\n };\r\n myComponent.Component.prototype.startRemove = function () {\r\n if (this.id === 0) {\r\n this.removeComponent();\r\n } else {\r\n if (this.urls.remove !== undefined && this.urls.remove !== '') {\r\n app.page.currentComponent = this;\r\n $(app.page.selectors.modals.removeConfirm).foundation('open');\r\n }\r\n }\r\n };\r\n myComponent.Component.prototype.confirmRemove = function () {\r\n if (this.urls.remove !== undefined && this.urls.remove !== '') {\r\n this.el.removeClass('edit');\r\n this.startLoading();\r\n\r\n var data = { id: this.id, controllerId: this.parentController.id, __RequestVerificationToken: $(this.selectors.validationToken, this.editComponent).val() };\r\n\r\n if (this.customRecordData) {\r\n data = { ...data, ...this.customRecordData }\r\n }\r\n\r\n $.ajax({ url: this.urls.remove, method: 'post', data: data, context: this, error: this.page.handleAjaxError }).done(function (data) {\r\n if (data) {\r\n if (app.util.isJsonString(data)) {\r\n if (this.page.handleJsonMessage($.parseJSON(data))) {\r\n this.el.addClass('edit');\r\n this.endLoading();\r\n } else {\r\n this.removeComponent();\r\n $(document).trigger(\"component-remove-complete\", this);\r\n $(document).trigger(\"component-remove-complete-\" + this.type, this);\r\n }\r\n }\r\n } else {\r\n this.el.addClass('edit');\r\n this.endLoading();\r\n $('#saveErrorModal').foundation('open');\r\n }\r\n });\r\n }\r\n };\r\n\r\n //component derived properties\r\n myComponent.Component.prototype.isEditing = function () {\r\n return this.el.hasClass('edit');\r\n };\r\n myComponent.PageAction.prototype.triggerAction = function (e) {\r\n app.util.console.log('component action', app.util.console.calloutContent(this.action), 'for', app.util.console.warningContent(this.target), 'triggered.');\r\n\r\n switch (this.action) {\r\n case \"add5\":\r\n this.pageComponentActionAdd(this.el, this.parentController, this.target);\r\n this.pageComponentActionAdd(this.el, this.parentController, this.target);\r\n this.pageComponentActionAdd(this.el, this.parentController, this.target);\r\n this.pageComponentActionAdd(this.el, this.parentController, this.target);\r\n this.pageComponentActionAdd(this.el, this.parentController, this.target);\r\n break;\r\n case \"add\":\r\n this.pageComponentActionAdd(this.el, this.parentController, this.target);\r\n break;\r\n case \"filter\":\r\n this.pageComponentActionFilter(this.el, this.target);\r\n break;\r\n case \"filterserver\":\r\n this.pageComponentActionFilterServer(this.el, this.target, e);\r\n break;\r\n case \"refresh\":\r\n this.pageComponentActionRefresh(this.el, this.target);\r\n break;\r\n case \"setoptions\":\r\n this.pageComponentActionUpdateSetOptions(this.el, this.target);\r\n break;\r\n case \"setvalue\":\r\n this.pageComponentActionUpdateSetValue(this.el, this.target);\r\n break;\r\n case \"setvisibility\":\r\n this.pageComponentActionUpdateSetVisibility(this.el, this.target);\r\n break;\r\n case \"updateid\":\r\n this.pageComponentActionUpdateId(this.el, this.target);\r\n break;\r\n case \"updatesubtype\":\r\n this.pageComponentActionUpdateSubtype(this.el, this.target);\r\n break;\r\n }\r\n\r\n this.postAction();\r\n };\r\n myComponent.PageAction.prototype.postAction = function () { };\r\n myComponent.PageAction.prototype.pageComponentActionAdd = function (el, pc, t) {\r\n var target = $('[data-role~=\"component-action-target\"][data-component-target=\"' + t + '\"]', pc.el);\r\n var componentWrapper;\r\n\r\n if (el.data('component-template') && $('[data-role~=\"component-template\"][data-template-name=\"' + el.data('component-template') + '\"]')) {\r\n componentWrapper = $('[data-role~=\"component-template\"][data-template-name=\"' + el.data('component-template') + '\"]').html();\r\n } else {\r\n var wrapperType = el.data('component-wrapper-type') ? el.data('component-wrapper-type') : 'div';\r\n componentWrapper = '<' + wrapperType + ' class=\"edit ' + (el.data('component-wrapper-class') ? el.data('component-wrapper-class') : \"\") + '\" data-role=\"component\" data-component-id=\"0\">' + wrapperType + '>';\r\n }\r\n\r\n if (target.data('component-new-key') && target.data('component-new-value') !== 'undefined') {\r\n var count = 2;\r\n pc.newRecordData = {};\r\n\r\n pc.newRecordData[target.data('component-new-key')] = target.data('component-new-value');\r\n\r\n while (target.data('component-new-key' + count) && target.data('component-new-value' + count)) {\r\n pc.newRecordData[target.data('component-new-key' + count)] = target.data('component-new-value' + count);\r\n count++;\r\n }\r\n }\r\n\r\n if (el.data('parent-id')) {\r\n pc.id = el.data('parent-id');\r\n }\r\n var newComponentSelector;\r\n switch (target.data('component-insert-type')) {\r\n case 'append':\r\n target.append(componentWrapper);\r\n newComponentSelector = $('[data-role~=\"component\"]:last', target);\r\n break;\r\n case 'sibling-append':\r\n target.after(componentWrapper);\r\n newComponentSelector = target.next();\r\n break;\r\n case 'sibling-prepend':\r\n target.before(componentWrapper);\r\n newComponentSelector = target.prev();\r\n break;\r\n default:\r\n target.prepend(componentWrapper);\r\n newComponentSelector = $('[data-role~=\"component\"]:first', target);\r\n break;\r\n }\r\n\r\n this.subtype = this.el.closest('[data-component-subtype]').data('component-subtype');\r\n\r\n this.page.initComponent(newComponentSelector, pc, this.subtype);\r\n $(document).trigger(\"component-add-complete\", newComponentSelector);\r\n $(componentWrapper).foundation();\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionFilter = function (el, t) {\r\n\r\n var context = $('[data-role~=\"component-action-target\"][data-component-target~=\"' + this.target + '\"]');\r\n var rows = $('[data-role~=\"component\"]', context);\r\n var form = $('form[data-role=\"filter-server-form\"][data-component-action-target-type~=\"' + this.targetType + '\"]');\r\n rows.show();\r\n\r\n $(':input', form).each(function (i, e) {\r\n var el = $(e);\r\n if (el.val() !== '') {\r\n var field;\r\n\r\n if (el.data('target')) {\r\n field = '[data-label=\"' + el.data('target') + '\"]';\r\n }\r\n else {\r\n field = '[data-label]';\r\n }\r\n\r\n var values = el.val().toUpperCase().split(/\\s+/);\r\n rows.each(function (i, e) {\r\n var hide = false;\r\n\r\n $.each(values, function (index, v) {\r\n if ($(field + ':icontains(\"' + v + '\")', e).length < 1) {\r\n hide = true;\r\n return;\r\n }\r\n });\r\n if (hide) {\r\n $(e).hide();\r\n }\r\n });\r\n }\r\n });\r\n\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionFilterServer = function (el, t, e) {\r\n\r\n if (e === undefined || e.type !== \"keyup\" || app.util.isPrintableCharacter(e)) {\r\n //if keyup, add a delay\r\n var delay = 300;\r\n if (e !== undefined && e.type !== \"keyup\") {\r\n delay = 0;\r\n }\r\n\r\n if (this.timeout !== null) { clearTimeout(this.timeout); }\r\n var that = this;\r\n this.timeout = setTimeout(function () {\r\n\r\n var form = $('form[data-role=\"filter-server-form\"][data-component-action-target-type=\"' + that.targetType + '\"]');\r\n\r\n var dataRoles = el.data('role');\r\n if (dataRoles.indexOf('page-size') !== -1) {\r\n\r\n //append to form\r\n if (form.find('[name=\"pageSize\"]').length) {\r\n form.find('[name=\"pageSize\"]').val(el.val());\r\n } else {\r\n //add to form\r\n $('').attr({\r\n type: 'hidden',\r\n id: 'pageSize',\r\n name: 'pageSize',\r\n value: el.val()\r\n }).appendTo(form);\r\n }\r\n }\r\n\r\n var filters = form.serializeArray();\r\n\r\n if (el.data('page-value')) {\r\n filters.push({ name: \"pageNumber\", value: el.data('page-value') });\r\n }\r\n\r\n var target = that.page.components[that.targetType][0];\r\n target.startViewMode(false, $.param(filters));\r\n\r\n }, delay, el, that);\r\n }\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionRefresh = function (el, t) {\r\n var target = this.page.components[t][0];\r\n if (target) {\r\n target.startViewMode();\r\n }\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionUpdateId = function (el, t) {\r\n var target = this.page.components[t][0];\r\n var val;\r\n if (el.data('component-action-updateid-value')) {\r\n val = el.data('component-action-updateid-value');\r\n } else {\r\n val = el.val();\r\n }\r\n if (val.length > 0) {\r\n target.id = val;\r\n target.startViewMode();\r\n }\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionUpdateSubtype = function (el, t) {\r\n var target = $('[data-role~=\"component-action-target\"][data-component-target=\"' + t + '\"]');\r\n target.data('component-subtype', el.val());\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionUpdateSetOptions = function (el, t, e) {\r\n var targets = $('[data-component-target=\"' + t + '\"]');\r\n var values = $('input:checked', el);\r\n targets.each(function (i, e) {\r\n var targetField = $(e).data('component-action-setoptions-field');\r\n\r\n switch ($(e).data('component-action-setoptions-type')) {\r\n case \"showequal\":\r\n //remove all options\r\n if (values.length === 0 || values[0].value === '0') {\r\n $('.select-many-checkbox', e).show();\r\n } else {\r\n $('.select-many-checkbox', e).hide();\r\n $('.select-many-checkbox', e).prop('checked', false).trigger(\"change\");\r\n\r\n values.each(function (i2, e2) {\r\n var value = $(e2).val();\r\n //re add for thisv value\r\n $('.select-many-checkbox', e).each(function () {\r\n if ($('input', this).attr(targetField) === value) {\r\n $(this).show();\r\n }\r\n });\r\n });\r\n }\r\n break;\r\n }\r\n });\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionUpdateSetValue = function (el, t) {\r\n var target = $(t);\r\n target.val($(el).data(\"component-action-value\"));\r\n };\r\n myComponent.PageAction.prototype.pageComponentActionUpdateSetVisibility = function (el, t) {\r\n var targets = $('[data-component-target=\"' + t + '\"]');\r\n var val = el.val();\r\n var element = el;\r\n\r\n targets.each(function (i, e) {\r\n switch ($(e).data('component-action-setvisibility-type')) {\r\n case \"showchecked\":\r\n if (element.prop(\"checked\")) {\r\n $(e).slideDown();\r\n $('input, select, textarea', e).prop(\"disabled\", false);\r\n } else {\r\n $(e).slideUp();\r\n $('input, select, textarea', e).prop(\"disabled\", true);\r\n }\r\n break;\r\n case \"showunchecked\":\r\n if (!this.el.prop(\"checked\")) {\r\n $(e).slideDown();\r\n $('input, select, textarea', e).prop(\"disabled\", false);\r\n } else {\r\n $(e).slideUp();\r\n $('input, select, textarea', e).prop(\"disabled\", true);\r\n }\r\n break;\r\n case \"showequal\":\r\n if (val === $(e).data('component-action-setvisibility-value').toString()) {\r\n $(e).slideDown();\r\n $('input, select, textarea', e).prop(\"disabled\", false);\r\n } else {\r\n $(e).slideUp();\r\n $('input, select, textarea', e).prop(\"disabled\", true);\r\n }\r\n break;\r\n case \"shownotequal\":\r\n if (val === $(e).data('component-action-setvisibility-value').toString()) {\r\n $(e).slideUp();\r\n $('input, select, textarea', e).prop(\"disabled\", true);\r\n } else {\r\n $(e).slideDown();\r\n $('input, select, textarea', e).prop(\"disabled\", false);\r\n }\r\n break;\r\n case \"showcontains\":\r\n var vals = $(e).data('component-action-setvisibility-value').split(',');\r\n if (vals.includes(val)) {\r\n $(e).slideDown();\r\n $('input, select, textarea', e).prop(\"disabled\", false);\r\n } else {\r\n $(e).slideUp();\r\n $('input, select, textarea', e).prop(\"disabled\", true);\r\n }\r\n break;\r\n case \"shownotcontains\":\r\n var vals = $(e).data('component-action-setvisibility-value').split(',');\r\n if (vals.includes(val)) {\r\n $(e).slideUp();\r\n $('input, select, textarea', e).prop(\"disabled\", true);\r\n } else {\r\n $(e).slideDown();\r\n $('input, select, textarea', e).prop(\"disabled\", false);\r\n }\r\n }\r\n });\r\n };\r\n\r\n return myComponent;\r\n}());\r\n\r\napp.util = {\r\n console: (function () {\r\n \"use strict\";\r\n\r\n var queue = [];\r\n var token = {};\r\n\r\n function calloutContent(value) { return customContent(value, \"display: inline-block; background-color: #0479a8; color: white; font-weight: bold; padding: 3px;\"); }\r\n\r\n function successContent(value) { return customContent(value, \"display: inline-block; background-color: springgreen; color: black; font-weight: bold; padding: 3px;\"); }\r\n\r\n function alertContent(value) { return customContent(value, \"display: inline-block; background-color: yellow; color: black; font-weight: bold; padding: 3px;\"); }\r\n\r\n function warningContent(value) { return customContent(value, \"display: inline-block; background-color: #c5050c; color: white; font-weight: bold; padding: 3px;\"); }\r\n\r\n function customContent(value, format) {\r\n queue.push({ content: value, format: format })\r\n return token;\r\n }\r\n\r\n function fancyConsole(fn) {\r\n function fancyConsoleProxy() {\r\n if (!app.util.isDebugMode) return;\r\n\r\n var content = [];\r\n var formats = [];\r\n\r\n for (var i = 0; i < arguments.length; i++) {\r\n var arg = arguments[i];\r\n\r\n if (arg == token) {\r\n var o = queue.shift();\r\n\r\n content.push(\"%c\" + o.content);\r\n formats.push(o.format);\r\n }\r\n else {\r\n if (typeof (arg) === \"object\" || typeof (arg) === \"function\") {\r\n content.push(\"%o\");\r\n formats.push(arg);\r\n }\r\n else {\r\n content.push(\"%c\" + arg);\r\n formats.push(\"\");\r\n }\r\n }\r\n\r\n content.push(\"%c \");\r\n formats.push(\"\");\r\n }\r\n\r\n fn(content.join(\"\"), ...formats);\r\n }\r\n\r\n return fancyConsoleProxy;\r\n }\r\n\r\n return {\r\n log: fancyConsole(console.log),\r\n warn: fancyConsole(console.warn),\r\n error: fancyConsole(console.error),\r\n trace: fancyConsole(console.trace),\r\n group: fancyConsole(console.group),\r\n groupCollapsed: fancyConsole(console.groupCollapsed),\r\n groupEnd: fancyConsole(console.groupEnd),\r\n\r\n calloutContent: calloutContent,\r\n alertContent: alertContent,\r\n warningContent: warningContent,\r\n successContent: successContent,\r\n customContent: customContent\r\n };\r\n })(),\r\n copyToClipboard: function (s) {\r\n if (window.clipboardData && window.clipboardData.setData) {\r\n // IE specific code path to prevent textarea being shown while dialog is visible.\r\n return clipboardData.setData(\"Text\", s);\r\n } else if (document.queryCommandSupported && document.queryCommandSupported(\"copy\")) {\r\n var textarea = document.createElement(\"textarea\");\r\n textarea.textContent = s;\r\n textarea.style.position = \"fixed\"; // Prevent scrolling to bottom of page in MS Edge.\r\n document.body.appendChild(textarea);\r\n textarea.select();\r\n try {\r\n return document.execCommand(\"copy\"); // Security exception may be thrown by some browsers.\r\n } catch (ex) {\r\n console.warn(\"Copy to clipboard failed.\", ex);\r\n return false;\r\n } finally {\r\n document.body.removeChild(textarea);\r\n }\r\n }\r\n },\r\n dateOrNull: function (s) {\r\n var d = new Date(s);\r\n return isNaN(d) ? null : d;\r\n },\r\n\r\n getElementValue: function (el, valueType) {\r\n if (el instanceof NodeList) {\r\n el = el[0];\r\n }\r\n switch (valueType) {\r\n case 'html':\r\n return el.outerHTML;\r\n case 'seltext':\r\n return el.options[el.selectedIndex].text;\r\n case 'val':\r\n return el.value;\r\n default:\r\n return el.value;\r\n }\r\n },\r\n getGuid: function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0;\r\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n },\r\n getIndexByPropertyValue: function (array, property, value) {\r\n var r = -1;\r\n array.some(function (item, i) {\r\n if (item[property] === value) {\r\n r = i;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return r;\r\n },\r\n getPageSize: function () {\r\n var w = $(window).width();\r\n if (w < 768) {\r\n return 0;\r\n }\r\n else if (w <= 992) {\r\n return 1;\r\n }\r\n else if (w <= 1200) {\r\n return 3;\r\n }\r\n return 4;\r\n },\r\n getFormattedNumber: function (value, prepend) {\r\n if (value < 0) {\r\n prepend = \"-\" + (prepend ? prepend : \"\");\r\n value = Math.abs(value);\r\n }\r\n return (prepend ? prepend : \"\") + parseFloat(value).toLocaleString();\r\n },\r\n getAccountingNumber: function (value, prepend, append) {\r\n if (value < 0) {\r\n prepend = \"(\" + (prepend ? prepend : \"\");\r\n append = (append ? append : \"\") + \")\";\r\n value = Math.abs(value);\r\n }\r\n return (prepend ? prepend : \"\") + parseFloat(value).toLocaleString(undefined, { 'minimumFractionDigits': 2, 'maximumFractionDigits': 2 }) + (append ? append : \"\");\r\n },\r\n getShortFriendlyNumber: function (value, prepend) {\r\n var format;\r\n var numberFormats = [\r\n { s: \"T\", v: 1000000000000, d: 0 },\r\n { s: \"B\", v: 1000000000, d: 0 },\r\n { s: \"M\", v: 1000000, d: 0 },\r\n { s: \"k\", v: 1000, d: 0 }\r\n ];\r\n\r\n if (value < 0) {\r\n prepend = \"-\" + (prepend ? prepend : \"\");\r\n value = Math.abs(value);\r\n }\r\n\r\n for (var i = 0; i < numberFormats.length; i++) {\r\n if (value >= numberFormats[i].v) {\r\n format = numberFormats[i];\r\n value = (value / format.v).toFixed(format.d);\r\n break;\r\n }\r\n }\r\n\r\n if (format) { value = value + format.s; }\r\n value = (prepend ? prepend : \"\") + value;\r\n\r\n return value;\r\n },\r\n getFriendlyNumber: function (value, prepend) {\r\n var format;\r\n var numberFormats = [\r\n { s: \"T\", v: 1000000000000, d: 2 },\r\n { s: \"B\", v: 1000000000, d: 2 },\r\n { s: \"M\", v: 1000000, d: 2 },\r\n { s: \"k\", v: 1000, d: 2 }\r\n ];\r\n\r\n if (value < 0) {\r\n prepend = \"-\" + (prepend ? prepend : \"\");\r\n value = Math.abs(value);\r\n }\r\n\r\n for (var i = 0; i < numberFormats.length; i++) {\r\n if (value >= numberFormats[i].v) {\r\n format = numberFormats[i];\r\n value = (value / format.v).toFixed(format.d);\r\n break;\r\n }\r\n }\r\n\r\n if (format) { value = value + format.s; }\r\n value = (prepend ? prepend : \"\") + value;\r\n\r\n return value;\r\n },\r\n\r\n isDebugMode: true,\r\n isJsonString: function (s) {\r\n try {\r\n JSON.parse(s);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n isPageSmall: function () { return this.getPageSize() === 0; },\r\n isPageMedium: function () { return this.getPageSize() === 1; },\r\n isPageLarge: function () { return this.getPageSize() === 2; },\r\n isPageExtraLarge: function () { return this.getPageSize() === 3; },\r\n isPrintableCharacter: function (event) {\r\n //special cases\r\n\r\n //We do not define space as a printable character\r\n if (event.key === \" \")\r\n return false;\r\n\r\n //As backspace will change the value, we define it as printable\r\n if (event.key === \"Backspace\")\r\n return true;\r\n //per the specs- printable characters will return single character if it is a printable. \r\n //If it is a control, it will be longer than 1 character. \r\n //If it is dead or unknown, it will be a defined string (\"Dead\" or \"Unidentified\")\r\n\r\n return event.key.length === 1; \r\n //return s === 8 || (s > 47 && s < 58) || (s > 64 && s < 91) || (s > 95 && s < 112) || (s > 185 && s < 193) || (s > 218 && s < 223);\r\n },\r\n\r\n merge: function (left, right, target) {\r\n var result = [];\r\n\r\n while (left.length && right.length) {\r\n //if (left[0] <= right[0]) {\r\n if ($('[data-label=\"' + target + '\"]', left[0]).text() <=\r\n $('[data-label=\"' + target + '\"]', right[0]).text()) {\r\n result.push(left.shift());\r\n } else {\r\n result.push(right.shift());\r\n }\r\n }\r\n\r\n if (this.isDebugMode) {\r\n app.util.console.groupCollapsed(\"left: \" + left.length);\r\n app.util.console.groupEnd(\" right: \" + right.length);\r\n }\r\n\r\n while (left.length) result.push(left.shift());\r\n while (right.length) result.push(right.shift());\r\n\r\n return result;\r\n },\r\n mergeSort: function (arr, target) {\r\n if (arr.length < 2) return arr;\r\n\r\n var middle = parseInt(arr.length / 2);\r\n var left = arr.slice(0, middle);\r\n var right = arr.slice(middle, arr.length);\r\n\r\n return this.merge(this.mergeSort(left, target), this.mergeSort(right, target), target);\r\n }\r\n};\r\n\r\n$(function () {\r\n app.page = new app.Page(window.applicationPath);\r\n $(document).trigger('page-init-complete');\r\n});","//*******************************************************************************************\r\n//* WaMS Component Framework - app.input.js\r\n//* Version 0.11\r\n//* Author: Damian Koch\r\n//* Component framework input helpers plugin\r\n//* Requires jQuery, WaMS Component Framework\r\n//* \r\n//* This component adds some rich input features. When this file is loaded, certain\r\n//* fields/attributes will be looked for in forms on showEditMode complete.\r\n//* 04/18/22 DBK: Updates to support component framework 1.07\r\n//*******************************************************************************************\r\n\r\napp.input = (function () {\r\n var myInput = {\r\n Init: function () {\r\n this.initInputComponents(document);\r\n //init page\r\n\r\n //init future components\r\n $(document).on('component-bind-edit-mode-complete', function (e, component) {\r\n app.util.console.log('component-bind-edit-mode-complete triggered: ' + component.type);\r\n app.input.initInputComponents(component.editComponent);\r\n });\r\n },\r\n initInputComponents: function (el) {\r\n app.input.initMasks(el);\r\n app.input.initTextEditor(el);\r\n app.input.initDatePicker(el);\r\n app.input.initSelectMany(el);\r\n app.input.initAutocomplete(el);\r\n },\r\n initMasks: function (editComponent) {\r\n $('[data-component-input-type=\"Phone\"]', editComponent).inputmask('(999)999-9999');\r\n $('[data-component-input-type=\"phoneext\"]', editComponent).inputmask('(999)999-9999 x99999');\r\n $('[data-component-input-type=\"date\"]', editComponent).inputmask('99/99/9999');\r\n $('[data-component-input-type=\"numeric\"]', editComponent).inputmask('numeric');\r\n $('[data-component-input-type=\"percentage\"]', editComponent).inputmask('percentage');\r\n $('[data-component-input-type=\"currency\"]', editComponent).inputmask('currency', { prefix: '$', groupSeparator: ',' });\r\n $('[data-component-input-type=\"ssn\"]', editComponent).inputmask('ssn');\r\n },\r\n\r\n initSelectMany: function (editComponent) {\r\n $('[data-role=\"select-many\"]', editComponent).each(function () {\r\n var selectManyContext = this;\r\n var listSelected = function (el) {\r\n var selectedCheckboxNames;\r\n var context = $(el).closest('[data-role=\"select-many\"]');\r\n var fieldSet = $('fieldset', context);\r\n\r\n if ($('[type=\"checkbox\"]:not(:checked)', fieldSet).length === 0) {\r\n selectedCheckboxNames = 'All';\r\n }\r\n else {\r\n if ($('[type=\"checkbox\"]:checked', fieldSet).length === 0) {\r\n selectedCheckboxNames = 'None';\r\n } else {\r\n selectedCheckboxNames = $('[type=\"checkbox\"]:checked + label', fieldSet).map(function () {\r\n return this.innerText;\r\n }).get().join(', ');\r\n }\r\n }\r\n\r\n $('[data-role=\"selected-item-list\"]', context).text(selectedCheckboxNames);\r\n };\r\n\r\n listSelected($('fieldset', this));\r\n\r\n //on change update selection list label\r\n $('input[type=\"checkbox\"]', selectManyContext).on('change', function () { listSelected(this); });\r\n\r\n //filter event listener\r\n $(selectManyContext).on('keyup', '[data-role=\"select-many-filter\"]', function () {\r\n var value = $(this).val().toLowerCase();\r\n const selMany = $(this).closest('[data-role=\"select-many\"]');\r\n\r\n selMany.find('.select-many-checkbox').each(function () {\r\n if ($(this).find('label').text().toLowerCase().search(value) > -1) {\r\n $(this).show();\r\n }\r\n else {\r\n $(this).hide();\r\n }\r\n });\r\n\r\n var selAll = selMany.find('[type=\"checkbox\"][data-role~=\"selectall\"]:visible');\r\n var selAllChecked = true;\r\n\r\n\r\n //loop through visible values, if any is false, then mark the box as not all selected\r\n selMany.find('.select-many-checkbox input[type=\"checkbox\"]:visible').each(function (ind, el) {\r\n if ($(el).prop('checked') !== true) {\r\n selAllChecked = false;\r\n // returning false breaks from loop\r\n return false;\r\n }\r\n });\r\n\r\n selAll.prop('checked', selAllChecked);\r\n });\r\n\r\n app.util.console.log(editComponent);\r\n\r\n //custom dropdown filter event listener\r\n $(editComponent).on('change', 'select[data-role=\"filter-select-many\"]', function () {\r\n\r\n //var filterField = $(this).data(\"filter-field\");\r\n var filterTargetFieldset = $('#fst' + $(this).data('target'), selectManyContext);\r\n //var selectedOption = $(this).val();\r\n\r\n var allSelects = $('select[data-role=\"filter-select-many\"][data-target=\"' + $(this).data('target') + '\"]');\r\n\r\n filterTargetFieldset.find('.select-many-checkbox').each(function () {\r\n var showThis = true;\r\n var curCheckbox = $(this).find('input');\r\n\r\n allSelects.each(function (el) {\r\n var selectedOption = $(this).val();\r\n var filteredField = $(this).data('filter-field');\r\n var filteredFieldValue = curCheckbox.data(filteredField);\r\n\r\n showThis = showThis && (selectedOption == null || selectedOption === '' || filteredFieldValue == selectedOption);\r\n });\r\n\r\n if (showThis) {\r\n $(this).show();\r\n }\r\n else {\r\n $(this).hide();\r\n }\r\n });\r\n\r\n var selAll = $('[type=\"checkbox\"][data-role~=\"selectall\"][name=\"' + $(this).data('target') + '\"]:visible');\r\n var selAllChecked = true;\r\n $('.select-many-checkbox input[type=\"checkbox\"][name=\"' + $(this).data('target') + '\"]:visible').each(function (ind, el) {\r\n if ($(el).prop('checked') != true) {\r\n selAllChecked = false;\r\n // returning false breaks from loop\r\n return false;\r\n }\r\n });\r\n\r\n selAll.prop('checked', selAllChecked);\r\n });\r\n });\r\n },\r\n initDatePicker: function (editComponent) {\r\n $('[data-component-role=\"startdate\"]', editComponent).fdatepicker().on('changeDate', function (ev) {\r\n //When start date changes, check the end date\r\n //Find end date\r\n var endDateElement = $('#' + $(this).data('enddate-target'), $(this.form)).fdatepicker();\r\n\r\n if (ev.date.valueOf() > new Date(endDateElement.val()).getTime()) {\r\n //If the end date is too early, set to know and give focus\r\n var newDate = new Date(ev.date);\r\n newDate.setDate(newDate.getDate() + 1);\r\n endDateElement.fdatepicker('update', newDate);\r\n $(this).fdatepicker('hide');\r\n endDateElement[0].focus();\r\n }\r\n\r\n }).data('datepicker');\r\n\r\n $('[data-component-role=\"enddate\"]', editComponent).fdatepicker({\r\n onRender: function (date) {\r\n //get start date\r\n var startDate = $('[data-enddate-target=\"' + this.element.attr('id') + '\"').fdatepicker();\r\n //Only allow \r\n return date.valueOf() <= new Date(startDate.val()).getTime() ? 'disabled' : '';\r\n }\r\n }).on('changeDate', function (ev) {\r\n $(this).fdatepicker('hide');\r\n }).data('datepicker');\r\n\r\n\r\n $('[data-role~=\"datepicker\"]', editComponent).fdatepicker();\r\n },\r\n initTextEditor: function (editComponent) {\r\n $('[data-role~=\"richtext\"]', editComponent).each(function (index) {\r\n tinymce.remove('#' + this.id);\r\n tinyMCE.baseURL = app.page.appPath+ \"/content/tinymce\";\r\n tinymce.init({\r\n relative_urls: false,\r\n remove_script_host: false,\r\n selector: '#' + this.id, // change this value according to your HTML\r\n block_formats:\r\n 'Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre',\r\n plugins: 'code lists link table',\r\n mode: 'textareas',\r\n branding: false,\r\n menubar: false,\r\n toolbar: [\r\n 'bold italic superscript subscript | formatselect | numlist bullist | forecolor backcolor | alignleft aligncenter alignright | link | indent outdent | removeformat code'\r\n ],\r\n init_instance_callback: function (editor) {\r\n editor.on('change', function (e) {\r\n tinymce.triggerSave();\r\n $('#' + e.target.id).valid();\r\n });\r\n }\r\n });\r\n\r\n //Hook hidden field into the validation\r\n //Tried setting this on the form on creation, on custom validators.... Would not bind correctly\r\n //This works the best out of kludge options\r\n var form = $(this.form);\r\n if (form != undefined) {\r\n //create the validator\r\n $.validator.unobtrusive.parse(form);\r\n //set validator options\r\n var validator = form.data('validator');\r\n if (validator !== undefined) {\r\n validator.settings.ignore =\r\n ':hidden:not([data-role~=\"richtext\"]),.mce-content-body';\r\n }\r\n }\r\n });\r\n },\r\n initAutocomplete: function (editComponent) {\r\n $('[data-role~=\"autocomplete\"]', editComponent).each(function () {\r\n var ac = $(this).AutoComplete();\r\n });\r\n app.Autocomplete.BindSetButtons(editComponent);\r\n }\r\n };\r\n\r\n return myInput;\r\n}());\r\n\r\n$(function () {\r\n app.input.Init();\r\n});\r\n","//*************************************************************************************\r\n//* WaMS Component Framework - app.grid.js\r\n//* Version 0.22\r\n//* Author: Damian Koch\r\n//* Component framework grids plugin\r\n//* Requires jQuery, WaMS Component Framework\r\n//* \r\n//* This component adds some grid features. Any component with 'component-grid' in data-role\r\n//* will be checked for [data-role=\"sort-action\"] on sorting controls, and [data-role=\"filter-action\"]\r\n//* on filtering controls.\r\n//* \r\n//* 04/18/22 DBK: Updates to support component framework 1.07\r\n//* 07/07/22 BWH: Updates Keypress event handlers\r\n//*************************************************************************************\r\n\r\n\r\napp.grids = (function () {\r\n var myGrids = {\r\n Init: function () {\r\n this.initGridComponents();\r\n this.initPageGridActions();\r\n $(document).on(\"component-init-complete\", function (e, component) { app.grids.initGridComponent(component); });\r\n $(document).on(\"component-action-init-complete\", function (e, component) { app.grids.initPageGridAction(component); });\r\n },\r\n initGridComponents: function () {\r\n\r\n //This entire mess can be cleaned up if components get identified by guid\r\n var gridComponents = new Array();\r\n $('[data-role~=\"component-grid\"]').each(function (i, gridElement) {\r\n gridComponents.push($(gridElement).data('component-type'));\r\n });\r\n gridComponents = $.unique(gridComponents);\r\n $.each(gridComponents, function (i, componentType) {\r\n var grids = app.page.allComponents[componentType];\r\n grids.forEach(function (grid) {\r\n app.grids.initGridComponent(grid);\r\n });\r\n });\r\n\r\n $(document).on(\"component-bind-view-mode-complete\", function (e, component) {\r\n app.util.console.log(\"component-bind-view-mode-complete triggered: \" + component.type);\r\n if (component.el.data('role').indexOf('component-grid')) {\r\n $('[data-role=\"sort-action\"]', component.el).attr('tabindex', '0');\r\n $('[data-role=\"sort-action\"]', component.el).attr('role', 'button');\r\n $('[data-role=\"sort-action\"]', component.el).on('click', $.proxy(component.sortGrid, component));\r\n $('[data-role=\"dropdown-all\"]', component.el).on('change', $.proxy(component.changeAllDropdown, component));\r\n $('[data-role=\"textbox-all\"]', component.el).on('keyup', $.proxy(component.changeAllTextbox, component));\r\n $('[data-role=\"check-all\"]', component.el).on('click', $.proxy(component.checkAll, component));\r\n $('[data-role=\"sort-action\"]', component.el).keypress(function (e) {\r\n var code = e.key;\r\n if (code === \"Enter\" || code === \"Space\") {\r\n $(this).click();\r\n }\r\n });\r\n $('[data-role=\"grid-page-action\"]', component.el).on('click', $.proxy(component.pageGrid, component));\r\n //Not sure why this was here. Was added in Study Abroad.\r\n //app.input.initDatePicker(document);\r\n }\r\n });\r\n },\r\n initGridComponent: function (gridComponent) {\r\n gridComponent.selectors.table = 'table';\r\n gridComponent.selectors.filterForm = 'form[data-role~=\"filter-grid\"][data-component-form-target~=\"' + gridComponent.type + '\"]';\r\n gridComponent.selectors.pageSize = '[data-role~=\"grid-page-size\"][data-component-form-target=\"' + gridComponent.type + '\"]';\r\n gridComponent.selectors.showForResults = '[data-role~=\"grid-show-for-results\"][data-component-form-target~=\"' + gridComponent.type + '\"]';\r\n\r\n if ($('[data-role~=\"component\"]', gridComponent.el).length) {\r\n gridComponent.selectors.rows = 'tbody:not([data-component-role=\"noResults\"])';\r\n }\r\n else {\r\n gridComponent.selectors.rows = 'tbody > tr:not([data-component-role=\"noResults\"])';\r\n }\r\n\r\n gridComponent.gridType = gridComponent.el.data('grid-type') || 'client';\r\n\r\n if (gridComponent.gridType === 'client') {\r\n gridComponent.filterGrid = function () {\r\n var context = $(this.selectors.table, this.el);\r\n var rows = $(this.selectors.rows, context);\r\n\r\n rows.show();\r\n\r\n $(':input', this.selectors.filterForm).each(function (i, e) {\r\n var el = $(e);\r\n if (el.val() !== '') {\r\n var field;\r\n\r\n if (el.data('target')) {\r\n field = '[data-label=\"' + el.data('target') + '\"]';\r\n }\r\n else {\r\n field = '';\r\n }\r\n\r\n var values = el.val().toUpperCase().split(/\\s+/);\r\n rows.each(function (i, e) {\r\n var hide = false;\r\n\r\n $.each(values, function (index, v) {\r\n if ($(field + ':icontains(\"' + v + '\")', e).length < 1) {\r\n hide = true;\r\n return;\r\n }\r\n });\r\n if (hide) {\r\n $(e).hide();\r\n }\r\n });\r\n }\r\n });\r\n\r\n //showhide noresults\r\n //TODO: move selectors to selector params\r\n if ($(this.selectors.rows + ':visible', context).length) {\r\n $('[data-component-role=\"noResults\"]', context).hide();\r\n } else {\r\n $('[data-component-role=\"noResults\"]', context).show();\r\n }\r\n };\r\n gridComponent.pageGrid = function () {\r\n alert('do this!');\r\n };\r\n gridComponent.sortGrid = function (e) {\r\n var el = $(e.target);\r\n var context = $(this.selectors.table, this.el);\r\n var rows = $(this.selectors.rows, context).get();\r\n var sortDescending = el.hasClass('asc');\r\n var component = this;\r\n\r\n $('[data-role=\"sort-action\"]', context).removeClass('asc').removeClass('desc').removeAttr('aria-sort');\r\n\r\n rows = app.util.mergeSort(rows, el.data('target'));\r\n\r\n if (sortDescending) {\r\n el.addClass('desc');\r\n el.attr('aria-sort', 'descending');\r\n rows = rows.reverse();\r\n } else {\r\n\r\n el.addClass('asc');\r\n el.attr('aria-sort', 'ascending');\r\n\r\n }\r\n\r\n if (component.selectors.rows === 'tbody') {\r\n $.each(rows, function (index, row) {\r\n context.append(row);\r\n });\r\n }\r\n else {\r\n $.each(rows, function (index, row) {\r\n context.children('tbody').append(row);\r\n });\r\n }\r\n };\r\n $(gridComponent.selectors.filterForm).on('keydown', function () {\r\n switch (event.keyCode) {\r\n case 13:\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n });\r\n } else {\r\n gridComponent.filterGrid = function () { this.refreshGrid(); };\r\n gridComponent.pageGrid = function (e) {\r\n var page = $(e.target).data('page-value');\r\n this.refreshGrid(page);\r\n };\r\n gridComponent.sortGrid = function (e) {\r\n var el = $(e.target);\r\n var context = $(this.selectors.table, this.el);\r\n var sortDescending = el.hasClass('asc');\r\n\r\n $('[data-role=\"sort-action\"]', context).removeClass('asc').removeClass('desc').removeAttr('aria-sort');\r\n\r\n if (sortDescending) {\r\n el.addClass('desc');\r\n el.attr('aria-sort', 'descending');\r\n } else {\r\n el.addClass('asc');\r\n el.attr('aria-sort', 'ascending');\r\n }\r\n\r\n this.refreshGrid();\r\n };\r\n gridComponent.checkAll = function (e) {\r\n if ($(e.target).prop('checked')) {\r\n $(\"[name*='\" + $(e.target).data('name') + \"']\").prop('checked', true);\r\n }\r\n else {\r\n $(\"[name*='\" + $(e.target).data('name') + \"']\").prop('checked', false);\r\n }\r\n };\r\n gridComponent.changeAllDropdown = function (e) {\r\n $(\"[name*='\" + $(e.target).data('name') + \"']\").val($(e.target).val());\r\n };\r\n gridComponent.changeAllTextbox = function (e) {\r\n $(\"[name*='\" + $(e.target).data('name') + \"']\").val($(e.target).val());\r\n };\r\n gridComponent.refreshGrid = function (pageNumber,otherData) {\r\n $(document).trigger(\"component-filter-grid-started\", this);\r\n\r\n var form = $(this.selectors.filterForm);\r\n var pageSize = $(this.selectors.pageSize).val();\r\n var el = this.el;\r\n var context = $(this.selectors.table, this.el);\r\n\r\n //get filters\r\n var filters = form.serializeArray();\r\n var pageNum = pageNumber || 1;\r\n filters.push({ name: \"pageNumber\", value: pageNum });\r\n filters.push({ name: \"pageSize\", value: pageSize });\r\n filters.push({ name: \"sortField\", value: $('[aria-sort]', context).data('target') });\r\n filters.push({ name: \"isSortAscending\", value: $('[aria-sort]', context).length === 0 || $('[aria-sort]', context).attr('aria-sort') === 'ascending' });\r\n //This is an option that let's you pass in additional data to the refresh action.\r\n //This could be used to create records, do sorting, one time filters etc. Values are not persisted in the filter form.\r\n //otherData should be an array with objects as above (name/value)\r\n if (otherData) {\r\n filters = filters.concat(otherData);\r\n }\r\n this.startLoading();\r\n if (this.request != null) {\r\n this.request.abort();\r\n this.request = null;\r\n }\r\n this.request = $.ajax({ url: this.urls.view, data: $.param(filters), context: this, error: this.page.handleAjaxError, type: 'POST' }).done(function (data) {\r\n el.html(data);\r\n this.endLoading();\r\n this.bindViewMode();\r\n var forResults = $(this.selectors.showForResults);\r\n\r\n if (forResults) {\r\n if ($('.no-results', this.el).length) {\r\n forResults.hide();\r\n eval();\r\n } else {\r\n forResults.show();\r\n eval();\r\n }\r\n } \r\n });\r\n\r\n $(document).trigger(\"component-filter-grid-completed\", this);\r\n $(document).trigger(\"component-filter-grid-completed-\" + this.type, this);\r\n };\r\n }\r\n\r\n $(gridComponent.componentActions.report).each(function () {\r\n app.grids.initPageGridAction(this);\r\n });\r\n\r\n if (gridComponent.state === \"active\") {\r\n $('[data-role=\"sort-action\"]', gridComponent.el).on('click', $.proxy(gridComponent.sortGrid, gridComponent));\r\n $('[data-role=\"grid-page-action\"]', gridComponent.el).on('click', $.proxy(gridComponent.pageGrid, gridComponent));\r\n }\r\n //Prevent enter key and escape to prevent unintended form posts\r\n $('form[data-component-action=\"filtergrid\"] input, form[data-component-action=\"filtergrid\"] select').on('keydown', $.proxy(function () {\r\n switch (event.keyCode) {\r\n case 13:\r\n event.preventDefault();\r\n event.stopPropagation();\r\n break;\r\n case 27:\r\n event.preventDefault();\r\n event.stopPropagation();\r\n break;\r\n }\r\n }, this));\r\n },\r\n initPageGridActions: function () {\r\n if (app.page.componentActions.report) {\r\n app.page.componentActions.report.forEach(function (pageAction) {\r\n app.grids.initPageGridAction(pageAction);\r\n });\r\n }\r\n },\r\n initPageGridAction: function (pageAction) {\r\n switch (pageAction.action) {\r\n case \"filtergrid\":\r\n pageAction.triggerAction = function (e) {\r\n if (e.type !== \"keyup\" || app.util.isPrintableCharacter(e)) {\r\n var delay = 300;\r\n if (e.type !== \"keyup\") {\r\n delay = 0;\r\n }\r\n //if keyup, add a delay\r\n if (this.timeout !== null) { clearTimeout(this.timeout); }\r\n var that = this;\r\n this.timeout = setTimeout(function () {\r\n\r\n var theTargets = that.target.split(\" \");\r\n theTargets.forEach(function (theTarget) {\r\n var grids = this.app.page.allComponents[theTarget];\r\n grids.forEach(function (grid) {\r\n grid.filterGrid(e);\r\n });\r\n });\r\n\r\n }, delay, e, that);\r\n }\r\n };\r\n pageAction.el.off(pageAction.event).on(pageAction.event, $.proxy(pageAction.triggerAction, pageAction));\r\n break;\r\n case \"viewgridpage\":\r\n pageAction.triggerAction = function (e) {\r\n var target = this.page.components[this.target][0];\r\n target.filterGrid($(e.target).data('component-action-value'));\r\n };\r\n pageAction.el.off(pageAction.event).on(pageAction.event, $.proxy(pageAction.triggerAction, pageAction));\r\n break;\r\n }\r\n }\r\n };\r\n\r\n return myGrids;\r\n}());\r\n\r\n$(function () {\r\n app.grids.Init();\r\n});\r\n","//*************************************************************************************\r\n//* WaMS Component Framework - app.fileUpload.js\r\n//* Version 0.1\r\n//* Author: Huisenga\r\n//* Component framework file upload plugin\r\n//* Requires jQuery, WaMS Component Framework, fine uploader\r\n//* \r\n//* Component tags file upload elements and intiailizes them using fine uploader\r\n//* \r\n//*************************************************************************************\r\n//2/23/18 Huisenga [STUDYAB-339]: Added Binding for edit mode complete\r\n\r\napp.fileUploaders = (function () {\r\n var myUploaders = {\r\n Init: function () {\r\n this.initFileUploadComponents();\r\n },\r\n initFileUploadComponents: function () {\r\n $(document).on(\"component-bind-edit-mode-complete\", function (e, component) {\r\n $('[data-role~=\"file-Upload\"]', component.el).each(function (i, fileUploadElement) {\r\n app.fileUploaders.initFileUploadComponent(fileUploadElement);\r\n });\r\n });\r\n $('[data-role~=\"file-Upload\"]').each(function (i, fileUploadElement) {\r\n app.fileUploaders.initFileUploadComponent(fileUploadElement);\r\n });\r\n },\r\n initFileUploadComponent: function (fileUploadElement) {\r\n var requestEndpoint = $(fileUploadElement).data('requestendpoint') ? $(fileUploadElement).data('requestendpoint') : '/File/Upload';\r\n var deleteEndpoint = $(fileUploadElement).data('deleteendpoint') ? $(fileUploadElement).data('deleteendpoint') : '/File/Delete';\r\n var multiUpload = $(fileUploadElement).data('multiupload') === \"True\";\r\n var allowedExtensions = $(fileUploadElement).data('allowedextensions');\r\n if (!allowedExtensions) {\r\n allowedExtensionArray = [];\r\n } else {\r\n allowedExtensionArray = allowedExtensions.split(',');\r\n }\r\n var sizeLimit = $(fileUploadElement).data('sizelimit');\r\n if (!sizeLimit) {\r\n sizeLimit = 0;\r\n }\r\n\r\n var uploader = new qq.FineUploader({\r\n debug: false,\r\n multiple: multiUpload,\r\n element: fileUploadElement,\r\n request: {\r\n endpoint: requestEndpoint\r\n },\r\n deleteFile: {\r\n enabled: true,\r\n method: \"POST\",\r\n endpoint: deleteEndpoint\r\n },\r\n callbacks: {\r\n onComplete: function (id, name, response) {\r\n if (response.success === true) {\r\n\r\n //we have finished uploading. If you have any custom data returns, process them here\r\n if (typeof response.fileName !== 'undefined')\r\n this.setName(id, response.fileName);\r\n app.fileUploaders.UpdateFile(this, id);\r\n }\r\n },\r\n onStatusChange: function (id, oldStatus, newStatus) {\r\n if (newStatus === 'upload successful') {\r\n app.fileUploaders.UpdateFile(this, id);\r\n }\r\n else {\r\n app.fileUploaders.RemoveFile(this, id);\r\n }\r\n }\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: \"/Content/placeholders/not_available-generic.png\",\r\n waitingPath: \"/Content/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n validation: {\r\n allowedExtensions: allowedExtensionArray,\r\n sizeLimit: sizeLimit\r\n },\r\n template: 'qq-simple-thumbnails-template'\r\n });\r\n if ($(\".initfile\", $(fileUploadElement)).length && !multiUpload) {\r\n //has init file, but is single upload\r\n //hide button\r\n $('.qq-upload-button-selector', $(fileUploadElement)).hide();\r\n }\r\n $(\".initfile\", $(fileUploadElement)).each(function () {\r\n if ($(this).data('initialfile-uuid') !== \"\") {\r\n uploader.addInitialFiles([{\r\n name: $(this).data('initialfile-name'),\r\n uuid: $(this).data('initialfile-uuid'),\r\n thumbnailUrl: $(this).data('initialfile-thumbnailurl'),\r\n size: $(this).data('initialfile-size')\r\n }]);\r\n }\r\n });\r\n }\r\n\r\n };\r\n myUploaders.UpdateFile = function (file, id) {\r\n var targetIdBase = $(file._options.element).data('target-id');\r\n if ($(file._options.element).data('multiupload') === \"True\") {\r\n var fileSet = $('#' + targetIdBase + '_fileset');\r\n\r\n var fileElement = $('[data-index=\"' + id + '\"]', fileSet);\r\n if (!fileElement.length) {\r\n var newTemplate = $('.file-template .filespec', fileSet).clone();\r\n $('.templateField', newTemplate).each(function () {\r\n var name = $(this).attr('name');\r\n $(this).attr('name', name.replace('fileIndex', id));\r\n var idVal = $(this).attr('id');\r\n $(this).attr('id', idVal.replace('fileIndex', id));\r\n $(this).val('');\r\n });\r\n\r\n $('.file-index', newTemplate).val(id);\r\n //$('.templateValidation', newTemplate).each(function () {\r\n // var name = $(this).attr('data-valmsg-for');\r\n // $(this).attr('data-valmsg-for', name.replace('feeIndex', newIndex));\r\n //});\r\n\r\n newTemplate.attr('data-index', id);\r\n\r\n //enable the fields\r\n $('input', newTemplate).removeAttr('disabled');\r\n\r\n fileSet.append(newTemplate);\r\n fileElement = newTemplate;\r\n }\r\n\r\n //an item in the fileset should now exist. Go ahead and update the data within\r\n $('.file-guid', fileElement).val(file.getUuid(id));\r\n $('.file-size', fileElement).val(file.getSize(id));\r\n $('.file-name', fileElement).val(file.getName(id));\r\n\r\n } else {\r\n //if single file, update the single file variables\r\n $('#' + targetIdBase + '_Guid').val(file.getUuid(id));\r\n $('#' + targetIdBase + '_Size').val(file.getSize(id));\r\n $('#' + targetIdBase + '_FileName').val(file.getName(id));\r\n\r\n $('.qq-upload-button-selector', $(file._options.element)).hide();\r\n }\r\n //$(\"form\").data(\"unobtrusiveValidation\", null);\r\n //$(\"form\").data(\"validator\", null);\r\n //$.validator.unobtrusive.parse($(\"form\"));\r\n };\r\n\r\n myUploaders.RemoveFile = function (file, id) {\r\n var targetIdBase = $(file._options.element).data('target-id');\r\n if ($(file._options.element).data('multiupload') === \"True\") {\r\n //if multifile, find the dataset and remove this item. It will be readded if file completes\r\n var fileSet = $('#' + targetIdBase + '_fileset');\r\n $('[data-index=\"' + id + '\"]', fileSet).remove();\r\n } else {\r\n //if single file, just empty out the params\r\n $('#' + targetIdBase + '_Guid').val('');\r\n $('#' + targetIdBase + '_Size').val('');\r\n $('#' + targetIdBase + '_FileName').val('');\r\n $('.qq-upload-button-selector', $(file._options.element)).show();\r\n }\r\n };\r\n return myUploaders;\r\n}());\r\n$(document).ready(function () {\r\n app.fileUploaders.Init();\r\n});\r\n","app.pagecontent = (function () {\r\n var myPageContent = {\r\n Init: function () {\r\n this.BindContentEditor(document);\r\n $(document).on('component-bind-edit-mode-complete', function (e, component) {\r\n app.pagecontent.BindContentEditor(component.el);\r\n });\r\n },\r\n BindContentEditor: function (el) {\r\n $('.pagecontent-placeholder',$(el)).on('click', function () {\r\n $.ajax({ url: '/Admin/Content/EditForm', data: { mnemonic: $(this).data('pagecontentmnemonic'), isTooltip : $(this).data('istooltip') }, context: this, error: app.Page.handleAjaxError }).done(function (data) {\r\n $('#pageContentModal #pageContentForm').html(data);\r\n $('#pageContentModal').foundation('open');\r\n app.input.initTextEditor($('#pageContentModal'));\r\n });\r\n });\r\n }\r\n };\r\n return myPageContent;\r\n}());\r\n\r\n$(function () {\r\n app.pagecontent.Init();\r\n});","$(document).on('page-init-complete',\r\n function () {\r\n //Case insensitive contains\r\n jQuery.expr[':'].icontains = function (a, i, m) {\r\n return jQuery(a).text().toUpperCase()\r\n .indexOf(m[3].toUpperCase()) >= 0;\r\n };\r\n });","//*************************************************************************************\r\n//* WaMS Component Framework Autocomplete - app.autocomplete.js\r\n//* Version 0.12\r\n//* Author: Bret Huisenga\r\n//* Component framework autocomplete plugin\r\n//* Requires jQuery, WaMS Component Framework\r\n//* \r\n//* This component adds some grid features. Any component with 'component-grid' in data-role\r\n//* will be checked for [data-role=\"sort-action\"] on sorting controls, and [data-role=\"filter-action\"]\r\n//* on filtering controls.\r\n//* \r\n//* 7/07/22 Updates keypress event handler\r\n//*************************************************************************************\r\n\r\nvar AutocompleteObjects = {};\r\njQuery.fn.AutoComplete = function () {\r\n var searchIndex = $(this[0]).data('searchindex');\r\n var autocompleteObject;\r\n if (searchIndex === undefined || searchIndex === '') {\r\n autocompleteObject = new app.Autocomplete($(this));\r\n }\r\n else {\r\n autocompleteObject = AutocompleteObjects[searchIndex];\r\n }\r\n \r\n return autocompleteObject;\r\n};\r\n\r\napp.Autocomplete = (function () {\r\n var myAutocomplete = function (e, options) {\r\n this.el = $(e);\r\n this.id = $(this.el).attr('id');\r\n\r\n Object.defineProperties(this,\r\n {\r\n \"activeItem\": {\r\n \"get\": function () { return this.resultList.find('.autocomplete-item.active'); }\r\n },\r\n \"resultItems\": {\r\n \"get\": function () { return this.resultList.find('.autocomplete-item'); }\r\n },\r\n \"searchText\": {\r\n \"get\": function () { return this.searchBox.val(); }\r\n }\r\n });\r\n\r\n this.searchIndex = this.generateId();\r\n this.options = {\r\n cacheResults: true,\r\n endPoint: '',\r\n initialSelected: null,\r\n initialText: '',\r\n onSelect: function (selectedItem) { },\r\n outputField: '',\r\n placeholder: 'Start typing a first/last name to search...',\r\n searchMinLength: 3,\r\n template: \"