{"version":3,"sources":["Assets/pc/scripts/GSS.portalContainer.js"],"names":["__awaiter","this","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","__generator","body","verb","n","v","op","f","TypeError","g","_","y","t","call","label","ops","pop","trys","length","push","sent","throw","return","Symbol","iterator","GSS","pc","changeClient","el","PortalContainer","progressShow","_prefix","_newClientId","$","closest","attr","location","indexOf","substr","analytics","_clientUserDataKey","_clientUserDataJWTKey","_userDataKey","_session","common","session","remove","Component","ComponentEvent","Content","getContentAsync","contentRequest","_results","_allKeysFound","i","data","_data_1","_space","groupName","j","contentKeys","_key","_value","tryGetFromResourceLookup","_cachedContent","addToResourceLookup","_data","language","getSiteLanguage","contentGroups","_url","_request","Request","postAsync","JSON","parse","ContentGroups","_contentGroup","_content","SpaceName","Key","Value","lookup","space","key","ContentRequest","BellNotification","observeNotificationCount","SignalR","Notifications","startObservingNotifications","count","gssRemoveClass","text","toString","bellNotificationClick","notificationURL","Cart","getCart","dashboardWidgetId","getAttributeValue","widget","attributeNames","setRequiredData","getByEvent","returnType","Json","modalProgress","Disable","_$notifications","getElementByGssName","values","notificationElement","_$cartNav","cartNavElement","CartCount","removeClass","_hrefBefore","_cartAnchor","_newHref","addClass","replace","cart","Components","dump","_componentsByCodeName","mount","componentId","_component","getById","mountEvent","eventName","EventBus","publish","settings","_result","_componentsById","getByIdAsync","getByCodeName","codeName","getByCodeNameAsync","setComponent","component","skipChildComponentIds","setEvents","children","_setupEvent","eventData","subscribe","unmountEvent","unmount","ComponentType","Application","Page","Section","EventType","custom","unMount","_topics","topicName","args","Array","isArray","_i","_a","_topic","_function","getFunction","fn","_args","prototype","context","defaultArgs","Topic","name","showNotification","content","type","options","NotificationType","Success","_options","extend","DefaultNotificationOptions","toastr","success","Info","info","Warning","warning","Error","error","closeButton","debug","extendedTimeOut","hideDuration","hideEasing","hideMethod","newestOnTop","onclick","positionClass","preventDuplicates","progressBar","showDuration","showEasing","showMethod","timeOut","NotificationOptions","get","url","dataType","enableModalProgress","undefined","_enableModalProgress","_enableCache","progressLoading","request","textStatus","jqXHR","status","_errorData","method","UI","setComponentContainerContent","responseText","onFail","Deferred","getAsync","showModalProgress","_xhr","XMLHttpRequest","onreadystatechange","readyState","hideModalProgress","progressHide","window","href","Object","keys","map","encodeURIComponent","join","open","setRequestHeader","send","overrideComponentName","stringify","isNotNullOrEmpty","getCurrentComponentName","getComponentUrl","encodeAndParameterize","_compId","_el","document","querySelector","Attributes","getAttribute","_clientId","clientId","extendValue","Parameters","addAntiForgeryToken","_componentName","displayName","notifyWidgetError","subject","errorData","setTimeout","widgetErrorSettings","subjectParamName","ajax","jQuery","param","cache","post","timeout","contentType","RequestOptions","createContainer","_idAttr","concat","_componentIdAttr","_codeNameAttr","_typeAttr","createTile","_classAttr","Values","tileClass","_tileNameAttr","tileName","_heightAttr","tileHeight","height","_widthAttr","tileWidth","width","disableComponent","forEach","_container","getComponentIdContainer","parent","hide","getComponentNameContainer","html","setMainContent","element","initializeQuillEditor","rawFieldId","encodedFieldId","toolbarOptions","readOnly","direction","_editorId","_quill","Quill","bounds","modules","toolbar","theme","container","style","_keyboard","getModule","bindings","on","delta","_textHtml","innerHTML","val","css","autoDisable","disableInterval","Test","getByIdAsyncTest","getAsyncTest","_urlOk","_urlError","_urlValidationError","e_1","e_2","getAsyncAllTest","_urlWithData","_result1","_result2","_result3","_result4","all","postAsyncAllTest","consumeMessage","message","_action","messageFields","action","actionNames","portalMessage","messaging","empty","display","createMessage","_message","widgetCodeName","getWidgetName","getTileHeight","getWidgetContainer","gssElementName","_height","dashboardWidgetHeight","getTileWidth","_width","dashboardWidgetWidth","getDashboardWidgetId","first","getFullAppUrl","_language","getCookieValue","getWidgetSettings","successFunc","always","_result_1","initializeApp","getUrl","onCompleteFunc","setWidgetStatus","widgetStatus","busy","setApp","available","fail","setErrorData","fileName","errorType","init","ex","initializeTile","setTile","_dashboardWidgetId","generic","getPartial","setStatus","getParameterByName","requestFields","invokeWidgetInit","initFunction","_func","_settingObj","modalShowContent","modalContent","disableDeadZoneClick","sectionIdToHide","_updateContent","_modalContainer","modalValues","createElement","data-backdrop","append","modal","find","toggle","removeData","modalShow","isStatic","getViewAction","ajaxData","callType","cacheEnabled","_contentType","_requestOptions","modalHide","clear","_modalContainerSelector","postByElement","postByDashboardWidgetId","postForm","onComplete","_form","serialize","callbacks","Callbacks","add","setContent","fire","submitForm","delay","useMetaData","_progressModal","close","gssAjaxProgress","queueMsg","subscriptions","each","redirectToFullApp","redirectToSurveyDashboard","baseUrl","redirectToApp","extendSession","_doNothing","refreshAccessToken","onSuccess","resizeTile","_widgetContainer","_resizePayload","resize","_contentElement","getWidgetContentElement","_widgetDashboardId","responseFields","_title","title","setTitle","_msgs","navigationItems","messages","jsFile","functionCalled","statusText","_titleElement","getWidgetTitleElement","setWidgetContainerContent","uiMessage","_prevStatus","_newStatus","toLowerCase","_msg","portal","errorContent","__content","consumeMsgFunc","onWidgetInitializeFail","setUserWidgetSettings","Credential","getInfo","_def","_reqObject","GetToken","admintools","service","Enable","currentDate","Date","_response","id","attributes","userDataId","toISOString","token","apiUrl","samTeamsGatewayUrl","upsert","err","promise","manageInfo","_sessionItem","getItem","Message","diffMili","getTime","tokenTimeoutInMinutes","sessionStorage","removeItem","apiRequest","apiVersion","_apiVersion","_ajax","requestType","_requestData","headers","Authorization","api-version","X-AuditingComponentName","crossDomain","_delete","_get","_post","_put","delete","put","History","pushStateHistoryManually","functionData","manualStateChange","pushStateHistory","history","enableHistory","_uniqueId","opt","replaced","pushState","replaceState","pathname","search","handleStateChangeEvent","initialLoad","state","getState","stateChangeUrl","_completeFunction","functionName","beforeFunctionName","beforeFunctionArgs","stateChangeFunctionName","beforeStateChangeFunctionName","beforeStateChangeFunctionArgs","stateChangeOpt","stateChangeSetStatus","_urlSubString","back","gssWizardSectionError","uniqueWidgetIdName","portalMessageFields","target","portalMessageType","information","valid","disablePortalInject","locale","applicationAsync","updateUserWidgetSetting","_progress","Progress","getByDashboardWidgetId","enableCache","Core","getByDashboardWidgetIdWithHistoryAjax","attrValue","attrProperty","getWithHistoryAjax","getByDashboardWidgetIdWithHistoryCallback","callback","callbackData","getWithHistoryCallback","getByEventWithHistoryAjax","getByEventWithHistoryCallback","postByEvent","getWidgetInfoByDashboardWidgetId","_obj","DashboardWidgetId","Data","getWidgetInfoByEvent","_useDashboardWidgetId","_widgetInfo","_historyReq","attrPropery","gssHistory","manage","getHub","hub","notificationCountEvent","server","getNotificationCountPromise","enabled","Adapter","bind","_stateChange","load","requestData","override","pageName","callBackService","_callbackService","_pageName","_replace","_internal","isChild","requestDoneCallback","requestDoneData","ajaxRequestFunction","renderContentFunction","domFunction","_isChanged","_state","isChanged","callBackType","getNewUrl","gssHashCode","_newName","getPageNameFromUrl","getLocationHref","_childData","childCallback","childCallbackData","manageWithRewriteUrl","customUrl","rewriteUrl","arguments","_stateData","_req_1","_isChildCallback_1","_childCallback_1","_callback","_isCallBackAvailable","_preState","_ajaxCallback","_renderContentCallback_1","_domCallback_1","_routeRequest","_this","noop","wait","_childCallback_2","_childCallbackData","absoluteProgressHide","getStateByIndex","getCurrentIndex","_fn","renderContent","_element","gssGetAtt","gssElementExists","gssGetId","match","RegExp","exec","decodeURIComponent","queryStringUrlReplacement","delimiter","newString","re","hasQuestionMark","test","charAt","pageId","_pageId","_newFullUrl","getBasePageUrl","getArray","_arr","split","_collection","_domain","_controller","_actionMethod","_tmp","cv","ci","sort","url1","url2","_arr1","_arr2","_changed","inArray","getAttr","prop","_attr","specified","parentNode","removeChild","function","redirect","constructDataAtt","preventDefault","stopPropagation","trigger"],"mappings":"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","file":"Assets/pc/scripts/GSS.portalContainer.min.js","sourcesContent":["/*!--------------------------------------------------------------------------\n// \n// Copyright (c) The Gallup Organization. All rights reserved.\n// \n//--------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar GSS;\n(function (GSS) {\n /**\n * @description Provides functionality for working with portal container.\n */\n var pc;\n (function (pc) {\n /**\n * @description A class represents a component.\n */\n var Component = /** @class */ (function () {\n function Component() {\n }\n return Component;\n }());\n pc.Component = Component;\n /**\n * @description A class that represents a component event.\n */\n var ComponentEvent = /** @class */ (function () {\n function ComponentEvent() {\n }\n return ComponentEvent;\n }());\n pc.ComponentEvent = ComponentEvent;\n /** A module containing common content functionality. */\n var Content;\n (function (Content) {\n /** Stores LKM content by space and content key. */\n var _cachedContent = {};\n /** Represents a content request. */\n var ContentRequest = /** @class */ (function () {\n function ContentRequest() {\n /** An array of ContentRequestData. */\n this.data = [];\n }\n return ContentRequest;\n }());\n Content.ContentRequest = ContentRequest;\n /**\n * Gets LKM content\n * @param contentRequest The data for the content request.\n */\n function getContentAsync(contentRequest) {\n return new Promise(function (resolve, reject) {\n var _results = {};\n var _allKeysFound = true;\n // Check for the content in the local cache\n for (var i = 0; i < contentRequest.data.length; i++) {\n var _data_1 = contentRequest.data[i];\n var _space = _data_1.groupName;\n for (var j = 0; j < _data_1.contentKeys.length; j++) {\n var _key = _data_1.contentKeys[j];\n var _value = tryGetFromResourceLookup(_cachedContent, _space, _key);\n if (_value) {\n addToResourceLookup(_results, _space, _key, _value);\n }\n else {\n _allKeysFound = false;\n break;\n }\n }\n if (!_allKeysFound) {\n break;\n }\n }\n // If all the content was found in the local cache, return the results\n if (_allKeysFound) {\n resolve(_results);\n return;\n }\n // Otherwise, call the api\n var _data = {\n language: contentRequest.language || PortalContainer.getSiteLanguage(),\n contentGroups: contentRequest.data\n };\n var _url = '../_content/getcontent';\n var _request = GSS.pc.Request.postAsync(null, _url, _data, \"application/json\");\n _request.then(function (data) {\n var _data = JSON.parse(data);\n if (_data && _data.ContentGroups) {\n for (var i = 0; i < _data.ContentGroups.length; i++) {\n var _contentGroup = _data.ContentGroups[i];\n for (var j = 0; j < _contentGroup.Content.length; j++) {\n var _content = _contentGroup.Content[j];\n addToResourceLookup(_results, _contentGroup.SpaceName, _content.Key, _content.Value);\n addToResourceLookup(_cachedContent, _contentGroup.SpaceName, _content.Key, _content.Value);\n }\n }\n resolve(_results);\n }\n else {\n reject(\"No data\");\n }\n });\n });\n }\n Content.getContentAsync = getContentAsync;\n /**\n * Gets the resource value from the specified ResourceLookup. If the space or key don't exist, a null is returned.\n * @param lookup The ResourceLookup to pull from.\n * @param space The resource space.\n * @param key The resource key.\n */\n function tryGetFromResourceLookup(lookup, space, key) {\n if (!lookup[space]) {\n return null;\n }\n if (!lookup[space][key]) {\n return null;\n }\n return lookup[space][key];\n }\n /**\n * Sets the value in the specified ResourceLookup by space and key.\n * @param lookup The ResourceLookup to set data for.\n * @param space The resource space.\n * @param key The resource key.\n * @param value The resource value to set.\n */\n function addToResourceLookup(lookup, space, key, value) {\n if (!lookup[space]) {\n lookup[space] = {};\n }\n lookup[space][key] = value;\n }\n })(Content = pc.Content || (pc.Content = {}));\n /**\n * @description Changes the client and returns to the dashboard.\n * @param {string} newClientId The new client id.\n */\n function changeClient(el) {\n PortalContainer.progressShow();\n var _prefix = '';\n var _newClientId = $(el).closest('[data-gss-clientid]').attr('data-gss-clientid');\n if ($(location).attr('pathname').indexOf('/gss') != -1) {\n // Pull the first five characters, i.e. \"/gssd\", \"/gssq\", etc\n _prefix = $(location).attr('pathname').substr(0, 5);\n }\n if (typeof GSS.analytics !== 'undefined') {\n GSS.analytics.changeClient(el);\n }\n // Remove session data tied to old client\n var _clientUserDataKey = '__client_user_data';\n var _clientUserDataJWTKey = '__client_user_data_jwt';\n var _userDataKey = '__user_data';\n var _session = new GSS.common.session(true);\n _session.remove(_clientUserDataKey);\n _session.remove(_userDataKey);\n _session.remove(_clientUserDataJWTKey);\n $(location).attr('href', 'https://' + $(location).attr('hostname') + _prefix + '/_home/index?gssClientId=' + _newClientId);\n return false;\n }\n pc.changeClient = changeClient;\n /**\n * @description Provides functionality for working with bell notification data.\n */\n var BellNotification;\n (function (BellNotification) {\n /**\n * @description Opens a SignalR websocket connection to continuously receive the new notification count.\n */\n function observeNotificationCount() {\n GSS.PortalContainer.SignalR.Notifications.startObservingNotifications(function (count) {\n if (count) {\n $('#notificationCount').gssRemoveClass('hidden').text(count.toString());\n }\n });\n }\n BellNotification.observeNotificationCount = observeNotificationCount;\n function bellNotificationClick() {\n var notificationURL = $('#bellNotificationClick').attr(\"data-gss-notificationURL\");\n return (notificationURL == \"#\" ? false : true);\n }\n BellNotification.bellNotificationClick = bellNotificationClick;\n })(BellNotification = pc.BellNotification || (pc.BellNotification = {}));\n /**\n * @description Provides functionality for working with cart data.\n */\n var Cart;\n (function (Cart) {\n /**\n * @description Defines the values.\n * @type {object}\n */\n Cart.values = {\n cart: 'divCart',\n cartNavElement: 'cartNav',\n notificationElement: 'cartCount'\n };\n /**\n * @description Gets the cart items.\n * @returns {boolean} Return true if the function succeeds.\n */\n function getCart() {\n var _data = {};\n var dashboardWidgetId = GSS.common.getAttributeValue(GSS.widget.attributeNames.dashboardWidgetId, null);\n _data = GSS.PortalContainer.setRequiredData(dashboardWidgetId, _data);\n var _url = '../_Portal/Cart';\n var _request = GSS.PortalContainer.Request.getByEvent(this, _url, _data, GSS.common.returnType.Json, GSS.common.modalProgress.Disable, false, 5000);\n _request.then(function (data) {\n var _$notifications = GSS.widget.getElementByGssName(Cart.values.notificationElement);\n var _$cartNav = GSS.widget.getElementByGssName(Cart.values.cartNavElement);\n if (_$notifications) {\n if (data.CartCount && data.CartCount > 0) {\n // If data came back and the cart has items...\n // Update the notification text value...\n _$notifications.text(data.CartCount);\n // Unhide the notification icon if it is still hidden...\n _$notifications.removeClass('hidden');\n // If there are items then the 'href' on the anchor needs to have #showcart added\n var _hrefBefore = _$cartNav.attr('href');\n var _cartAnchor = '#showcart';\n if (_hrefBefore.indexOf(_cartAnchor) === -1) {\n var _newHref = _hrefBefore + _cartAnchor;\n _$cartNav.attr('href', _newHref);\n }\n }\n else {\n // If there are no items in the cart, hide the notification icon and remove the #/cart from the anchor\n _$notifications.addClass('hidden');\n var _hrefBefore = _$cartNav.attr('href');\n var _newHref = _hrefBefore.replace('#/cart', '');\n _$cartNav.attr('href', _newHref);\n }\n }\n });\n return true;\n }\n Cart.getCart = getCart;\n })(Cart = pc.Cart || (pc.Cart = {}));\n /**\n * @description Provides functionality for working with component data.\n */\n var Components;\n (function (Components) {\n /**\n * @property Stores the components based on code name.\n */\n var _componentsByCodeName = {};\n /**\n * @property Stores the components based on component id.\n */\n var _componentsById = {};\n /**\n * @description Defines the different types of components.\n * @type {object}\n */\n Components.ComponentType = {\n Application: 'app',\n Page: 'page',\n Section: 'section'\n };\n /**\n * @description Defines the different types of events.\n * @type {object}\n */\n Components.EventType = {\n custom: 'custom',\n mount: 'mount',\n unMount: 'unmount',\n };\n /**\n * @description Gets all component data.\n * @returns {object} All of the components.\n */\n function dump() {\n // Gets all component data.\n return _componentsByCodeName;\n }\n Components.dump = dump;\n /**\n * @description Publishes the mount event for the specified component id.\n * @param {number} componentId The id of the component to mount.\n */\n function mount(componentId) {\n var _component = getById(componentId);\n if (_component.mountEvent && _component.mountEvent != null && _component.mountEvent.eventName != null) {\n pc.EventBus.publish(_component.mountEvent.eventName, _component.mountEvent.settings);\n }\n }\n Components.mount = mount;\n /**\n * @description Gets the configuration for the specified component based on the id.\n * @param {number} componentId The component id of the component to get.\n * @returns{Component} A component.\n */\n function getById(componentId) {\n var _result = null;\n if (_componentsById && _componentsById != null) {\n _result = _componentsById[componentId];\n }\n return _result;\n }\n Components.getById = getById;\n /**\n * @description Gets the component based on the component id.\n * @param {number} componentId The component id of the component to get.\n * @returns{Promise} A promise of component.\n */\n function getByIdAsync(componentId) {\n return new Promise(function (resolve, reject) {\n resolve(pc.Components.getById(componentId));\n });\n }\n Components.getByIdAsync = getByIdAsync;\n /**\n * @description Gets component based on the code name.\n * @param {string} codeName The code name of the component to get.\n * @returns{Component} A component.\n */\n function getByCodeName(codeName) {\n var _result = null;\n if (_componentsByCodeName && _componentsByCodeName != null) {\n _result = _componentsByCodeName[codeName];\n }\n return _result;\n }\n Components.getByCodeName = getByCodeName;\n /**\n * @description Gets the component based on the code name.\n * @param {string} codeName The code name of the component to get.\n * @returns{Promise} A promise of component.\n */\n function getByCodeNameAsync(codeName) {\n return new Promise(function (resolve, reject) {\n resolve(pc.Components.getByCodeName(codeName));\n });\n }\n Components.getByCodeNameAsync = getByCodeNameAsync;\n /**\n * @description Sets the configuration for the specified component based on the code name and all children of the component.\n * @param {component} component The component to set the configuration for.\n * @param {number[]} skipChildComponentIds The componentIds to skip.\n */\n function setComponent(component, skipChildComponentIds) {\n if (component && component != null && skipChildComponentIds.indexOf(component.componentId) == -1) {\n _componentsById[component.componentId] = component;\n _componentsByCodeName[component.codeName] = component;\n setEvents(component);\n // Recursively set the children components.\n if (component.children && component.children != null) {\n for (var i = 0, count = component.children.length; i < count; ++i) {\n setComponent(component.children[i], skipChildComponentIds);\n }\n }\n }\n }\n Components.setComponent = setComponent;\n /**\n * @description Sets the events tied to the specified component.\n * @param {component} component The component to set the event configuration for.\n */\n function setEvents(component) {\n var _setupEvent = function (eventData) {\n if (eventData && eventData.eventName && eventData.function) {\n EventBus.subscribe(eventData.eventName, eventData.function, null, eventData.settings);\n }\n };\n if (component) {\n if (component && component.mountEvent != null) {\n _setupEvent(component.mountEvent);\n }\n if (component && component.unmountEvent != null) {\n _setupEvent(component.unmountEvent);\n }\n }\n }\n Components.setEvents = setEvents;\n /**\n * @description Publishes the unmount event for the specified component id.\n * @param {number} componentId The id of the component to unmount.\n */\n function unmount(componentId) {\n var _component = getById(componentId);\n if (_component.unmountEvent && _component.unmountEvent != null) {\n pc.EventBus.publish(_component.unmountEvent.eventName, _component.unmountEvent.settings);\n }\n }\n Components.unmount = unmount;\n })(Components = pc.Components || (pc.Components = {}));\n /**\n * @description Provides functionality for managing events and the publish subscribe pattern.\n */\n var EventBus;\n (function (EventBus) {\n var _topics = {};\n /**\n * @description A class represents a topic.\n */\n var Topic = /** @class */ (function () {\n /**\n * @description A constructor to create a topic.\n * @param {any} context The optional context (this) with which to invoke the callback.\n * @param {string} fn The function to invoke when a topic is published.\n * @param {string} name The name of the topic.\n * @param {any[]} args An array of arguments.\n */\n function Topic(context, fn, name, args) {\n this.args = args;\n this.context = context;\n this.fn = fn;\n this.name = name;\n }\n return Topic;\n }());\n EventBus.Topic = Topic;\n /**\n * @description Gets all event data.\n * @returns {object} An object contains all the topics.\n */\n function dump() {\n return _topics;\n }\n EventBus.dump = dump;\n /**\n * @description Publishes to the provided topic with one or more arguments.\n * @param {string} topicName The topic to publish.\n * @param {any[]} args The array of arguments.\n */\n function publish(topicName, args) {\n if (topicName === void 0) { topicName = ''; }\n if (topicName && Array.isArray(_topics[topicName])) {\n for (var _i = 0, _a = _topics[topicName]; _i < _a.length; _i++) {\n var _topic = _a[_i];\n var _function = GSS.common.getFunction(_topic.fn);\n var _args = _topic.args || [];\n if (args && args != null) {\n Array.prototype.push.apply(_args, args);\n }\n if (_function) {\n _function(_args);\n }\n }\n }\n }\n EventBus.publish = publish;\n /**\n * @description Subscribes to the provided topic, the given function along with an optional context.\n * @param {string} topicName The topic to subscribe to.\n * @param {string} fn The function to invoke when a topic is published.\n * @param {any} context The optional context (this) with which to invoke the callback.\n * @param {any[]} defaultArgs The aray of arguments.\n */\n function subscribe(topicName, fn, context, defaultArgs) {\n if (topicName === void 0) { topicName = ''; }\n if (topicName && fn && typeof topicName === 'string' && typeof fn === 'string') {\n _topics[topicName] = _topics[topicName] || [];\n return _topics[topicName].push(new Topic(context, fn, topicName, defaultArgs));\n }\n return null;\n }\n EventBus.subscribe = subscribe;\n })(EventBus = pc.EventBus || (pc.EventBus = {}));\n /**\n * @description Provides functionality for working with notifications.\n */\n var Notifications;\n (function (Notifications) {\n /**\n * @description A class containing default notification options.\n */\n var DefaultNotificationOptions = {\n closeButton: true,\n debug: false,\n extendedTimeOut: 1000,\n hideDuration: 1000,\n hideEasing: \"swing\",\n hideMethod: \"fadeOut\",\n newestOnTop: false,\n onclick: null,\n positionClass: \"toast-top-right\",\n preventDuplicates: false,\n progressBar: true,\n showDuration: 300,\n showEasing: \"swing\",\n showMethod: \"fadeIn\",\n timeOut: 5000\n };\n /**\n * @description A class containing notification options.\n */\n var NotificationOptions = /** @class */ (function () {\n function NotificationOptions() {\n }\n return NotificationOptions;\n }());\n Notifications.NotificationOptions = NotificationOptions;\n /**\n * @description An enum containing notification types.\n */\n var NotificationType;\n (function (NotificationType) {\n /**\n * Defines the success notification type.\n */\n NotificationType[NotificationType[\"Success\"] = 0] = \"Success\";\n /**\n * Defines the info notification type.\n */\n NotificationType[NotificationType[\"Info\"] = 1] = \"Info\";\n /**\n * Defines the warning notification type.\n */\n NotificationType[NotificationType[\"Warning\"] = 2] = \"Warning\";\n /**\n * Defines the error notification type.\n */\n NotificationType[NotificationType[\"Error\"] = 3] = \"Error\";\n })(NotificationType = Notifications.NotificationType || (Notifications.NotificationType = {}));\n /**\n * @description Shows a notification.\n * @param {string} content The content to display in the notification.\n * @param {NotificationType} type Optional notification type.\n * @param {NotificationOptions} options Optional notification options data.\n */\n // Change to content\n function showNotification(content, type, options) {\n if (type === void 0) { type = NotificationType.Success; }\n // Merge the notification options.\n var _options = $.extend({}, DefaultNotificationOptions, options);\n // Display the notification.\n switch (type) {\n case NotificationType.Success: {\n toastr.success(content, \"\", _options);\n break;\n }\n case NotificationType.Info: {\n toastr.info(content, \"\", _options);\n break;\n }\n case NotificationType.Warning: {\n toastr.warning(content, \"\", _options);\n break;\n }\n case NotificationType.Error: {\n toastr.error(content, \"\", _options);\n break;\n }\n default: {\n toastr.success(content, \"\", _options);\n break;\n }\n }\n }\n Notifications.showNotification = showNotification;\n })(Notifications = pc.Notifications || (pc.Notifications = {}));\n /**\n * @description Provides functionality for working with server requests.\n */\n var Request;\n (function (Request) {\n /**\n * @description Parameters name\n * @type {string}\n */\n Request.Parameters = {\n clientId: 'gssClientId',\n componentId: 'gssComponentId'\n };\n /**\n * @description A class contains request options\n */\n var RequestOptions = /** @class */ (function () {\n function RequestOptions() {\n }\n return RequestOptions;\n }());\n Request.RequestOptions = RequestOptions;\n /**\n * @description Generates an HTTP GET request.\n * @param {number} componentId The id of the component to generate the request for.\n * @param {string} url The url of the request.\n * @param {any} data The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @return {JQueryPromise} A Promise.\n */\n function get(componentId, url, data, dataType, enableModalProgress) {\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n if (dataType === undefined) {\n throw new Error(\"Need to specify dataType.\");\n }\n var _enableModalProgress = enableModalProgress === undefined ? false : enableModalProgress;\n var _setStatus = false;\n var _enableCache = false;\n if (_enableModalProgress) {\n PortalContainer.progressLoading();\n }\n var _data = setRequiredData(componentId, data);\n // Invoke the get.\n var _request = GSS.common.request(url, dataType, _enableCache).get(_data);\n return _request.then(\n // return ajax as success when request successful processes.\n function (data, textStatus, jqXHR) { return (void _data, textStatus, jqXHR); },\n // return ajax as fail when request got error while processing.\n function (jqXHR, status, error) {\n var _errorData = { url: url, data: _data, method: 'pc.Request.get' };\n pc.UI.setComponentContainerContent(componentId, jqXHR.responseText);\n onFail(componentId, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n Request.get = get;\n /**\n * @description Generates an HTTP GET request and returns a promise.\n * @param {number} componentId The id of the component to generate the request for.\n * @param {string} url The url of the request.\n * @param {any} data The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @param {RequestOptions} options Optional settings data.\n * @returns {Promise} A Promise.\n */\n function getAsync(componentId, url, data, dataType, options) {\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n if (dataType === undefined) {\n throw new Error(\"Need to specify dataType.\");\n }\n if (options && options.showModalProgress) {\n PortalContainer.progressShow();\n }\n var _data = setRequiredData(componentId, data);\n return new Promise(function (resolve, reject) {\n var _xhr = new XMLHttpRequest();\n _xhr.onreadystatechange = function () {\n if (_xhr.readyState === 4) {\n // Disable the modal progress if needed.\n if (options && options.hideModalProgress) {\n PortalContainer.progressHide();\n }\n switch (_xhr.status) {\n case 401: {\n // Handle refreshing the current page if the user is not authenticated.\n // TODO: this should be made into a standard handler for re-usability.\n window.location.href = window.location.href;\n }\n case 403:\n case 422:\n case 500: {\n reject(_xhr.responseText);\n }\n default: {\n resolve(_xhr.responseText);\n }\n }\n }\n };\n if (typeof (_data) !== 'string') {\n _data = '?' + Object.keys(_data)\n .map(function (key) {\n return key + \"=\" + encodeURIComponent(_data[key]);\n })\n .join(\"&\");\n }\n else {\n _data = '?' + _data;\n }\n _xhr.open(\"GET\", url + _data, true);\n _xhr.setRequestHeader(\"Content-type\", dataType);\n _xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n _xhr.send(null);\n });\n }\n Request.getAsync = getAsync;\n /**\n * @description Generates an HTTP POST request and returns a promise.\n * @param {number} componentId The id of the component to generate the request for.\n * @param {string} url The url of the request.\n * @param {any} data The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @param {RequestOptions} options Optional settings data.\n * @param {string} overrideComponentName Optional override component name to use for auditing.\n * @returns {Promise} A Promise.\n */\n function postAsync(componentId, url, data, dataType, options, overrideComponentName) {\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n if (dataType === undefined) {\n throw new Error(\"Need to specify dataType.\");\n }\n if (options && options.showModalProgress) {\n PortalContainer.progressShow();\n }\n var _data = setRequiredData(componentId, data);\n return new Promise(function (resolve, reject) {\n var _xhr = new XMLHttpRequest();\n _xhr.onreadystatechange = function () {\n if (_xhr.readyState === 4) {\n // Disable the modal progress if needed.\n if (options && options.hideModalProgress) {\n PortalContainer.progressHide();\n }\n switch (_xhr.status) {\n case 401: {\n // Handle refreshing the current page if the user is not authenticated.\n // TODO: this should be made into a standard handler for re-usability.\n window.location.href = window.location.href;\n }\n case 403:\n case 422:\n case 500: {\n reject(_xhr.responseText);\n }\n default: {\n resolve(_xhr.responseText);\n }\n }\n }\n };\n if (dataType === 'application/json' && typeof (_data) !== 'string') {\n _data = JSON.stringify(_data);\n }\n _xhr.open(\"POST\", url, true);\n _xhr.setRequestHeader(\"Content-type\", dataType);\n _xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n _xhr.setRequestHeader(\"X-AuditingComponentName\", GSS.common.isNotNullOrEmpty(overrideComponentName) ? overrideComponentName : GSS.common.getCurrentComponentName());\n _xhr.send(_data);\n });\n }\n Request.postAsync = postAsync;\n /**\n * @description Generates a component url for the specified component id. This will also use the optional data parameter to add to the query string.\n * @param {number} componentId The id of the component to generate the url for.\n * @param {any} data An optional parameter that if included will be used to append to the query string.\n * @return {string} A url that will invoke the HTTP GET method for a specified component.\n **/\n function getComponentUrl(componentId, data) {\n var _data = data || '';\n _data = pc.Request.setRequiredData(componentId, _data);\n if (typeof (_data) === 'object') {\n _data = GSS.common.encodeAndParameterize(_data);\n }\n return '../_Portal/Component?' + _data;\n }\n Request.getComponentUrl = getComponentUrl;\n /**\n * @description Extends the incoing data object with the required request data.\n * @param {number} componentId The id of the component to generate the url for.\n * @param {any} data The data object to extend.\n * @return {any} The data extended with required request data.\n */\n function setRequiredData(componentId, data) {\n var _compId = componentId;\n if (!_compId || _compId === null) {\n var _el = document.querySelector('div[' + pc.UI.Attributes.componentId + ']');\n if (_el && _el !== null) {\n _compId = +_el.getAttribute(pc.UI.Attributes.componentId);\n }\n }\n var _clientId = GSS.common.getAttributeValue(GSS.widget.attributeNames.clientId, null);\n if (_clientId) {\n data = GSS.common.extendValue(data, Request.Parameters.clientId, _clientId);\n }\n data = GSS.common.extendValue(data, Request.Parameters.componentId, _compId);\n data = GSS.common.addAntiForgeryToken(data);\n return data;\n }\n Request.setRequiredData = setRequiredData;\n /**\n * @description Function called when an error occurs.\n * @param {number} componentId The id of the component.\n * @param {any} data The data to display on error..\n */\n function onFail(componentId, data) {\n var _componentName = '[UNDEFINED COMPONENT]';\n if (componentId) {\n var _component = pc.Components.getById(componentId);\n if (_component && _componentName) {\n _componentName = _component.displayName;\n }\n }\n // Commented out, the notify widget error is not currently setup for components properly, plus we need to provide more useful information.\n // notifyWidgetError(componentId, 'GCP Portal Error - ' + _componentName, data);\n }\n /**\n * @description Sends an error notification about a widget error.\n * @param {number} componentId The id of the component that errored.\n * @param {any} subject The notification subject.\n * @param {any} errorData The error details.\n */\n function notifyWidgetError(componentId, subject, errorData) {\n // Clear the content before POSTing data\n var _componentName = '[UNDEFINED]';\n setTimeout(function () {\n var _data = errorData;\n GSS.common.extendValue(_data, 'GCP Portal Error - ' + GSS.widget.widgetErrorSettings.subjectParamName, subject);\n _data = pc.Request.setRequiredData(componentId, _data);\n $.ajax({ type: 'POST', url: GSS.widget.widgetErrorSettings.url, data: jQuery.param(_data), cache: false });\n }, 1);\n }\n Request.notifyWidgetError = notifyWidgetError;\n /**\n * @description Generates an http post request.\n * @param {number} componentId The id of the component to generate the url for.\n * @param {any} data The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @return {JQueryPromise} A Promise.\n */\n function post(componentId, url, data, dataType, timeout, contentType) {\n if (componentId === undefined) {\n throw new Error('componentId is undefined');\n }\n if (url === undefined) {\n throw new Error(\"url is undefined.\");\n }\n if (dataType === undefined) {\n throw new Error(\"dataType is undefined.\");\n }\n var _enableModalProgress = false;\n var _enableCache = false;\n var _data = setRequiredData(componentId, data);\n if (_enableModalProgress) {\n PortalContainer.progressLoading();\n }\n //Create an ajax call to controller and return request as Promise object\n var _request = GSS.common.request(url, dataType, _enableCache, timeout, contentType).post(_data);\n // process Promise object\n return _request.then(\n // return ajax success\n function (data, textStatus, jqXHR) {\n return (void _data, textStatus, jqXHR);\n },\n // return ajax fail when something went wrong.\n function (jqXHR, status, error) {\n var _errorData = { url: url, data: _data, method: 'pc.Request.post' };\n pc.UI.setComponentContainerContent(componentId, jqXHR.responseText);\n onFail(componentId, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n Request.post = post;\n })(Request = pc.Request || (pc.Request = {}));\n /**\n * @description Provides functionality for working with the portal container UI.\n */\n var UI;\n (function (UI) {\n /**\n * @description Defines the different attributes.\n * @type {object}\n */\n UI.Attributes = {\n componentId: 'data-gss-componentId',\n codeName: 'data-gss-componentCodeName',\n tileHeight: 'data-gss-widget-height',\n tileWidth: 'data-gss-widget-width',\n type: 'data-gss-componentType',\n autoDisable: 'data-gss-auto-disable',\n disableInterval: 'data-gss-disable-interval'\n };\n /**\n * @description Defines the different attribute values.\n * @type {object}\n */\n UI.Values = {\n tileClass: 'gss-tile',\n tileName: 'divComponent'\n };\n /**\n * @description Creates the container for the specified component.\n * @param {Component} component The component to put in the container.\n * @param {string} content The content in the container.\n * @return {string} The content wrapped with container.\n */\n function createContainer(component, content) {\n if (content === void 0) { content = ''; }\n var _result = '';\n if (component && component != null) {\n var _idAttr = \"id=\\\"\".concat(component.componentId, \"\\\"\");\n var _componentIdAttr = \"\".concat(UI.Attributes.componentId, \"=\\\"\").concat(component.componentId, \"\\\"\");\n var _codeNameAttr = \"\".concat(UI.Attributes.codeName, \"=\\\"\").concat(component.codeName, \"\\\"\");\n var _typeAttr = \"\".concat(UI.Attributes.type, \"=\\\"\").concat(component.type, \"\\\"\");\n _result = \"\").concat(content, \"
\");\n // TODO: Define additional attributes here based on the type of component.\n }\n return _result;\n }\n UI.createContainer = createContainer;\n /**\n * @description Creates the tile for the specified component.\n * @param {Component} component The component to put in the tile.\n * @param {string} content The content in the tile.\n * @return {string} The content wrapped with tile.\n */\n function createTile(component, content) {\n if (content === void 0) { content = ''; }\n var _result = '';\n if (component && component != null) {\n var _idAttr = \"id=\\\"\".concat(component.componentId, \"\\\"\");\n var _componentIdAttr = \"\".concat(UI.Attributes.componentId, \"=\\\"\").concat(component.componentId, \"\\\"\");\n var _codeNameAttr = \"\".concat(UI.Attributes.codeName, \"=\\\"\").concat(component.codeName, \"\\\"\");\n var _typeAttr = \"\".concat(UI.Attributes.type, \"=\\\"\").concat(component.type, \"\\\"\");\n var _classAttr = \"class=\\\"\".concat(UI.Values.tileClass, \"\\\"\");\n var _tileNameAttr = \"data-gss-name=\\\"\".concat(UI.Values.tileName, \"\\\"\");\n var _heightAttr = \"\".concat(UI.Attributes.tileHeight, \"=\\\"\").concat(component.height || 1, \"\\\"\");\n var _widthAttr = \"\".concat(UI.Attributes.tileWidth, \"=\\\"\").concat(component.width || 1, \"\\\"\");\n _result = \"\").concat(content, \"
\");\n // TODO: Define additional attributes here based on the type of component.\n }\n return _result;\n }\n UI.createTile = createTile;\n /**\n * @description Hides components which are failed to load due to script load failures\n * @param {number[]} skipChildComponentIds The componentIds to skip.\n */\n function disableComponent(skipChildComponentIds) {\n skipChildComponentIds.forEach(function (componentId) {\n var _container = getComponentIdContainer(componentId);\n if (_container && _container !== null) {\n _container.parent().parent().hide(true);\n }\n });\n }\n UI.disableComponent = disableComponent;\n /**\n * @description Gets the component container for the specified component id.\n * @param {number} componentId The id of the component .\n * @return {jQuery} The jQuery object.\n */\n function getComponentIdContainer(componentId) {\n if (componentId != null) {\n return $('[' + UI.Attributes.componentId + '=\"' + componentId + '\"]');\n }\n else {\n return null;\n }\n }\n UI.getComponentIdContainer = getComponentIdContainer;\n /**\n * @description Gets the component container for the specified component code name.\n * @param {string} name The code name of the component .\n * @return {jQuery} The jQuery object.\n */\n function getComponentNameContainer(name) {\n if (name != null) {\n return $('[' + UI.Attributes.codeName + '=\"' + name + '\"]');\n }\n else {\n return null;\n }\n }\n UI.getComponentNameContainer = getComponentNameContainer;\n /**\n * @description Sets the component container content.\n * @param {number} componentId The id of the component .\n * @param {string} content The content to set.\n */\n function setComponentContainerContent(componentId, content) {\n var _container = getComponentIdContainer(componentId);\n if (_container && _container !== null) {\n _container.html(content);\n }\n }\n UI.setComponentContainerContent = setComponentContainerContent;\n /**\n * @description Sets the main content container for the component management pages.\n * @param {any} data The data that represents the main content.\n * @param {string} element The element to hold the content.\n */\n function setMainContent(data, element) {\n // Sets the main content container for the component management pages.\n // The data that represents the main content.\n GSS.widget.getElementByGssName(element).html(data);\n }\n UI.setMainContent = setMainContent;\n /**\n * Initializes the Quill text editor.\n * @param id The id of the editor.\n * @param toolbarOptions Optional toolbar options.\n * @param readOnly Optional read only flag.\n * @param direction Optional direction text.\n */\n function initializeQuillEditor(rawFieldId, encodedFieldId, toolbarOptions, readOnly, direction, height) {\n if (toolbarOptions === void 0) { toolbarOptions = null; }\n if (readOnly === void 0) { readOnly = false; }\n if (direction === void 0) { direction = null; }\n if (height === void 0) { height = null; }\n var _editorId = 'editor_' + rawFieldId;\n var _quill = new Quill('#' + _editorId, {\n bounds: '#' + _editorId,\n modules: {\n toolbar: readOnly ? false : toolbarOptions\n },\n theme: 'snow',\n readOnly: readOnly\n });\n if (height) {\n _quill.container.style.height = height + 'px';\n }\n var _keyboard = _quill.getModule('keyboard');\n delete _keyboard.bindings[9];\n _quill.on('text-change', function (delta) {\n var _textHtml = _quill.container.querySelector('.ql-editor').innerHTML;\n $('#' + rawFieldId).val(_textHtml);\n if (encodedFieldId) {\n $('#' + encodedFieldId).val(encodeURIComponent(_textHtml));\n }\n });\n if (direction == 'RTL') {\n $(_quill.container.querySelector('.ql-editor')).css('direction', 'rtl');\n $(_quill.container.querySelector('.ql-editor')).css('text-align', 'right');\n }\n $('.ql-bold').attr('aria-label', 'bold');\n $('.ql-italic').attr('aria-label', 'italic');\n $('.ql-underline').attr('aria-label', 'underline');\n $('.ql-link').attr('aria-label', 'link');\n }\n UI.initializeQuillEditor = initializeQuillEditor;\n })(UI = pc.UI || (pc.UI = {}));\n /**\n * @description This module is for demo purposes only and can be removed later.\n */\n var Test;\n (function (Test) {\n function getByIdAsyncTest(componentId) {\n return __awaiter(this, void 0, void 0, function () {\n var _value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, pc.Components.getByIdAsync(componentId)];\n case 1:\n _value = _a.sent();\n void 0;\n return [2 /*return*/, true];\n }\n });\n });\n }\n Test.getByIdAsyncTest = getByIdAsyncTest;\n function getAsyncTest() {\n return __awaiter(this, void 0, void 0, function () {\n var _urlOk, _urlError, _urlValidationError, e_1, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _urlOk = \"/api/v1/maintenance/ok\";\n _urlError = \"/api/v1/maintenance/error\";\n _urlValidationError = \"/api/v1/maintenance/validationError\";\n return [4 /*yield*/, pc.Request.getAsync(1, _urlOk, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, pc.Request.getAsync(1, _urlError, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })];\n case 3:\n _a.sent();\n return [3 /*break*/, 5];\n case 4:\n e_1 = _a.sent();\n void 0;\n void 0;\n return [3 /*break*/, 5];\n case 5:\n _a.trys.push([5, 7, , 8]);\n return [4 /*yield*/, pc.Request.getAsync(1, _urlValidationError, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })];\n case 6:\n _a.sent();\n return [3 /*break*/, 8];\n case 7:\n e_2 = _a.sent();\n void 0;\n void 0;\n return [3 /*break*/, 8];\n case 8: return [2 /*return*/];\n }\n });\n });\n }\n Test.getAsyncTest = getAsyncTest;\n function getAsyncAllTest() {\n return __awaiter(this, void 0, void 0, function () {\n var _urlOk, _urlError, _urlValidationError, _urlWithData, _result1, _result2, _result3, _result4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _urlOk = \"/api/v1/maintenance/ok\";\n _urlError = \"/api/v1/maintenance/error\";\n _urlValidationError = \"/api/v1/maintenance/validationError\";\n _urlWithData = \"/api/v1/maintenance/okData\";\n _result1 = pc.Request.getAsync(1, _urlOk, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n _result2 = pc.Request.getAsync(1, _urlError, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n _result3 = pc.Request.getAsync(1, _urlValidationError, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n _result4 = pc.Request.getAsync(1, _urlWithData, \"clientId=1&codeName=testCodeName\", \"application/x-www-form-urlencoded\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n void 0;\n return [4 /*yield*/, Promise.all([_result1, _result2, _result3, _result4])];\n case 1:\n _a.sent();\n void 0;\n return [2 /*return*/];\n }\n });\n });\n }\n Test.getAsyncAllTest = getAsyncAllTest;\n function postAsyncAllTest() {\n return __awaiter(this, void 0, void 0, function () {\n var _urlOk, _urlError, _urlValidationError, _urlWithData, _result1, _result2, _result3, _result4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _urlOk = \"/api/v1/maintenance/ok\";\n _urlError = \"/api/v1/maintenance/error\";\n _urlValidationError = \"/api/v1/maintenance/validationError\";\n _urlWithData = \"/api/v1/maintenance/okData\";\n _result1 = pc.Request.postAsync(1, _urlOk, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n _result2 = pc.Request.postAsync(1, _urlError, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n _result3 = pc.Request.postAsync(1, _urlValidationError, null, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n _result4 = pc.Request.postAsync(1, _urlWithData, { clientId: 1, codeName: 'testCodeName' }, \"application/json\")\n .then(function (result) {\n void 0;\n void 0;\n })\n .catch(function (error) {\n void 0;\n void 0;\n });\n void 0;\n return [4 /*yield*/, Promise.all([_result1, _result2, _result3, _result4])];\n case 1:\n _a.sent();\n void 0;\n return [2 /*return*/];\n }\n });\n });\n }\n Test.postAsyncAllTest = postAsyncAllTest;\n })(Test = pc.Test || (pc.Test = {}));\n })(pc = GSS.pc || (GSS.pc = {}));\n /**\n * @description Provides functionality for working with widget based portal container.\n */\n var PortalContainer;\n (function (PortalContainer) {\n /**\n * @description Provides functionality for working with common methods.\n */\n var Credential;\n (function (Credential) {\n ;\n // get new token and env from the server\n function getInfo() {\n var _def = $.Deferred();\n var _session = new GSS.common.session(true);\n var _data = {};\n var _reqObject = {\n url: PortalContainer.url.GetToken,\n returnType: GSS.common.returnType.Json,\n data: _data\n };\n GSS.admintools.service.get(_reqObject, GSS.common.modalProgress.Enable)\n .done(function (data) {\n var currentDate = new Date();\n var _response = { id: PortalContainer.attributes.userDataId, value: currentDate.toISOString(), values: { token: data.token, apiUrl: data.apiUrl, samTeamsGatewayUrl: data.samTeamsGatewayUrl } };\n _session.upsert(_response);\n _def.resolve(_response.values);\n }).fail(function (err) { _def.reject(err); });\n return _def.promise();\n }\n Credential.getInfo = getInfo;\n // get existing or new request that will retrieve token and env accordingly base on time limit\n function manageInfo() {\n var _def = $.Deferred();\n var _session = new GSS.common.session(true);\n var _sessionItem = _session.getItem(PortalContainer.attributes.userDataId);\n if (_sessionItem === undefined || _sessionItem === null) {\n getInfo.call(this).done(function (data) {\n _def.resolve(data);\n }).fail(function (err) { return _def.reject(err.Message); });\n }\n else {\n var diffMili = new Date().getTime() - new Date(_sessionItem.value).getTime();\n if ((diffMili / 1000 / 60) >= PortalContainer.attributes.tokenTimeoutInMinutes) {\n sessionStorage.removeItem(PortalContainer.attributes.userDataId);\n getInfo.call(this).done(function (data) {\n _def.resolve(data);\n }).fail(function (err) { return _def.reject(err.Message); });\n }\n else {\n _def.resolve(_sessionItem.values);\n }\n }\n return _def.promise();\n }\n Credential.manageInfo = manageInfo;\n })(Credential = PortalContainer.Credential || (PortalContainer.Credential = {}));\n var apiRequest;\n (function (apiRequest) {\n function request(url, token, apiVersion, overrideComponentName) {\n if (apiVersion === void 0) { apiVersion = ''; }\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n var _apiVersion = apiVersion.length > 0 ? apiVersion : '';\n var _ajax = function (requestType, data) {\n var _requestData = {\n type: requestType,\n url: url,\n headers: { 'Authorization': \"Bearer \".concat(token), 'api-version': _apiVersion, 'X-AuditingComponentName': GSS.common.isNotNullOrEmpty(overrideComponentName) ? overrideComponentName : GSS.common.getCurrentComponentName() },\n crossDomain: true,\n data: data,\n cache: false,\n contentType: \"application/json\",\n dataType: \"text\",\n };\n return $.ajax(_requestData);\n };\n var _delete = function (data) {\n if (data === undefined) {\n void 0;\n }\n return _ajax(\"DELETE\", data);\n };\n var _get = function (data) {\n return _ajax(\"GET\", data);\n };\n var _post = function (data) {\n if (data === undefined) {\n void 0;\n }\n return _ajax(\"POST\", data);\n };\n var _put = function (data) {\n if (data === undefined) {\n void 0;\n }\n return _ajax(\"PUT\", data);\n };\n return {\n get: _get,\n post: _post,\n delete: _delete,\n put: _put\n };\n }\n apiRequest.request = request;\n })(apiRequest = PortalContainer.apiRequest || (PortalContainer.apiRequest = {}));\n /**\n * @description Provides functionality for working with history.\n */\n var History;\n (function (History) {\n /**\n * @property A value indicates whether the history state is changed manually or not.\n */\n History.manualStateChange = false;\n /**\n * @description Function called to push state using History.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} getUrl The url to get the initial data from.\n * @param {any} options The option data to send in the ajax get request.\n * @param {any} functionData The data will be used when clicking back button.\n * @param {any} setStatus Set the status.\n */\n function pushStateHistoryManually(dashboardWidgetId, getUrl, options, functionData, setStatus) {\n /// Function called to push state using History.\n GSS.PortalContainer.History.manualStateChange = true;\n pushStateHistory(dashboardWidgetId, getUrl, options, functionData, setStatus);\n }\n History.pushStateHistoryManually = pushStateHistoryManually;\n /**\n * @description Function called to push state using History.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} getUrl The url to get the initial data from.\n * @param {any} options The option data to send in the ajax get request.\n * @param {any} functionData The data will be used when clicking back button.\n * @param {any} setStatus Set the status.\n */\n function pushStateHistory(dashboardWidgetId, getUrl, options, functionData, setStatus) {\n if (GSS.portal.history.enableHistory) {\n var data = {\n _uniqueId: (new Date).getTime(),\n widget: dashboardWidgetId,\n url: getUrl,\n opt: options,\n functionData: functionData,\n setStatus: setStatus,\n replaced: false\n };\n window.History.pushState(data, document.title);\n }\n }\n History.pushStateHistory = pushStateHistory;\n /**\n * @description Function called to replace history state.\n */\n function replaceState() {\n if (GSS.portal.history.enableHistory) {\n window.History.replaceState({ _uniqueId: (new Date).getTime() }, document.title, location.pathname + location.search);\n }\n }\n History.replaceState = replaceState;\n /**\n * @description Function called to handle state change event.\n * @param {any} e The event triggered.\n */\n function handleStateChangeEvent(e) {\n if (GSS.portal.history.initialLoad == true) {\n // Don't pull from state if it is the initial full app load\n GSS.portal.history.initialLoad = false;\n return;\n }\n else {\n var state = window.History.getState();\n //goo into normal mode if you change it manually or you have no stateChangeUrl (saying you want to treat it normally)\n if (History.manualStateChange == true || (state.data.functionData != undefined && state.data.functionData.stateChangeUrl == undefined)) {\n if (state.data.url) {\n var _completeFunction = GSS.common.getFunction(state.data.functionData.functionName);\n if (state.data.functionData.beforeFunctionName) {\n GSS.common.getFunction(state.data.functionData.beforeFunctionName).apply(this, state.data.functionData.beforeFunctionArgs);\n }\n PortalContainer.getPartial(state.data.widget, state.data.url, state.data.opt, state.data.setStatus, _completeFunction);\n }\n else {\n window.location.href = state.url;\n }\n }\n else {\n // Back button was pressed\n if (state.data.functionData != undefined && state.data.functionData.stateChangeUrl) { //Not sure about this\n var _completeFunction = GSS.common.getFunction(state.data.functionData.stateChangeFunctionName);\n if (state.data.functionData.beforeStateChangeFunctionName) {\n GSS.common.getFunction(state.data.functionData.beforeStateChangeFunctionName).apply(this, state.data.functionData.beforeStateChangeFunctionArgs);\n }\n PortalContainer.getPartial(state.data.widget, state.data.functionData.stateChangeUrl, state.data.functionData.stateChangeOpt, state.data.functionData.stateChangeSetStatus, _completeFunction);\n }\n else {\n // Since when we create the new survey, we reinitialize the full app, its loosing the history,\n // so we have to go back using the window.history.back, when the browser back button is pressed\n var _urlSubString = 'newInstrumentVersionIdString';\n if (state.url.indexOf(_urlSubString) != -1) {\n window.history.back();\n }\n else {\n window.location.href = state.url;\n }\n }\n }\n History.manualStateChange = false;\n }\n }\n History.handleStateChangeEvent = handleStateChangeEvent;\n })(History = PortalContainer.History || (PortalContainer.History = {}));\n /**\n * @property The file name\n * @type {string}\n */\n PortalContainer.fileName = 'GSS.portalContainer.js';\n /**\n * @property An object that contains the common communication bus action names.\n * @type {object}\n */\n PortalContainer.actionNames = {\n portalMessage: 'portalMessage',\n resize: 'resize',\n gssWizardSectionError: 'GssWizardSectionError' /* Used by GSS based wizards. */\n };\n /**\n * @property An object that contains the error types.\n * @type {object}\n */\n PortalContainer.errorType = {\n init: 'init',\n generic: 'generic',\n undefined: 'Undefined'\n };\n /**\n * @property Defines the standard fields for a message item.\n * @type {object}\n */\n PortalContainer.messageFields = {\n action: 'action',\n dashboardWidgetId: GSS.widget.uniqueWidgetIdName,\n value: 'value',\n widgetCodeName: 'widgetCodeName'\n };\n /**\n * @property Defines the modal related values.\n * @type {object}\n */\n PortalContainer.modalValues = {\n container: 'divGssModalContainer'\n };\n /**\n * @property Defines the standard fields for a message item.\n * @type {object}\n */\n PortalContainer.portalMessageFields = {\n target: 'target',\n type: 'type',\n value: 'value'\n };\n /**\n * @property Defines the different portal message types.\n * @type {object}\n */\n PortalContainer.portalMessageType = {\n error: 'error',\n information: 'info',\n warning: 'warning',\n valid: 'valid'\n };\n /**\n * @property Defines the standard request parameters for any widget request.\n * @type {object}\n */\n PortalContainer.requestFields = {\n clientId: 'gssClientId',\n componentId: 'gssComponentId',\n dashboardWidgetId: GSS.widget.uniqueWidgetIdName,\n disablePortalInject: 'disablePortalInject',\n height: 'height',\n locale: 'locale',\n title: 'title',\n widgetCodeName: 'widgetCodeName',\n width: 'width'\n };\n /**\n * @property Defines the standard response fields for any widget response.\n * @type {object}\n */\n PortalContainer.responseFields = {\n content: 'content',\n dashboardWidgetId: GSS.widget.uniqueWidgetIdName,\n messages: 'messages',\n navigationItems: 'navItems',\n title: 'title',\n };\n /**\n * @property A list of functions that get alerted when a message is queued for the communication bus\n * @type {Array}\n */\n PortalContainer.subscriptions = new Array();\n /**\n * @property An object that contains url values.\n * @type {object}\n */\n PortalContainer.url = {\n /// An object that contains url values.\n applicationAsync: '../_Portal/ApplicationAsync',\n getWidgetSettings: '../_Portal/GetWidgetSettings',\n setUserWidgetSettings: '../_Portal/SetUserWidgetSettings',\n updateUserWidgetSetting: '../_Portal/UpdateUserWidgetSetting',\n GetToken: '../_Portal/Token',\n };\n /**\n * @property Defines the different states that a widget can be in.\n * @type {object}\n */\n PortalContainer.widgetStatus = {\n available: 'available',\n busy: 'busy',\n error: 'error',\n undefined: 'Undefined'\n };\n /**\n * @property Defines the different attributes.\n * @type {object}\n */\n PortalContainer.attributes = {\n userDataId: '__user_data',\n tokenTimeoutInMinutes: 5,\n };\n /**\n * @description Consumes the incoming message for the portal container to handle.\n * @param {any} message The message to consume.\n */\n function consumeMessage(message) {\n /// Determine if the incoming message needs to be handled based on the action name value.\n if (!message) {\n return false;\n }\n var _action = message[PortalContainer.messageFields.action];\n var _value = message[PortalContainer.messageFields.value];\n if (_action === PortalContainer.actionNames.portalMessage) {\n GSS.messaging.empty(_value);\n GSS.messaging.display(_value);\n }\n }\n PortalContainer.consumeMessage = consumeMessage;\n /**\n * @description Helper function used to create a message object for the communication bus.\n * @param {any} dashboardWidgetId The unique identifier of the widget that the event is triggered for.\n * @param {any} action The name of the action for the message\n * @param {any} options The object that represents the value for the message.\n */\n function createMessage(dashboardWidgetId, action, value) {\n var _message = {};\n _message[PortalContainer.messageFields.action] = action;\n _message[PortalContainer.messageFields.dashboardWidgetId] = dashboardWidgetId;\n _message[PortalContainer.messageFields.value] = value;\n if (dashboardWidgetId) {\n _message[PortalContainer.messageFields.widgetCodeName] = GSS.widget.getWidgetName(dashboardWidgetId);\n }\n return _message;\n }\n PortalContainer.createMessage = createMessage;\n /**\n * @description Gets the widget Height based on the specified unique widget identifier.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n */\n function getTileHeight(dashboardWidgetId) {\n var _container = GSS.widget.getWidgetContainer(dashboardWidgetId).closest('[' + GSS.widget.attributeNames.gssElementName + '=\"divWidget\"]');\n var _height = _container.attr(GSS.widget.attributeNames.dashboardWidgetHeight);\n return _height;\n }\n PortalContainer.getTileHeight = getTileHeight;\n /**\n * @description Gets the widget Width based on the specified unique widget identifier.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n */\n function getTileWidth(dashboardWidgetId) {\n var _container = GSS.widget.getWidgetContainer(dashboardWidgetId).closest('[' + GSS.widget.attributeNames.gssElementName + '=\"divWidget\"]');\n var _width = $(_container).attr(GSS.widget.attributeNames.dashboardWidgetWidth);\n return _width;\n }\n PortalContainer.getTileWidth = getTileWidth;\n /**\n * @description Gets the widget configuration id based on the specified element.\n * @param {any} el The element to find the closes widget container for.\n * @returns {any} The dashboard widget id.\n */\n function getDashboardWidgetId(el) {\n if (!el) {\n return $('[' + GSS.widget.attributeNames.gssElementName + '=\"divWidget\"]').first().attr(GSS.widget.attributeNames.dashboardWidgetId);\n }\n else {\n var _value = $(el).attr(GSS.widget.attributeNames.dashboardWidgetId);\n if (!_value) {\n _value = $(el).closest('[' + GSS.widget.attributeNames.gssElementName + '=\"divWidget\"]').attr(GSS.widget.attributeNames.dashboardWidgetId);\n }\n return _value;\n }\n }\n PortalContainer.getDashboardWidgetId = getDashboardWidgetId;\n /**\n * @description Gets the full application url for the dashboard widget and uses the data to create a query string.\n * @param {any} dashboardWidgetId The id of the dashboard widget.\n * @param {any} data The optional data to append to the url.\n * @returns {any} The full app url.\n */\n function getFullAppUrl(dashboardWidgetId, data) {\n var _data = data || '';\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n if (typeof (_data) === 'object') {\n _data = GSS.common.encodeAndParameterize(_data);\n }\n return '../_Portal/ApplicationAsync?' + _data;\n }\n PortalContainer.getFullAppUrl = getFullAppUrl;\n /**\n * @description Attempts to get the language cookie value, if that doesn't work then it reads from the dropdown.Otherwise it returns en-US\n * @returns {any} The language name.\n */\n function getSiteLanguage() {\n /// Attempts to get the language cookie value, if that doesn't work then it reads from the dropdown.\n /// Otherwise it returns en-US \n var _language = GSS.common.getCookieValue(\"user.language\");\n if (_language == null) {\n // Try to get the language from the dropdown menu\n _language = $(\"body\").attr(\"lang\");\n }\n return _language || \"en-US\";\n }\n PortalContainer.getSiteLanguage = getSiteLanguage;\n /**\n * @description Gets the widget settings for the specified dashboard widget id.\n * @param {any} dashboardWidgetId The dashboard widget id to get the settings for.\n * @param {any} successFunc Function called when the async request completes.\n */\n function getWidgetSettings(dashboardWidgetId, successFunc) {\n var _data = {};\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n var _result = null;\n $.ajax({ type: 'GET', url: PortalContainer.url.getWidgetSettings, data: _data, cache: false, dataType: 'json' })\n .always(function (data) {\n if (successFunc && typeof (successFunc) === 'function') {\n if (data) {\n // The expected response for this is currently a JS Object.\n var _result_1 = null;\n if (typeof (data) === 'string') {\n _result_1 = JSON.parse(data);\n }\n else {\n _result_1 = data;\n }\n successFunc(_result_1);\n }\n else {\n successFunc(null);\n }\n }\n });\n }\n PortalContainer.getWidgetSettings = getWidgetSettings;\n /**\n * @description Initializes a widget full application.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} getUrl The url to get the initial widget state from.\n * @param {any} options The option data to send in the ajax get request.\n * @param {any} onCompleteFunc The function will be called after the app is initialized.\n */\n function initializeApp(dashboardWidgetId, getUrl, options, onCompleteFunc) {\n var _data = options || {};\n try {\n // Update the status to 'busy'.\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.busy);\n // Ensure that the required data has been set.\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n if (typeof (_data) !== \"string\") {\n _data = jQuery.param(_data);\n }\n // Invoke the http get.\n $.ajax({ type: 'GET', url: getUrl, data: _data, cache: false })\n .done(function (data) {\n PortalContainer.setApp(data, dashboardWidgetId);\n // Set the status to available.\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.available);\n })\n .always(function () {\n if (onCompleteFunc) {\n if (typeof (onCompleteFunc) === \"function\") {\n onCompleteFunc();\n }\n else if (typeof (onCompleteFunc) === \"string\") {\n GSS.common.getFunction(onCompleteFunc)();\n }\n }\n PortalContainer.progressHide();\n })\n .fail(function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'initializeApp');\n PortalContainer.onFail(dashboardWidgetId, PortalContainer.errorType.init, _errorData);\n });\n }\n catch (ex) {\n var _errorData = PortalContainer.setErrorData(ex.message, PortalContainer.fileName, 'initializeApp');\n PortalContainer.onFail(dashboardWidgetId, PortalContainer.errorType.init, _errorData);\n }\n }\n PortalContainer.initializeApp = initializeApp;\n /**\n * @description Initializes a widget tile.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} getUrl The url to get the initial widget state from.\n * @param {any} options The option data to send in the ajax get request.\n * @param {any} onCompleteFunc The function will be called after the tile is initialized.\n */\n function initializeTile(dashboardWidgetId, getUrl, options, onCompleteFunc) {\n var _data = options || {};\n try {\n // Update the status to 'busy'.\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.busy);\n // Ensure that the required data has been set.\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n // Invoke the http get.\n $.ajax({ type: 'GET', url: getUrl, data: jQuery.param(_data), cache: false })\n .done(function (data) {\n // Update the content for the widget.\n PortalContainer.setTile(data, dashboardWidgetId);\n // Set the status to available.\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.available);\n })\n .always(function () {\n if (onCompleteFunc) {\n if (typeof (onCompleteFunc) === \"function\") {\n onCompleteFunc();\n }\n else if (typeof (onCompleteFunc) === \"string\") {\n GSS.common.getFunction(onCompleteFunc)();\n }\n }\n })\n .fail(function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'initializeTile');\n PortalContainer.onFail(dashboardWidgetId, PortalContainer.errorType.init, _errorData);\n });\n }\n catch (ex) {\n var _errorData = PortalContainer.setErrorData(ex.message, PortalContainer.fileName, 'initializeTile');\n PortalContainer.onFail(dashboardWidgetId, PortalContainer.errorType.init, _errorData);\n }\n }\n PortalContainer.initializeTile = initializeTile;\n /**\n * @deprecated Obsolete Use Request.getByEvent Instead\n */\n function get(el, url, data, dataType, cache) {\n PortalContainer.progressShow();\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(el);\n var _data = PortalContainer.setRequiredData(_dashboardWidgetId, data);\n // Create an ajax call to controller and return request as Promise object\n var request = GSS.common.request(url, dataType, cache).get(_data);\n // process Promise object\n return request.then(\n // return ajax success\n function (data, textStatus, jqXHR) {\n // Re-render the incoming contents.\n PortalContainer.progressHide();\n return (void data, textStatus, jqXHR);\n },\n // return ajax fail when something went wrong.\n function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, url);\n PortalContainer.progressHide();\n PortalContainer.onFail(_dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n PortalContainer.get = get;\n /**\n * @deprecated Obsolete Use Request.getByDashboardWidgetId Instead\n */\n function getPartial(dashboardWidgetId, getUrl, options, setStatus, onCompleteFunc, enableModalProgress) {\n var _data = options || {};\n if (setStatus) {\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.busy);\n }\n try {\n if (enableModalProgress) {\n PortalContainer.progressShow();\n }\n // Ensure that the required data has been set.\n if (dashboardWidgetId) {\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n }\n else {\n dashboardWidgetId = GSS.common.getParameterByName(PortalContainer.requestFields.dashboardWidgetId);\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n }\n // Invoke the get.\n $.ajax({ type: 'GET', url: getUrl, data: _data, cache: false })\n .always(function (data) {\n if (onCompleteFunc) {\n if (typeof (onCompleteFunc) === \"function\") {\n onCompleteFunc(data);\n }\n else if (typeof (onCompleteFunc) === \"string\") {\n GSS.common.getFunction(onCompleteFunc)(data);\n }\n }\n if (setStatus) {\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.available);\n }\n })\n .fail(function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'getPartial');\n if (setStatus) {\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.error);\n }\n PortalContainer.onFail(dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n });\n }\n catch (ex) {\n var _errorData = PortalContainer.setErrorData(ex.message, PortalContainer.fileName, 'getPartial');\n if (setStatus) {\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.error);\n }\n PortalContainer.onFail(dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n }\n }\n PortalContainer.getPartial = getPartial;\n /**\n * @description Function that wraps widget initialization.\n * @param {any} initFunction The initialize function of the widget.\n * @param {any} dashboardWidgetId The id of the dashboard widget id.\n * @param {any} settings The options related to the initialization function.\n */\n function invokeWidgetInit(initFunction, dashboardWidgetId, settings) {\n setTimeout(function () {\n var _func = null;\n try {\n _func = GSS.common.getFunction(initFunction);\n if (_func == null || typeof _func !== 'function') {\n throw 'Initialization function not defined';\n }\n }\n catch (ex) {\n var _errorData = PortalContainer.setErrorData(ex.message, PortalContainer.fileName, 'invokeWidgetInit');\n PortalContainer.onFail(dashboardWidgetId, PortalContainer.errorType.init, _errorData);\n return false;\n }\n var _settingObj = null;\n if (settings) {\n if (typeof (settings) === 'string') {\n _settingObj = JSON.parse(settings);\n }\n else if (typeof (settings) === 'object') {\n _settingObj = settings;\n }\n }\n _func.apply(null, [dashboardWidgetId, _settingObj]);\n }, 1);\n }\n PortalContainer.invokeWidgetInit = invokeWidgetInit;\n /**\n * @description Show the content in a modal.\n * @param {any} modalContent The content in the modal.\n * @param {boolean} disableDeadZoneClick The value indicates whether the modal is static or not.\n * @param {string} sectionIdToHide Hide a section inside the modal content.\n * @param {any} onCompleteFunc The function will be called after the tile is initialized.\n */\n function modalShowContent(modalContent, disableDeadZoneClick, sectionIdToHide, onCompleteFunc) {\n if (disableDeadZoneClick === void 0) { disableDeadZoneClick = false; }\n var _updateContent = true;\n var _modalContainer = $('#' + PortalContainer.modalValues.container);\n _modalContainer.empty();\n if (_modalContainer.length == 0) {\n _updateContent = false;\n _modalContainer = $(document.createElement('div'))\n .attr('id', PortalContainer.modalValues.container)\n .attr('class', 'modal fade in')\n .attr('tabindex', -1)\n .attr('role', 'dialog')\n .attr('aria-labelledby', PortalContainer.modalValues.container);\n }\n if (disableDeadZoneClick) {\n $(_modalContainer).attr({ 'data-backdrop': 'static' });\n }\n $(_modalContainer).empty().append(modalContent);\n $(_modalContainer).modal('show');\n // Add the on complete function if it exists\n if (onCompleteFunc) {\n if (typeof (onCompleteFunc) === \"function\") {\n if (_updateContent) {\n onCompleteFunc();\n }\n else {\n $(_modalContainer).on('shown.bs.modal', function () { onCompleteFunc(); });\n }\n }\n else if (typeof (onCompleteFunc) === \"string\") {\n if (_updateContent) {\n GSS.common.getFunction(onCompleteFunc)();\n }\n else {\n $(_modalContainer).on('shown.bs.modal', function () { GSS.common.getFunction(onCompleteFunc)(); });\n }\n }\n }\n if (GSS.common.isNotNullOrEmpty(sectionIdToHide)) {\n $(_modalContainer).children(\"div\").find(sectionIdToHide).hide();\n }\n // Add the event that clears the modal cache\n $(_modalContainer).on('hidden.bs.modal', function () {\n if (GSS.common.isNotNullOrEmpty(sectionIdToHide)) {\n $(this).children(\"div\").find(sectionIdToHide).toggle();\n }\n $(this).removeData('bs.modal');\n $(this).empty();\n $(this).remove();\n });\n return true;\n }\n PortalContainer.modalShowContent = modalShowContent;\n /**\n * @description Show the result of the request in a modal window.\n * @param {any} el The element to get the closest dashboard widget id for.\n * @param {boolean} e The event to invoke this function.\n * @param {boolean} isStatic The value indicates whether the modal is static or not.\n * @param {string} getViewAction The url of the request.\n * @param {any} onCompleteFunc The function will be called after the response is received.\n * @param {any} ajaxData The data will be sent in the request.\n * @param {string} callType The Http request method.\n * @param {boolean} cacheEnabled Enable the cache or not.\n */\n function modalShow(el, e, isStatic, getViewAction, onCompleteFunc, ajaxData, callType, cacheEnabled) {\n if (callType === void 0) { callType = 'GET'; }\n if (cacheEnabled === void 0) { cacheEnabled = false; }\n var _contentType = null;\n var _updateContent = true;\n var _modalContainer = $('#' + PortalContainer.modalValues.container);\n if (_modalContainer.length == 0) {\n _updateContent = false;\n _modalContainer = $(document.createElement('div'))\n .attr('id', PortalContainer.modalValues.container)\n .attr('class', 'modal fade in')\n .attr('tabindex', -1)\n .attr('role', 'dialog')\n .attr('aria-labelledby', PortalContainer.modalValues.container)\n .attr('aria-label', PortalContainer.modalValues.container);\n }\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(el);\n var _data = ajaxData || {};\n _data = PortalContainer.setRequiredData(_dashboardWidgetId, _data);\n if (typeof (_data) === \"object\") {\n if (callType === 'POST') {\n _data = JSON.stringify(_data);\n _contentType = 'application/json; charset=utf-8';\n }\n else {\n _data = jQuery.param(_data, true);\n }\n }\n var _requestOptions = {\n type: callType,\n url: getViewAction,\n data: _data,\n cache: cacheEnabled\n };\n if (_contentType) {\n _requestOptions['contentType'] = _contentType;\n }\n $.ajax(_requestOptions)\n .done(function (data, textStatus, jqXHR) {\n if (isStatic) {\n $(_modalContainer).data('backdrop', 'static');\n }\n else {\n $(_modalContainer).removeData('backdrop');\n }\n // Empty the modal container and replace with the view data\n $(_modalContainer).empty().append(data);\n if (!_updateContent) {\n $(_modalContainer).modal('show');\n }\n })\n .always(function () {\n if (onCompleteFunc) {\n if (typeof (onCompleteFunc) === \"function\") {\n if (_updateContent) {\n onCompleteFunc();\n }\n else {\n $(_modalContainer).on('shown.bs.modal', function () { onCompleteFunc(); });\n }\n }\n else if (typeof (onCompleteFunc) === \"string\") {\n if (_updateContent) {\n GSS.common.getFunction(onCompleteFunc)();\n }\n else {\n $(_modalContainer).on('shown.bs.modal', function () { GSS.common.getFunction(onCompleteFunc)(); });\n }\n }\n }\n })\n .fail(function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'modalShow');\n PortalContainer.onFail(_dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n });\n // Add the event that clears the modal cache\n $(_modalContainer).on('hidden.bs.modal', function () {\n $(this).removeData('bs.modal');\n $(this).empty();\n $(this).remove();\n });\n return true;\n }\n PortalContainer.modalShow = modalShow;\n /**\n * @description Hide the modal window.\n * @param {any} clear Clear the modal content.\n */\n function modalHide(clear) {\n var _modalContainerSelector = '#' + PortalContainer.modalValues.container;\n var _modalContainer = $(_modalContainerSelector);\n if (clear) {\n _modalContainer.empty();\n }\n if (_modalContainer.length > 0) {\n $(_modalContainerSelector).modal('hide');\n }\n return true;\n }\n PortalContainer.modalHide = modalHide;\n /**\n * @description Sends an error notification about a widget error.\n * @param {any} dashboardWidgetId The dashboard widget that errored\n * @param {any} subject The notification subject.\n * @param {any} errorData The error details.\n */\n function notifyWidgetError(dashboardWidgetId, subject, errorData) {\n // Clear the content before POSTing data\n errorData['content'] = '';\n setTimeout(function () {\n var _data = errorData;\n GSS.common.extendValue(_data, GSS.widget.widgetErrorSettings.subjectParamName, subject);\n if (!(_data.error == \"timeout\" && _data['url'] == '../_Portal/Cart')) {\n $.ajax({ type: 'POST', url: GSS.widget.widgetErrorSettings.url, data: jQuery.param(_data), cache: false });\n }\n }, 1);\n }\n PortalContainer.notifyWidgetError = notifyWidgetError;\n /**\n * @deprecated Obsolete Need to refactor to use Request.postByEvent\n */\n function post(el, url, data) {\n PortalContainer.progressShow();\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(el);\n var _data = PortalContainer.setRequiredData(_dashboardWidgetId, data);\n //Create an ajax call to controller and return request as Promise object\n var request = GSS.common.request(url).post(_data);\n // process Promise object\n return request.then(\n // return ajax success\n function (data, textStatus, jqXHR) {\n PortalContainer.progressHide();\n return (void data, textStatus, jqXHR);\n },\n // return ajax fail when something went wrong.\n function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'portalContainer.post => ' + url);\n PortalContainer.onFail(_dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n PortalContainer.post = post;\n /**\n * @description Pefroms an ajax post to the specified url using the closest dashboard widget id from the specified element.\n * @param {any} el The element to get the closest dashboard widget id for.\n * @param {any} e The event that triggered the post by element function call.\n * @param {any} url The url to post to.\n * @param {any} data The data to post.\n * @returns {JQueryXHR} A jQuery ajax result. This is done to create hooks for the complete, success, error methods.\n */\n function postByElement(el, e, url, data) {\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(el);\n return PortalContainer.postByDashboardWidgetId(_dashboardWidgetId, url, data);\n }\n PortalContainer.postByElement = postByElement;\n /**\n * @description Pefroms an ajax post to the specified url using the closest dashboard widget id from the specified element.\n * @param {any} dashboardWidgetId The id of the dashboard widget to post for.\n * @param {any} url The url to post to.\n * @param {any} data The data to post.\n * @returns {JQueryXHR} A jQuery ajax result. This is done to create hooks for the complete, success, error methods.\n */\n function postByDashboardWidgetId(dashboardWidgetId, url, data) {\n var _data = data;\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n return $.ajax({ type: 'POST', url: url, data: jQuery.param(_data), cache: false });\n }\n PortalContainer.postByDashboardWidgetId = postByDashboardWidgetId;\n /**\n * @deprecated Obsolete\n */\n function postForm(el, onComplete) {\n /// Sets up the javascript event binding for the widget 2 object.\n /// The element that contains the closes form element to post.\n /// The event that triggers the post.\n /// This is setup as an old fashioned event instead of using jQuery binding to avoid calling \"on\" functions for every DOM change.\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(el);\n var _form = $(el).closest('form').first();\n var _data = _form.serialize();\n // Register callback functions\n var callbacks = $.Callbacks(\"once\");\n callbacks.add(onComplete);\n _data = PortalContainer.setRequiredData(_dashboardWidgetId, _data);\n //Create an ajax call to controller\n var request = GSS.common.request(_form.attr('action')).post(_data);\n // New client is successfully createad\n request.done(function (data, textStatus, jqXHR) {\n // Re-render the incoming contents.\n if (data && data.content) {\n PortalContainer.setContent(_dashboardWidgetId, data.content);\n }\n // Fire callback function\n callbacks.fire(data, _dashboardWidgetId);\n });\n // Something went wrong. Request fails.\n request.fail(function (jqXHR, textStatus, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'postForm');\n PortalContainer.onFail(_dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n });\n return true;\n }\n PortalContainer.postForm = postForm;\n /**\n * @deprecated Obsolete\n */\n function submitForm(el, dataType) {\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(el);\n var _form = $(el).closest('form').first();\n var _data = _form.serialize();\n _data = PortalContainer.setRequiredData(_dashboardWidgetId, _data);\n //Create an ajax call to controller and return request as Promise object\n var request = GSS.common.request(_form.attr('action'), dataType, false).post(_data);\n // process Promise object\n return request.then(\n // return ajax success\n function (data, textStatus, jqXHR) {\n // Re-render the incoming contents.\n if (data && data.content) {\n PortalContainer.setContent(_dashboardWidgetId, data.content);\n }\n return (void data, textStatus, jqXHR);\n },\n // return ajax fail when something went wrong.\n function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'postForm');\n PortalContainer.onFail(_dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n PortalContainer.submitForm = submitForm;\n var _progressModal = (function () {\n var _progress;\n return function (options) {\n if (!GSS.common.isNotNullOrEmpty(_progress)) {\n _progress = new Progress('body', options);\n }\n return _progress;\n };\n })();\n /**\n * @description Show the progress bar.\n * @param {any} message The message shows in the progress bar.\n * @param {any} delay The time of delay.\n * @param {any} useMetaData Use meta data.\n * @returns {boolean} Return true if the progress bar shows correctly.\n */\n function progressShow(message, delay, useMetaData) {\n if (useMetaData === void 0) { useMetaData = true; }\n _progressModal({ message: message, delay: delay, useMetaData: useMetaData }).open();\n return true;\n }\n PortalContainer.progressShow = progressShow;\n /**\n * @description Hide the progress bar.\n * @returns {boolean} Return true if the progress bar hides correctly.\n */\n function progressHide() {\n _progressModal().close();\n return true;\n }\n PortalContainer.progressHide = progressHide;\n /**\n * @description Show the progress bar and auto hide it after the response is received.\n * @param {any} message The message shows in the progress bar.\n * @param {any} delay The time of delay.\n * @param {any} useMetaData Use meta data.\n * @returns {JQuery} Return JQuery object.\n */\n function progressLoading(message, delay, useMetaData) {\n if (useMetaData === void 0) { useMetaData = true; }\n $('body').gssAjaxProgress({ message: message, delay: delay, useMetaData: useMetaData });\n }\n PortalContainer.progressLoading = progressLoading;\n /**\n * @description Takes the incoming message and calls all of the consume message functions.\n * @param {any} message The message to relay to all of the consume message functions.\n */\n function queueMsg(message) {\n // Pass the message to the portal container.\n setTimeout(PortalContainer.consumeMessage, 1, message);\n // If the collection of subscribers is defined, pass along the message to each subscriber.\n if (PortalContainer.subscriptions) {\n $(PortalContainer.subscriptions).each(function () {\n // Call each message handler function in a setTimeout call. This will ensure that each method call is processed \"asynchronously\".\n setTimeout(this, 1, message);\n });\n }\n }\n PortalContainer.queueMsg = queueMsg;\n /**\n * @description Redirects to the full application view for the specified widget using the data as a query string.\n * @param {any} dashboardWidgetId The unique widget instance identifier\n * @param {any} data The optional data to append to the url.\n */\n function redirectToFullApp(dashboardWidgetId, data) {\n window.location.href = PortalContainer.getFullAppUrl(dashboardWidgetId, data);\n }\n PortalContainer.redirectToFullApp = redirectToFullApp;\n /**\n * @description Redirects to the survey dashboard view using the data as a query string.\n * @param {any} dashboardWidgetId The unique widget instance identifier\n * @param {any} data The optional data to append to the url.\n */\n function redirectToSurveyDashboard(dashboardWidgetId, data) {\n var _data = data || '';\n var baseUrl = '../_Portal/SurveyDashboardAsync?';\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n if (typeof (_data) === 'object') {\n _data = GSS.common.encodeAndParameterize(_data);\n }\n window.location.href = baseUrl + _data;\n }\n PortalContainer.redirectToSurveyDashboard = redirectToSurveyDashboard;\n /**\n * @description Redirects to the full application view for the specified widget using the data as a query string.\n * @param {any} dashboardWidgetId The unique widget instance identifier\n * @param {any} data The optional data to append to the url.\n */\n function redirectToApp() {\n var _dashboardWidgetId = $(this).closest('[data-gss-dashboard-widget-id]').attr('data-gss-dashboard-widget-id');\n var data;\n window.location.href = PortalContainer.getFullAppUrl(_dashboardWidgetId, data);\n }\n PortalContainer.redirectToApp = redirectToApp;\n /**\n * @description Extends user current sesion\n */\n function extendSession() {\n var _doNothing = function () {\n return false;\n };\n PortalContainer.refreshAccessToken(_doNothing);\n }\n PortalContainer.extendSession = extendSession;\n /**\n * @description Refresh the access token.\n * @param {any} onSuccess The method will be called after the token is refreshed\n */\n function refreshAccessToken(onSuccess) {\n var _data = {};\n var dashboardWidgetId = PortalContainer.getDashboardWidgetId();\n if (dashboardWidgetId) {\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n }\n else {\n _data = GSS.pc.Request.setRequiredData(null, _data);\n }\n $.ajax({ type: 'POST', url: '../_Portal/RefreshAccessToken', data: jQuery.param(_data) })\n .done(function (data, status, jqXHR) {\n if (onSuccess) {\n onSuccess();\n }\n });\n }\n PortalContainer.refreshAccessToken = refreshAccessToken;\n /**\n * @description Handles the logic of resizing a specific widget.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} height The new height of the widget.\n * @param {any} width The new width of the widget.\n */\n function resizeTile(dashboardWidgetId, height, width) {\n /// This is not being used currently, as the dynamnic resizing was taken out.\n // Set the height and width values on the current widget container.\n var _widgetContainer = GSS.widget.getWidgetContainer(dashboardWidgetId);\n _widgetContainer.attr(GSS.widget.attributeNames.dashboardWidgetHeight, height);\n _widgetContainer.attr(GSS.widget.attributeNames.dashboardWidgetWidth, width);\n // Send the message to notify the widget that it needs to be resized.\n var _resizePayload = {};\n _resizePayload[PortalContainer.requestFields.height] = height;\n _resizePayload[PortalContainer.requestFields.width] = width;\n var _message = PortalContainer.createMessage(dashboardWidgetId, PortalContainer.actionNames.resize, _resizePayload);\n PortalContainer.queueMsg(_message);\n }\n PortalContainer.resizeTile = resizeTile;\n /**\n * @description Sets the content based on the specified unique widget identifier.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} content The content used to replace the main widget content.\n */\n function setContent(dashboardWidgetId, content) {\n if (!dashboardWidgetId) {\n dashboardWidgetId = PortalContainer.getDashboardWidgetId();\n }\n var _contentElement = GSS.widget.getWidgetContentElement(dashboardWidgetId);\n if (_contentElement) {\n _contentElement.html(content);\n }\n }\n PortalContainer.setContent = setContent;\n /**\n * @description Sets up the widget application based on the data object.\n * @param {any} data The standard widget response data.\n */\n function setApp(data, dashboardWidgetId) {\n if (!data) {\n return true;\n }\n var _widgetDashboardId = dashboardWidgetId || data[PortalContainer.responseFields.dashboardWidgetId];\n if (_widgetDashboardId) {\n // Set the widget content.\n var _content = data[PortalContainer.responseFields.content] || data;\n if (_content) {\n PortalContainer.setContent(_widgetDashboardId, _content);\n }\n // Set the widget title.\n var _title = data[PortalContainer.responseFields.title];\n if (_title) {\n PortalContainer.setTitle(_widgetDashboardId, _title);\n }\n // Set the navigation items.\n var _navItems = data[PortalContainer.responseFields.navigationItems];\n if (_navItems) {\n // Navigation item support has been removed for now since it is not being used.\n }\n // Queue up any messages as needed.\n var _msgs = data[PortalContainer.responseFields.messages];\n if (_msgs) {\n $(_msgs).each(function () { PortalContainer.queueMsg(this); });\n }\n }\n }\n PortalContainer.setApp = setApp;\n /**\n * @description Sets the error data.\n * @param {any} jqXHR The jqXHR.\n * @param {any} jsFile The javascript file name.\n * @param {any} functionCalled The function has the error.\n * @returns{object} The object contains the error details.\n */\n function setErrorData(jqXHR, jsFile, functionCalled, url) {\n if (url === void 0) { url = \"\"; }\n var data = {};\n data['error'] = jqXHR ? jqXHR.statusText : 'Error';\n data['content'] = jqXHR ? jqXHR.responseText : 'Error';\n data['file'] = jsFile;\n data['method'] = functionCalled;\n data['url'] = url;\n return data;\n }\n PortalContainer.setErrorData = setErrorData;\n /**\n * @description Extends the incoing data object with the required request data.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} data The data object to extend\n * @returns{object} The object contains the required data.\n */\n function setRequiredData(dashboardWidgetId, data) {\n if (!dashboardWidgetId) {\n dashboardWidgetId = GSS.common.getAttributeValue(GSS.widget.attributeNames.dashboardWidgetId, null);\n }\n var _clientId = GSS.common.getAttributeValue(GSS.widget.attributeNames.clientId, null);\n if (_clientId) {\n data = GSS.common.extendValue(data, PortalContainer.requestFields.clientId, _clientId);\n }\n data = GSS.common.extendValue(data, PortalContainer.requestFields.dashboardWidgetId, dashboardWidgetId);\n data = GSS.common.addAntiForgeryToken(data);\n return data;\n }\n PortalContainer.setRequiredData = setRequiredData;\n /**\n * @description Sets the widget entire tile markup based on the incoming data.\n * @param {any} data The standard widget response data.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n */\n function setTile(data, dashboardWidgetId) {\n /// Sets the widget entire tile markup based on the incoming data.\n /// The standard widget response data.\n if (!data) {\n return true;\n }\n var _widgetDashboardId = dashboardWidgetId || data[PortalContainer.responseFields.dashboardWidgetId];\n if (_widgetDashboardId) {\n // Set the widget content.\n var _content = data[PortalContainer.responseFields.content];\n if (_content) {\n PortalContainer.setContent(_widgetDashboardId, _content);\n }\n // Queue up any messages as needed.\n var _msgs = data[PortalContainer.responseFields.messages];\n if (_msgs) {\n $(_msgs).each(function () { PortalContainer.queueMsg(this); });\n }\n }\n }\n PortalContainer.setTile = setTile;\n /**\n * @description Sets the title based on the specified unique widget identifier.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} title The title value.\n */\n function setTitle(dashboardWidgetId, title) {\n if (!dashboardWidgetId) {\n dashboardWidgetId = PortalContainer.getDashboardWidgetId();\n }\n var _titleElement = GSS.widget.getWidgetTitleElement(dashboardWidgetId);\n if (_titleElement) {\n _titleElement.html(title);\n }\n }\n PortalContainer.setTitle = setTitle;\n /**\n * @description Sets the content into the widget container.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} content The content will be put in the widget container.\n */\n function setWidgetContainerContent(dashboardWidgetId, content) {\n if (!dashboardWidgetId) {\n dashboardWidgetId = PortalContainer.getDashboardWidgetId();\n }\n var _container = GSS.widget.getWidgetContainer(dashboardWidgetId);\n if (!_container) {\n return false;\n }\n $(_container).html(content);\n }\n PortalContainer.setWidgetContainerContent = setWidgetContainerContent;\n /**\n * @description Updates the status for the widget.\n * @param {any} dashboardWidgetId The identifier for the widget to update the status for.\n * @param {any} status The new status for the widget.\n * @param {any} uiMessage (Optional) message to show in the widget.\n */\n function setWidgetStatus(dashboardWidgetId, status, uiMessage) {\n var _container = GSS.widget.getWidgetContainer(dashboardWidgetId);\n if (!_container) {\n return false;\n }\n var _prevStatus = $(_container).attr(GSS.widget.attributeNames.widgetStatus);\n var _newStatus = status.toLowerCase();\n var _msg = uiMessage;\n if (_msg || _newStatus === \"error\") {\n // If we don't have a message it's an error, use default error message.\n _msg = _msg || GSS.portal.errorContent.content;\n var __content = $('' + _msg + \"
\");\n PortalContainer.setContent(dashboardWidgetId, __content);\n }\n // If the status has changed, update the status and then apply the style changes.\n if (_prevStatus != status) {\n $(_container).attr(GSS.widget.attributeNames.widgetStatus, _newStatus)\n .removeClass('widget_status_' + _prevStatus)\n .addClass('widget_status_' + _newStatus);\n }\n }\n PortalContainer.setWidgetStatus = setWidgetStatus;\n /**\n * @description Adds the function to the list of functions that get alerted when a message is queued for the communication bus.\n * @param {any} consumeMsgFunc The javascript function that is used to consume the messages in the event bus.\n */\n function subscribe(consumeMsgFunc) {\n PortalContainer.subscriptions[PortalContainer.subscriptions.length] = consumeMsgFunc;\n }\n PortalContainer.subscribe = subscribe;\n /**\n * @description Handles a failed widget initialization.\n * @param {any} dashboardWidgetId The unique widget instance identifier.\n * @param {any} data The data object for the failed widget initialization request.\n * @param {any} ex The exception value.\n */\n function onWidgetInitializeFail(dashboardWidgetId, errorData) {\n PortalContainer.setWidgetStatus(dashboardWidgetId, PortalContainer.widgetStatus.error);\n PortalContainer.notifyWidgetError(dashboardWidgetId, 'Widget failed to load', errorData);\n }\n PortalContainer.onWidgetInitializeFail = onWidgetInitializeFail;\n /**\n * @description Function called when an error occurs.\n * @param {any} data The data to display on error.\n */\n function onFail(dashboardWidgetId, errorType, errorData) {\n errorData = PortalContainer.setRequiredData(dashboardWidgetId, errorData);\n errorData[\"errorType\"] = errorType;\n this.modalHide();\n switch (errorType) {\n case this.errorType.init:\n PortalContainer.onWidgetInitializeFail(dashboardWidgetId, errorData);\n break;\n case this.errorType.generic:\n this.setWidgetContainerContent(dashboardWidgetId, errorData[\"content\"]);\n PortalContainer.notifyWidgetError(dashboardWidgetId, 'An error occurred', errorData);\n break;\n case this.errorType.undefined:\n PortalContainer.notifyWidgetError(dashboardWidgetId, 'Unknown error', errorData);\n break;\n }\n }\n PortalContainer.onFail = onFail;\n /**\n * @description Send a request to set user widget setting.\n * @param {any} dashboardWidgetId The dashboard widget to set the setting for.\n * @param {any} value The value of the setting.\n */\n function setUserWidgetSettings(dashboardWidgetId, value) {\n var _data = {};\n _data['value'] = value;\n return PortalContainer.postByDashboardWidgetId(dashboardWidgetId, PortalContainer.url.setUserWidgetSettings, _data);\n }\n PortalContainer.setUserWidgetSettings = setUserWidgetSettings;\n /**\n * @description Provides functionality for working with server requests.\n */\n var Request;\n (function (Request) {\n /**\n * @description Generates an HTTP GET request to get the dashboard widget.\n * @param {string} dashboardWidgetId a dashboard widget id.\n * @param {string} url The url of the request.\n * @param {Object} options a json object data for the request.\n * @param {string} dataType return data type of the request.\n * @param {boolean} setStatus a flag to set widget status.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {boolean} enableCache Enable the cache or not.\n * @return {JQueryPromise} A Promise.\n */\n function getByDashboardWidgetId(dashboardWidgetId, url, options, dataType, setStatus, enableModalProgress, enableCache) {\n return Core.get(dashboardWidgetId, url, options, dataType, setStatus, enableModalProgress, enableCache);\n }\n Request.getByDashboardWidgetId = getByDashboardWidgetId;\n /**\n * @description Generates an HTTP GET request to get the dashboard widget with History capture ready.\n * @param {string} dashboardWidgetId a dashboard widget id.\n * @param {string} url The url of the request.\n * @param {Object} options a json object data for the request.\n * @param {string} dataType return data type of the request.\n * @param {boolean} setStatus a flag to set widget status.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {string} attrValue a data attribute value to render the partial view.\n * @param {string} attrProperty a data attribute property to render the partial view.\n * @param {boolean} parent set it to true to save history as single state; set it to false to combine two requests in one state then save.\n * @return {JQueryPromise} A Promise.\n */\n function getByDashboardWidgetIdWithHistoryAjax(dashboardWidgetId, url, options, dataType, setStatus, enableModalProgress, attrValue, attrProperty, parent) {\n if (parent === void 0) { parent = true; }\n return Core.getWithHistoryAjax(dashboardWidgetId, url, options, dataType, setStatus, enableModalProgress, attrValue, attrProperty, parent);\n }\n Request.getByDashboardWidgetIdWithHistoryAjax = getByDashboardWidgetIdWithHistoryAjax;\n /**\n * @description Generates an HTTP GET request to get the dashboard widget with History capture ready.\n * @param {string} dashboardWidgetId a dashboard widget id.\n * @param {string} url The url of the request.\n * @param {Object} options a json object data for the request.\n * @param {string} dataType return data type of the request.\n * @param {boolean} setStatus a flag to set widget status.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {string} callback a full qualified function's name and its path.\n * @param {Object} callbackData a json object data for callback function.\n * @param {boolean} parent set it to true to save history as single state; set it to false to combine two requests in one state then save.\n * @return {JQueryPromise} A Promise.\n */\n function getByDashboardWidgetIdWithHistoryCallback(dashboardWidgetId, url, options, dataType, setStatus, enableModalProgress, callback, callbackData, parent) {\n if (parent === void 0) { parent = true; }\n return Core.getWithHistoryCallback(dashboardWidgetId, url, options, dataType, setStatus, enableModalProgress, callback, callbackData, parent);\n }\n Request.getByDashboardWidgetIdWithHistoryCallback = getByDashboardWidgetIdWithHistoryCallback;\n /**\n * @description Generates an HTTP GET request.\n * @param e The event.\n * @param url The url of the request.\n * @param data The additional data for the request.\n * @param dataType The data type of the request.\n * @param enableModalProgress Show the progress bar or not when sending the request.\n * @param enableCache Enable the cache or not.\n * @param timeout The optional request timeout in milliseconds.\n * @return {JQueryPromise} A Promise.\n */\n function getByEvent(e, url, data, dataType, enableModalProgress, enableCache, timeout) {\n return Core.get(e, url, data, dataType, false, enableModalProgress, enableCache, timeout);\n }\n Request.getByEvent = getByEvent;\n /**\n * @description Generates an HTTP GET request with History capture ready.\n * @param {JQueryEventObject} e The event.\n * @param {string} url The url of the request.\n * @param {Object} data a json object data for the request.\n * @param {string} dataType return data type of the request.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {string} attrValue a data attribute value to render the partial view.\n * @param {string} attrProperty a data attribute property to render the partial view.\n * @param {boolean} parent set it to true to save history as single state; set it to false to combine two requests in one state then save.\n * @return {JQueryPromise} A Promise.\n */\n function getByEventWithHistoryAjax(e, url, data, dataType, enableModalProgress, attrValue, attrProperty, parent) {\n if (parent === void 0) { parent = true; }\n return Core.getWithHistoryAjax(e, url, data, dataType, false, enableModalProgress, attrValue, attrProperty, parent);\n }\n Request.getByEventWithHistoryAjax = getByEventWithHistoryAjax;\n /**\n * @description Generates an HTTP GET request with History capture ready.\n * @param {JQueryEventObject} e The event.\n * @param {string} url The url of the request.\n * @param {Object} data a json object data for the request.\n * @param {string} dataType return data type of the request.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {string} callback a full qualified function's name and its path.\n * @param {Object} callbackData a json object data for callback function.\n * @param {boolean} parent set it to true to save history as single state; set it to false to combine two requests in one state then save.\n * @return {JQueryPromise} A Promise.\n */\n function getByEventWithHistoryCallback(e, url, data, dataType, enableModalProgress, callback, callbackData, parent) {\n if (parent === void 0) { parent = true; }\n return Core.getWithHistoryCallback(e, url, data, dataType, false, enableModalProgress, callback, callbackData, parent);\n }\n Request.getByEventWithHistoryCallback = getByEventWithHistoryCallback;\n /**\n * @description Generates an HTTP POST request.\n * @param {JQueryEventObject} e The event.\n * @param {string} url The url of the request.\n * @param {any} data The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {boolean} enableCache Enable the cache or not.\n * @return {JQueryPromise} A Promise.\n */\n function postByEvent(e, url, data, dataType, enableModalProgress, enableCache, timeout, contentType, overrideComponentName) {\n return Core.post(e, url, data, dataType, enableModalProgress, enableCache, timeout, contentType, overrideComponentName);\n }\n Request.postByEvent = postByEvent;\n })(Request = PortalContainer.Request || (PortalContainer.Request = {}));\n /**\n * @description Provides functionality for the core functions.\n */\n var Core;\n (function (Core) {\n /**\n * @description Gets widget info by dashboard widget id.\n * @param {string} dashboardWidgetId The unique widget instance identifier.\n * @param {any} data The data will be extended with widget info.\n * @returns {object} The data extended with widget info.\n */\n function getWidgetInfoByDashboardWidgetId(dashboardWidgetId, data) {\n var _obj = { DashboardWidgetId: '', Data: {} };\n var _data = data || {};\n if (dashboardWidgetId) {\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n }\n else {\n dashboardWidgetId = GSS.common.getParameterByName(PortalContainer.requestFields.dashboardWidgetId);\n _data = PortalContainer.setRequiredData(dashboardWidgetId, _data);\n }\n _obj.DashboardWidgetId = dashboardWidgetId;\n _obj.Data = _data;\n return _obj;\n }\n Core.getWidgetInfoByDashboardWidgetId = getWidgetInfoByDashboardWidgetId;\n /**\n * @description Gets widget info by event.\n * @param {JQueryEventObject} e The jQuery event object.\n * @param {any} data The data will be extended with widget info.\n * @returns {object} The data extended with widget info.\n */\n function getWidgetInfoByEvent(e, data) {\n var _obj = { DashboardWidgetId: '', Data: {} };\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(e);\n var _data = PortalContainer.setRequiredData(_dashboardWidgetId, data);\n _obj.DashboardWidgetId = _dashboardWidgetId;\n _obj.Data = _data;\n return _obj;\n }\n Core.getWidgetInfoByEvent = getWidgetInfoByEvent;\n /**\n * @description Generates an HTTP GET request.\n * @param key The key.\n * @param url The url of the request.\n * @param options The additional data for the request.\n * @param dataType The data type of the request.\n * @param setStatus Set the widget status or not.\n * @param enableModalProgress Show the progress bar or not when sending the request.\n * @param enableCache Enable the cache or not.\n * @param timeout The optional request timeout in milliseconds.\n * @return {JQueryPromise} A Promise.\n */\n function get(key, url, options, dataType, setStatus, enableModalProgress, enableCache, timeout) {\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n if (dataType === undefined) {\n throw new Error(\"Need to specify dataType.\");\n }\n enableModalProgress = enableModalProgress || false;\n setStatus = setStatus || false;\n enableCache = enableCache || false;\n var _useDashboardWidgetId;\n var _widgetInfo;\n if (typeof key === 'string') {\n _useDashboardWidgetId = true;\n }\n else {\n _useDashboardWidgetId = false;\n }\n if (_useDashboardWidgetId) {\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.busy);\n }\n }\n if (enableModalProgress) {\n PortalContainer.progressLoading();\n }\n if (_useDashboardWidgetId) {\n _widgetInfo = Core.getWidgetInfoByDashboardWidgetId(key, options);\n }\n else {\n _widgetInfo = Core.getWidgetInfoByEvent(key, options);\n }\n // Invoke the get.\n var _request = GSS.common.request(url, dataType, enableCache, timeout).get(_widgetInfo.Data);\n return _request.then(\n // return ajax as success when request successful processes.\n function (data, textStatus, jqXHR) {\n // PortalContainer.progressHide();\n if (_useDashboardWidgetId) {\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.available);\n }\n }\n return (void data, textStatus, jqXHR);\n },\n // return ajax as fail when request got error while processing.\n function (jqXHR, status, error) {\n var _errorData;\n if (_useDashboardWidgetId) {\n _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'Request.getByDashboardWidgetId', url);\n }\n else {\n _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'Request.getByEvent', url);\n }\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.error);\n }\n PortalContainer.onFail(_widgetInfo.DashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n Core.get = get;\n /**\n * @description Generates an HTTP GET request with History capture ready.\n * @param {any} key The key.\n * @param {string} url The url of the request.\n * @param {any} options The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @param {boolean} setStatus Set the widget status or not.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {string} attrValue a data attribute value to render the partial view.\n * @param {string} attrProperty a data attribute property to render the partial view.\n * @param {boolean} parent set it to true to save history as single state; set it to false to combine two requests in one state then save.\n * @return {JQueryPromise} A Promise.\n */\n function getWithHistoryAjax(key, url, options, dataType, setStatus, enableModalProgress, attrValue, attrProperty, parent) {\n if (parent === void 0) { parent = true; }\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n if (dataType === undefined) {\n throw new Error(\"Need to specify dataType.\");\n }\n if (setStatus !== undefined) {\n if (typeof setStatus !== 'boolean') {\n void 0;\n }\n }\n if (enableModalProgress !== undefined) {\n if (typeof enableModalProgress !== 'boolean') {\n void 0;\n }\n }\n if (attrValue !== undefined) {\n if (typeof attrValue !== 'string') {\n void 0;\n }\n }\n if (attrProperty !== undefined) {\n if (typeof attrProperty !== 'string') {\n void 0;\n }\n }\n if (parent !== undefined) {\n if (typeof parent !== 'boolean') {\n void 0;\n }\n }\n enableModalProgress = enableModalProgress || false;\n setStatus = setStatus || false;\n var _useDashboardWidgetId;\n var _widgetInfo;\n if (typeof key === 'string') {\n _useDashboardWidgetId = true;\n }\n else {\n _useDashboardWidgetId = false;\n }\n if (_useDashboardWidgetId) {\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.busy);\n }\n }\n if (enableModalProgress) {\n PortalContainer.progressLoading();\n }\n if (_useDashboardWidgetId) {\n _widgetInfo = Core.getWidgetInfoByDashboardWidgetId(key, options);\n }\n else {\n _widgetInfo = Core.getWidgetInfoByEvent(key, options);\n }\n // Invoke the get.\n var _request = GSS.common.request(url, dataType, false).get(_widgetInfo.Data);\n // save request to history\n var _historyReq = {\n id: _widgetInfo.DashboardWidgetId,\n url: url,\n data: _widgetInfo.Data,\n attrPropery: attrProperty,\n attrValue: attrValue\n };\n GSS.gssHistory.manage(_historyReq, parent);\n return _request.then(\n // return ajax as success when request successful processes.\n function (data, textStatus, jqXHR) {\n // PortalContainer.progressHide();\n if (_useDashboardWidgetId) {\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.available);\n }\n }\n return (void data, textStatus, jqXHR);\n },\n // return ajax as fail when request got error while processing.\n function (jqXHR, status, error) {\n var _errorData;\n if (_useDashboardWidgetId) {\n _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'Request.getByDashboardWidgetId');\n }\n else {\n _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'Request.getByEvent');\n }\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.error);\n }\n PortalContainer.onFail(_widgetInfo.DashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n Core.getWithHistoryAjax = getWithHistoryAjax;\n /**\n * @description Generates an HTTP GET request with History capture ready.\n * @param {any} key The key.\n * @param {string} url The url of the request.\n * @param {any} options The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @param {boolean} setStatus Set the widget status or not.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {string} callback a full qualified function's name and its path.\n * @param {Object} callbackData a json object data for callback function.\n * @param {boolean} parent set it to true to save history as single state; set it to false to combine two requests in one state then save.\n * @return {JQueryPromise} A Promise.\n */\n function getWithHistoryCallback(key, url, options, dataType, setStatus, enableModalProgress, callback, callbackData, parent) {\n if (parent === void 0) { parent = true; }\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n if (dataType === undefined) {\n throw new Error(\"Need to specify dataType.\");\n }\n if (setStatus !== undefined) {\n if (typeof setStatus !== 'boolean') {\n void 0;\n }\n }\n if (enableModalProgress !== undefined) {\n if (typeof enableModalProgress !== 'boolean') {\n void 0;\n }\n }\n if (callback !== undefined) {\n if (typeof callback !== 'string') {\n void 0;\n }\n }\n if (callbackData !== undefined) {\n if (typeof callbackData !== 'object') {\n void 0;\n }\n }\n if (parent !== undefined) {\n if (typeof parent !== 'boolean') {\n void 0;\n }\n }\n enableModalProgress = enableModalProgress || false;\n setStatus = setStatus || false;\n var _useDashboardWidgetId;\n var _widgetInfo;\n if (typeof key === 'string') {\n _useDashboardWidgetId = true;\n }\n else {\n _useDashboardWidgetId = false;\n }\n if (_useDashboardWidgetId) {\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.busy);\n }\n }\n if (enableModalProgress) {\n PortalContainer.progressLoading();\n }\n if (_useDashboardWidgetId) {\n _widgetInfo = Core.getWidgetInfoByDashboardWidgetId(key, options);\n }\n else {\n _widgetInfo = Core.getWidgetInfoByEvent(key, options);\n }\n // Invoke the get.\n var _request = GSS.common.request(url, dataType, false).get(_widgetInfo.Data);\n // save request to history\n var _historyReq = {\n url: url,\n callback: callback,\n callbackData: callbackData\n };\n GSS.gssHistory.manage(_historyReq, parent);\n return _request.then(\n // return ajax as success when request successful processes.\n function (data, textStatus, jqXHR) {\n // PortalContainer.progressHide();\n if (_useDashboardWidgetId) {\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.available);\n }\n }\n return (void data, textStatus, jqXHR);\n },\n // return ajax as fail when request got error while processing.\n function (jqXHR, status, error) {\n var _errorData;\n if (_useDashboardWidgetId) {\n _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'Request.getByDashboardWidgetId');\n }\n else {\n _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'Request.getByEvent');\n }\n if (setStatus) {\n PortalContainer.setWidgetStatus(key, PortalContainer.widgetStatus.error);\n }\n PortalContainer.onFail(_widgetInfo.DashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n Core.getWithHistoryCallback = getWithHistoryCallback;\n /**\n * @description Generates an HTTP POST request.\n * @param {JQueryEventObject} e The event.\n * @param {string} url The url of the request.\n * @param {any} data The additional data for the request.\n * @param {string} dataType The data type of the request.\n * @param {boolean} enableModalProgress Show the progress bar or not when sending the request.\n * @param {boolean} enableCache Enable the cache or not.\n * @return {JQueryPromise} A Promise.\n */\n function post(e, url, data, dataType, enableModalProgress, enableCache, timeout, contentType, overrideComponentName) {\n if (url === undefined) {\n throw new Error(\"url is invalid.\");\n }\n if (dataType === undefined) {\n throw new Error(\"Need to specify dataType.\");\n }\n enableModalProgress = enableModalProgress || false;\n enableCache = enableCache || false;\n if (enableModalProgress) {\n PortalContainer.progressLoading();\n }\n var _dashboardWidgetId = PortalContainer.getDashboardWidgetId(e);\n var _data = PortalContainer.setRequiredData(_dashboardWidgetId, data);\n //Create an ajax call to controller and return request as Promise object\n var request = GSS.common.request(url, dataType, enableCache, timeout, contentType, overrideComponentName).post(_data);\n // process Promise object\n return request.then(\n // return ajax success\n function (data, textStatus, jqXHR) {\n return (void data, textStatus, jqXHR);\n },\n // return ajax fail when something went wrong.\n function (jqXHR, status, error) {\n var _errorData = PortalContainer.setErrorData(jqXHR, PortalContainer.fileName, 'Core.post => ' + url);\n PortalContainer.onFail(_dashboardWidgetId, PortalContainer.errorType.generic, _errorData);\n return ($.Deferred().reject(jqXHR, status, error));\n });\n }\n Core.post = post;\n })(Core = PortalContainer.Core || (PortalContainer.Core = {}));\n var SignalR;\n (function (SignalR) {\n var Notifications;\n (function (Notifications) {\n /**\n * @description This method allows you to observe notification count for the currently logged in user.\n * This method can be called multiple times by multiple consumers.\n * Just after executing this method the hub will ask server how many unread notification messages user have and it will inform all\n * consumers about the number.\n * @param callback method that should be called when notification hub receives information about new unread count.\n */\n function startObservingNotifications(callback) {\n GSS.SignalR.Notifications.getHub()\n .then(function (hub) {\n hub.notificationCountEvent.subscribe(callback);\n hub.server.getNotificationCountPromise();\n });\n }\n Notifications.startObservingNotifications = startObservingNotifications;\n })(Notifications = SignalR.Notifications || (SignalR.Notifications = {}));\n })(SignalR = PortalContainer.SignalR || (PortalContainer.SignalR = {}));\n })(PortalContainer = GSS.PortalContainer || (GSS.PortalContainer = {}));\n /**\n * @description A history's library use History.js to manipulate browser history.\n */\n var gssHistory;\n (function (gssHistory) {\n /**\n * @description Bind a state change event to a callback function for reloading a page from memory\n */\n function init() {\n // History\n if (window.History.enabled) {\n window.History.Adapter.bind(window, 'statechange', function () {\n if (_stateChange) {\n GSS.gssHistory.load();\n }\n _stateChange = true;\n return false;\n });\n }\n }\n gssHistory.init = init;\n /**\n * @description Capture and save a request [GET] to current History's state. Current version only supports a Parent-Child relationship.\n * @param {requestObject} requestData a json object that hold all necessary data for reload the page.\n * @param {boolean} parent set parent flag to TRUE to save current request as parent and FALSE to merge 2 requests together and save them as Parent-Child request.\n * @param {boolean} override set override flag to TRUE to merge 2 requests and save then as a Parent and FALSE merge 2 requests and save them as Parent-Child request. This flag will only affect if parent flag set to False.\n * @param {string} pageName a page name. Most of the time is can be null.\n * @param {boolean} replace set replace flag to true to replace and false to push current state into browser history\n * @param {callBackService} callBackService a json object for implementation how page can be re-render. Most of the time it can be null.\n */\n function manage(requestData, parent, override, pageName, replace, callBackService) {\n if (parent === void 0) { parent = true; }\n if (override === void 0) { override = false; }\n if (replace === void 0) { replace = false; }\n _stateChange = false;\n var _requestData = requestData || {};\n var _callbackService = callBackService || {};\n var _ajaxRequestFunction;\n var _renderContentFunction;\n var _domFunction;\n var _pageName = pageName || '';\n var _replace = replace || false;\n var _parent = parent;\n var _internal = {\n isChild: false,\n url: _requestData.url,\n data: _requestData.data,\n id: _requestData.id,\n requestDoneCallback: _requestData.requestDoneCallback,\n requestDoneData: _requestData.requestDoneData,\n ajaxRequestFunction: _callbackService.ajaxRequestFunction || 'GSS.gssHistory.service.get',\n renderContentFunction: _callbackService.renderContentFunction || 'GSS.gssHistory.service.renderContent',\n domFunction: _callbackService.domFunction || 'GSS.gssHistory.service.restore',\n portal: _requestData.portal || true,\n attrPropery: _requestData.attrPropery || 'data-gss-name',\n attrValue: _requestData.attrValue,\n };\n if (window.History.enabled) {\n // either use custom name or use ajax's url as page name\n if (GSS.common.isNotNullOrEmpty(pageName) && pageName !== null) {\n _pageName = pageName;\n }\n else {\n if (GSS.common.isNotNullOrEmpty(requestData.url)) {\n _pageName = _requestData.url;\n }\n else {\n _pageName = ((new Date).getTime());\n }\n }\n var _preName = void 0;\n var _isChanged = true;\n // this is child request, do the merge before save history\n if (!parent) {\n var _newName = service.getPageNameFromUrl('p', window.History.getLocationHref()) + 1;\n var _state = window.History.getState();\n var _childData = _state.data.data;\n if (_requestData.callback === undefined) {\n void 0;\n return false;\n }\n // If _childData is undefined, instantiate it as an empty object with the required properties. Set properties to empty.\n if (_childData === undefined) {\n _childData = new Object();\n _childData.childCallback = {};\n _childData.childCallbackData = {};\n _childData.isChild = false;\n }\n _childData.childCallback = _requestData.callback;\n _childData.childCallbackData = _requestData.callbackData;\n _childData.isChild = true;\n if (!override) {\n window.History.replaceState({ title: gssHistory.callBackType.request, data: _childData || {} }, document.title, service.getNewUrl(_newName));\n }\n else {\n window.History.pushState({ title: gssHistory.callBackType.request, data: _childData || {} }, document.title, service.getNewUrl(_newName));\n }\n }\n // this is parent request, save history accordingly\n else {\n // get current state\n var _state = window.History.getState();\n if (GSS.common.isNotNullOrEmpty(_state) && GSS.common.isNotNullOrEmpty(_state.data.data)) {\n _isChanged = service.isChanged(_state.data.data.url, _internal.url);\n }\n _internal.callback = _requestData.callback;\n _internal.callbackData = _requestData.callbackData;\n _internal.isChild = false;\n // if the url is changed compare to previous on, push or replace history\n if (_isChanged) {\n if (!_replace) {\n window.History.pushState({ title: gssHistory.callBackType.request, data: _internal || {} }, document.title, service.getNewUrl(_pageName.gssHashCode()));\n }\n else {\n window.History.replaceState({ title: gssHistory.callBackType.request, data: _internal || {} }, document.title, service.getNewUrl(_pageName.gssHashCode()));\n }\n }\n // if the url is the same as previous one, replace history\n else {\n var _newName = service.getPageNameFromUrl('p', window.History.getLocationHref()) + 1;\n window.History.replaceState({ title: gssHistory.callBackType.request, data: _internal || {} }, document.title, service.getNewUrl(_newName));\n }\n }\n }\n return false;\n }\n gssHistory.manage = manage;\n function manageWithRewriteUrl(requestData, replace, customUrl) {\n if (replace === void 0) { replace = false; }\n if (customUrl === void 0) { customUrl = null; }\n _stateChange = false;\n var _requestData = requestData || {};\n var _callbackService = {};\n var _ajaxRequestFunction;\n var _renderContentFunction;\n var _domFunction;\n var _pageName = '';\n var _replace = replace || false;\n var _parent = parent;\n var _internal = {\n isChild: false,\n url: _requestData.url,\n data: _requestData.data,\n id: _requestData.id,\n requestDoneCallback: _requestData.requestDoneCallback,\n requestDoneData: _requestData.requestDoneData,\n ajaxRequestFunction: _callbackService.ajaxRequestFunction || 'GSS.gssHistory.service.get',\n renderContentFunction: _callbackService.renderContentFunction || 'GSS.gssHistory.service.renderContent',\n domFunction: _callbackService.domFunction || 'GSS.gssHistory.service.restore',\n portal: _requestData.portal || true,\n attrPropery: _requestData.attrPropery || 'data-gss-name',\n attrValue: _requestData.attrValue,\n };\n if (window.History.enabled) {\n if (GSS.common.isNotNullOrEmpty(requestData.url)) {\n _pageName = _requestData.url;\n }\n else {\n _pageName = ((new Date).getTime());\n }\n var _preName = void 0;\n var _isChanged = true;\n // get current state\n var _state = window.History.getState();\n if (GSS.common.isNotNullOrEmpty(_state) && GSS.common.isNotNullOrEmpty(_state.data.data)) {\n _isChanged = service.isChanged(_state.data.data.url, _internal.url);\n }\n _internal.callback = _requestData.callback;\n _internal.callbackData = _requestData.callbackData;\n _internal.isChild = false;\n // if the url is changed compare to previous on, push or replace history\n if (_isChanged) {\n if (!_replace) {\n window.History.pushState({ title: gssHistory.callBackType.request, data: _internal || {} }, document.title, service.rewriteUrl(customUrl, _pageName.gssHashCode()));\n }\n else {\n window.History.replaceState({ title: gssHistory.callBackType.request, data: _internal || {} }, document.title, service.rewriteUrl(customUrl, _pageName.gssHashCode()));\n }\n }\n // if the url is the same as previous one, replace history\n else {\n var _newName = service.getPageNameFromUrl('p', window.History.getLocationHref()) + 1;\n window.History.replaceState({ title: gssHistory.callBackType.request, data: _internal || {} }, document.title, service.getNewUrl(_newName));\n }\n }\n return false;\n }\n gssHistory.manageWithRewriteUrl = manageWithRewriteUrl;\n /**\n * @description Get History' state and re-render the page with its state. Current version only supports a Parent-Child relationship.\n * @param {any} state a qualified history' state from window.History.getState() function.\n */\n function load() {\n return __awaiter(this, arguments, void 0, function (state) {\n var _state, _stateData, _req_1, _isChildCallback_1, _childCallback_1, _callback, _isCallBackAvailable, _preState, _data, _ajaxCallback, _renderContentCallback_1, _domCallback_1, _routeRequest;\n var _this = this;\n if (state === void 0) { state = null; }\n return __generator(this, function (_a) {\n if (window.History.enabled) {\n if (state === null) {\n _state = window.History.getState();\n }\n else {\n _state = state;\n }\n _stateData = _state.data;\n switch (_stateData.title) {\n case gssHistory.callBackType.request:\n _req_1 = {\n id: _stateData.data.id,\n url: _stateData.data.url,\n data: _stateData.data.data,\n callback: _stateData.data.callback || $.noop(),\n callbackData: _stateData.data.callbackData || {},\n attrPropery: _stateData.data.attrProperty,\n attrValue: _stateData.data.attrValue,\n requestDoneCallback: _stateData.data.requestDoneCallback || $.noop(),\n requestDoneData: _stateData.data.requestDoneData || {},\n ajaxRequestFunction: _stateData.data.ajaxRequestFunction || $.noop(),\n renderContentFunction: _stateData.data.renderContentFunction || $.noop(),\n domFunction: _stateData.data.domFunction || $.noop(),\n portal: _stateData.data.portal,\n isChild: _stateData.data.isChild,\n childCallback: _stateData.data.childCallback,\n childCallbackData: _stateData.data.childCallbackData,\n };\n _isChildCallback_1 = true;\n _childCallback_1 = (function () {\n $(document).on('ajaxStop', function () {\n var _this = this;\n GSS.PortalContainer.progressHide();\n if (_isChildCallback_1) {\n _isChildCallback_1 = false;\n GSS.common.wait(10).done(function () {\n if (_req_1.isChild === true) {\n var _childCallback_2 = GSS.common.getFunction(_req_1.childCallback);\n var _childCallbackData = _req_1.childCallbackData || {};\n if (typeof _childCallback_2 === 'function') {\n _childCallback_2.call(_this, _childCallbackData);\n return false;\n }\n }\n });\n }\n });\n }());\n _callback = void 0;\n _isCallBackAvailable = false;\n service.absoluteProgressHide();\n _preState = window.History.getStateByIndex(window.History.getCurrentIndex() - 1);\n // check to see if function callBack is set\n if (GSS.common.isNotNullOrEmpty(_preState.data.data.callback) && (GSS.common.isNotNullOrEmpty(_req_1.callback))) {\n // set call back flag\n _isCallBackAvailable = (typeof GSS.common.getFunction(_preState.data.data.callback) === 'function');\n _callback = GSS.common.getFunction(_req_1.callback);\n }\n // callback flag is on, fire callback function\n if (_isCallBackAvailable) {\n // verify the callback function is valid\n if (typeof _callback === 'function') {\n GSS.PortalContainer.progressLoading();\n // fire callback function\n _callback.call(this, _req_1.callbackData);\n // fire child callback if available\n _childCallback_1;\n }\n }\n // callback flag is off, use internal ajax get request instead\n else {\n _data = {};\n GSS.PortalContainer.progressShow();\n if (_req_1.portal) {\n _data = GSS.pc.Request.setRequiredData(_req_1.id, _req_1.data);\n }\n else {\n _data = PortalContainer.setRequiredData(_req_1.id, _req_1.data);\n }\n _ajaxCallback = GSS.common.getFunction(_req_1.ajaxRequestFunction);\n _renderContentCallback_1 = GSS.common.getFunction(_req_1.renderContentFunction);\n _domCallback_1 = GSS.common.getFunction(_req_1.domFunction);\n if (_ajaxCallback === undefined || typeof _ajaxCallback !== 'function') {\n return [2 /*return*/, false];\n }\n _routeRequest = _ajaxCallback.call(this, _req_1.url, _data);\n _routeRequest.then(function (data) {\n if (_renderContentCallback_1 !== undefined) {\n if (typeof _renderContentCallback_1 === 'function') {\n _renderContentCallback_1.call(this, data, _req_1.attrValue, _req_1.attrPropery);\n }\n }\n // check if there is callback function to fire after request is done\n if (GSS.common.isNotNullOrEmpty(_req_1.requestDoneCallback)) {\n var _fn = GSS.common.getFunction(_req_1.requestDoneCallback);\n if (typeof _fn === 'function') {\n // fire callback function\n _fn.call(this, _req_1.requestDoneData);\n }\n }\n // fire child callback if available\n _childCallback_1;\n });\n _routeRequest.always(function () {\n if (_domCallback_1 !== undefined) {\n if (typeof _domCallback_1 === 'function') {\n _domCallback_1.call(_this);\n }\n }\n GSS.PortalContainer.progressHide();\n });\n }\n break;\n default:\n window.history.back();\n break;\n }\n }\n return [2 /*return*/];\n });\n });\n }\n gssHistory.load = load;\n /**\n * @description Utility helper functions that are used in gssHistory.\n */\n var service;\n (function (service) {\n /**\n * @description A helper function to render contents after it comes back from the server.\n * @param {string} data a data come back from server\n * @param {string} attrValue attribute value of a dom to append server's data.\n * @param {string} attrProperty attribute property of a dom to append server's data.\n */\n function renderContent(data, attrValue, attrProperty) {\n if (attrProperty === void 0) { attrProperty = 'data-gss-name'; }\n var _element = attrProperty.gssGetAtt(attrValue);\n if ($(_element).gssElementExists()) {\n $(_element).empty().html(data);\n }\n else {\n if ($(attrValue.gssGetId()).length > 0) {\n $(attrValue.gssGetId()).empty().html(data);\n }\n else {\n void 0;\n }\n }\n }\n service.renderContent = renderContent;\n /**\n * @description A simple jQuery ajax [GET].\n * @param {string} url a path to action method of a controller.\n * @param {object} data a json object.\n */\n function get(url, data) {\n return $.ajax({\n type: 'GET',\n url: url,\n data: data,\n cache: false\n });\n }\n service.get = get;\n /**\n * @description This function will retrieve query string value from current browser's url.\n * @param {string} name query string key\n */\n function getParameterByName(name) {\n var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);\n return match && decodeURIComponent(match[1].replace(/\\+/g, ' '));\n }\n service.getParameterByName = getParameterByName;\n /**\n * @description Get query string value from url\n * @param {string} name query string key\n * @param {string} url a full url\n */\n function getPageNameFromUrl(name, url) {\n var match = RegExp('[?&]' + name + '=([^&]*)').exec(url);\n return match && decodeURIComponent(match[1].replace(/\\+/g, ' '));\n }\n service.getPageNameFromUrl = getPageNameFromUrl;\n /**\n * @description This function will either add new query string if not already existed or update its value accordingly to existing url\n * @param {string} url a full url\n * @param {string} param a query string key\n * @param {string} value a query string value\n */\n function queryStringUrlReplacement(url, param, value) {\n var re = new RegExp(\"[\\\\?&]\" + param + \"=([^]*)\"), match = re.exec(url), delimiter, newString;\n if (match === null) {\n // append new param\n var hasQuestionMark = /\\?/.test(url);\n delimiter = hasQuestionMark ? \"&\" : \"?\";\n newString = url + delimiter + param + \"=\" + value;\n }\n else {\n delimiter = match[0].charAt(0);\n newString = url.replace(re, delimiter + param + \"=\" + value);\n }\n return newString;\n }\n service.queryStringUrlReplacement = queryStringUrlReplacement;\n function rewriteUrl(customUrl, pageId) {\n var _pageId;\n if (typeof (pageId) === 'string') {\n _pageId = pageId;\n }\n else if (typeof (pageId) === 'number') {\n _pageId = pageId.toString();\n }\n var _newFullUrl = service.queryStringUrlReplacement(customUrl, 'p', _pageId);\n return _newFullUrl.replace(window.History.getBasePageUrl(), '');\n }\n service.rewriteUrl = rewriteUrl;\n /**\n * @description Replace current browser's url to new url with pageId.\n * @param {string or number} pageId could be string or number type.\n */\n function getNewUrl(pageId) {\n var _pageId;\n if (typeof (pageId) === 'string') {\n _pageId = pageId;\n }\n else if (typeof (pageId) === 'number') {\n _pageId = pageId.toString();\n }\n var _newFullUrl = service.queryStringUrlReplacement(window.History.getLocationHref(), 'p', _pageId);\n return _newFullUrl.replace(window.History.getBasePageUrl(), '');\n }\n service.getNewUrl = getNewUrl;\n /**\n * @description Parse url into array.\n * @param {string} url full url string\n */\n function getArray(url) {\n var _arr = url.split('?');\n var _collection = [];\n var _domain = _arr[0].split('/');\n var _controller = _domain[_domain.length - 2];\n var _actionMethod = _domain[_domain.length - 1];\n _collection.push(_controller.gssHashCode());\n _collection.push(_actionMethod.gssHashCode());\n if (_arr.length > 1) {\n var _tmp = _arr[1].split('&');\n // get query string values\n if (GSS.common.isNotNullOrEmpty(_tmp) || _tmp.length > 0) {\n _tmp.forEach(function (cv, ci) {\n _collection.push(cv.gssHashCode());\n });\n }\n }\n return _collection.sort();\n }\n service.getArray = getArray;\n /**\n * @description Comparing two urls to see if there is a changed.\n * @param {string} url1\n * @param {string} url2\n */\n function isChanged(url1, url2) {\n var _arr1 = service.getArray(url1);\n var _arr2 = service.getArray(url2);\n var _changed = true;\n if (_arr1.length === _arr2.length) {\n $.each(_arr1, function (i, v) {\n if ($.inArray(v, _arr2) == -1) {\n _changed = true;\n // return false to exit each loop\n return false;\n }\n else {\n _changed = false;\n }\n });\n }\n else {\n return true;\n }\n return _changed;\n }\n service.isChanged = isChanged;\n /**\n * @description Extract all dom's attributes.\n * @param {string} prop anchor attribute property.\n * @param {string} value anchor attribute value.\n */\n function getAttr(prop, value) {\n if (prop === void 0) { prop = 'class'; }\n if (value === void 0) { value = '.active'; }\n var _collection = [];\n $(value).each(function () {\n var _attr = '';\n $.each(this.attributes, function () {\n if (this.specified) {\n if (this.name !== prop && this.value !== value) {\n _attr = _attr + this.name.gssGetAtt(this.value);\n }\n }\n });\n _collection.push(_attr);\n });\n if (_collection.length > 0) {\n return _collection.join('|');\n }\n else {\n return null;\n }\n }\n service.getAttr = getAttr;\n /**\n * @description Force to close progressing message pop up.\n */\n function absoluteProgressHide() {\n $(document).on('ajaxStop', function () {\n setTimeout(function () {\n if ($('[data-dyn-el]').length > 0) {\n $('[data-dyn-el]').each(function () { this.parentNode.removeChild(this); });\n }\n }, 300);\n });\n }\n service.absoluteProgressHide = absoluteProgressHide;\n })(service = gssHistory.service || (gssHistory.service = {}));\n /**\n * @description A Jason object that holds callback type when reload the page.\n */\n gssHistory.callBackType = {\n function: 'function',\n request: 'request',\n redirect: 'redirect'\n };\n })(gssHistory = GSS.gssHistory || (GSS.gssHistory = {}));\n})(GSS || (GSS = {}));\nvar _stateChange = true;\nvar PortalContainer = GSS.PortalContainer;\nvar pc = GSS.pc;\n$(document).on('click', GSS.data.constructDataAtt(\"data-gss-menu-action\", 'data-gss-changeclient-action'), function () { GSS.pc.changeClient(this); return (false); });\n$(document).on('click', '#viewComponents', GSS.PortalContainer.redirectToApp);\n$(document).on('click', 'data-gss-name'.gssGetAtt('buttonViewAllSupportTile'), GSS.PortalContainer.redirectToApp);\n$(document).on('click', 'data-gss-name'.gssGetAtt('buttonViewAllClientsTile'), GSS.PortalContainer.redirectToApp);\n$(document).on('click', 'data-gss-name'.gssGetAtt('buttonViewQuestionBankTile'), GSS.PortalContainer.redirectToApp);\n$(document).on('click', 'data-gss-name'.gssGetAtt('buttonViewManageCacheTile'), GSS.PortalContainer.redirectToApp);\n$(document).on('click', '#bellNotificationClick', GSS.pc.BellNotification.bellNotificationClick);\n$(document).on('click', \"#skiptocontent\", function (e) { e.preventDefault(); e.stopPropagation(); $('#maincontent').trigger('focus'); });\n//# sourceMappingURL=GSS.portalContainer.js.map"],"sourceRoot":"/source/"}