{"version":3,"sources":["authInterceptor.js","app.js","app.run.js","config.js","config.resources.js","config.exceptionHandler.js","common.js","logger.js","contentVersionningInterceptor.js","headersInjectorInterceptor.js","serverExceptionInterceptor.js","authService.js","bootstrap.dialog.js","storageService.js","userInfoEndpointService.js","userService.js","month.js","utc.js","authNotAuthenticatedDialog/authNotAuthenticatedDialog.js","authNotAuthorizedDialog/authNotAuthorizedDialog.js","layout/shell.js","layout/templates.js","loadingIndicator/loadingIndicator.js","progressIndicator/progressIndicator.js","selectOnClick/selectOnClick.js","sparkline/sparkline.js","tabstrip/tabstrip.js","widgetControl/widgetControl.js","widgetDataTable/widgetDataTable.js","layout/footer/footer.js","layout/header/header.js","layout/header/header.search.js","layout/navMenu/navMenu.js","layout/ribbon/ribbon.js"],"names":["configureAuthInterceptor","$httpProvider","interceptors","push","authInterceptorFactory","$injector","$rootScope","$q","config","httpBuffer","userService","isRefreshingTokens","request","currentUser","tokens","accessToken","headers","Authorization","responseError","rejection","status","refreshToken","deferred","defer","append","get","post","servicesUrl","identity","refreshTokenUrl","then","response","data","persist","retryAll","clear","rejectAll","broadcastError","finally","promise","reject","$broadcast","401","events","auth","notAuthenticated","403","notAuthorized","419","440","httpBufferFactory","$http","buffer","i","length","item","resolve","retryHttpRequest","angular","module","run","$translate","$on","refresh","app","toastr","options","timeOut","positionClass","appWorkStarted","appWorkFinished","logoutSuccess","controllerActivateSuccess","languageChanged","appRoot","copy","window","appRootPath","clientAppSrcPath","appVersion","inoAppConfig","version","appLanguage","uiLanguage","value","cfg","appWorkStartedEvent","appWorkFinishedEvent","$logProvider","debugEnabled","dynamicLocaleProvider","localeLocationPattern","$translateProvider","$translatePartialLoaderProvider","commonConfigProvider","useSanitizeValueStrategy","addPart","useLoader","urlTemplate","preferredLanguage","extendExceptionHandler","$delegate","logger","appErrorPrefix","logError","getLogFn","exception","cause","msg","message","indexOf","$provide","decorator","commonModule","provider","this","$get","factory","$timeout","commonConfig","handleBusyState","promises","taskId","textResourceKey","all","$log","service","moduleId","fnName","toLowerCase","logFn","log","showToast","undefined","source","logIt","logSuccess","logWarning","toastType","error","warning","success","info","$templateCache","baseUrl","key","separator","url","isSupported","api","isUrlSameAsApiUrl","userInfoEndpoint","apiBasePaths","pathIndex","isSupportedUrl","encodeURIComponent","apiUrl","LocalizedErrorMessage","isHandled","modelState","errorMessages","property","defaultErrorText","instant","hasOwnProperty","errorTextKey","errorText","getErrorMessagesFromModelState","$window","storageService","login","location","signInUrl","logout","idToken","identityToken","clearSession","signOutUrl","$modal","deleteDialog","itemName","confirmationDialog","put","title","okText","cancelText","open","templateUrl","controller","ModalInstance","keyboard","result","$scope","$modalInstance","ok","close","cancel","dismiss","sessionStorage","getItem","JSON","stringify","parse","regexValues","exec","Date","UTC","removeItem","setItem","getProfile","sessionCurrentUserKey","resetCurrentUser","uniqueId","profile","email","firstName","lastName","isAuthenticated","setProfile","setTokens","sessionUser","activate","filter","val","moment","month","format","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","directive","restrict","link","scope","toggleAuthenticationDialog","toggleAuthorizationDialog","controllerId","replace","controllerAs","common","deferredBusy","vm","amountBusyPromisesToResolve","logAppWork","event","busyIndicatorConfig","setIsBusy","isBusy","timeoutSignInUrl","userProfile","visible","authorizationDialogVisible","$","modal","show","backdrop","isAuthorizationDialogVisible","authenticationDialogVisible","eventArgs","busyConfig","element","body","document","detach","template","$interval","transclude","items","index","isIncrementing","interval","isStopped","start","stop","isCurrent","addItem","pre","attrs","itemAmount","iCnt","on","getSelection","toString","setSelectionRange","$this","sparklineType","barColor","sparklineHeight","sparklineBarWidth","sparklineBarSpacing","sparklineNegBarColor","css","sparklineStackedColor","sparkline","type","height","barWidth","barSpacing","stackedBarColor","negBarColor","zeroAxis","disableTooltips","disableInteraction","tabs","forEach","tabScope","tabRoot","find","tabId","tabContent","tabHeader","resetTrigger","$watch","resetTabStrip","isHidden","click","addTab","removeGroup","splice","iElement","iAttrs","require","setTabHeader","setTabContent","transcludeFn","clone","remove","widgetControlConfig","widgetConfig","extend","widgetId","jarvisWidgets","header","widgetTitle","widgetIconClass","constant","grid","widgets","localStorage","deleteSettingsKey","settingsKeyLabel","deletePositionKey","positionKeyLabel","sortable","buttonsHidden","toggleButton","toggleClass","toggleSpeed","onToggle","deleteButton","deleteClass","deleteSpeed","onDelete","editButton","editPlaceholder","editClass","editSpeed","onEdit","colorButton","fullscreenButton","fullscreenClass","fullscreenDiff","onFullscreen","customButton","customClass","customStart","alert","customEnd","buttonOrder","opacity","dragHandle","placeholderClass","indicator","indicatorTime","ajax","timestampPlaceholder","timestampFormat","refreshButton","refreshButtonClass","labelError","labelUpdated","labelRefresh","labelDelete","afterLoad","rtl","onChange","onSave","rootElement","widgetDataTableScope","createDataTable","updateLanguage","widgetDataItems","enableCustomFiltering","removeRowAt","rowIndex","trElement","addRow","customFilteringTransclude","tableData","destroy","breakpointDefinition","tablet","phone","responsiveHelper_dt_basic","table","dataTable","preDrawCallback","ResponsiveDatatablesHelper","rowCallback","nRow","createExpandIcon","drawCallback","oSettings","respond","searching","language","appConfig","dataTables","currentLang","autoWidth","DataTable","first","rows","draw","row","add","amMoment","tmhDynamicLocale","setLanguage","languageKey","use","set","changeLocale","changeLanguage","isSelected","editProfileUrl","editUrl","userIsAuthenticated","$filter","$state","menuInfos","currentState","$current","name","allStates","state","settings","parent","subMenuInfos","abstract","childrenStates","s","childState","stateName","resourceKey","titleResourceKey","iconClass","nav","getNavRoutes"],"mappings":"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","file":"../core.min.js","sourcesContent":["angular.module('inoApp')\r\n .config(['$httpProvider', configureAuthInterceptor])\r\n .factory('httpBuffer', ['$injector', httpBufferFactory])\r\n .factory('authInterceptor', ['$injector', '$rootScope', '$q', 'config', 'httpBuffer', 'userService', authInterceptorFactory]);\r\n\r\nfunction configureAuthInterceptor($httpProvider) {\r\n $httpProvider.interceptors.push('authInterceptor');\r\n}\r\n\r\nfunction authInterceptorFactory($injector, $rootScope, $q, config, httpBuffer, userService) {\r\n var isRefreshingTokens = false;\r\n\r\n var interceptor = {\r\n request: handleRequest,\r\n responseError: handleResponseError\r\n };\r\n\r\n return interceptor;\r\n\r\n function handleRequest(config) {\r\n // Append the bearer token to all calls if it's present.\r\n if (userService.currentUser.tokens.accessToken) {\r\n config.headers = config.headers || {};\r\n config.headers.Authorization = 'Bearer ' + userService.currentUser.tokens.accessToken;\r\n }\r\n\r\n return config;\r\n }\r\n\r\n function handleResponseError(rejection) {\r\n // If the error was a 401, we might just need to retry for a new token first.\r\n if (rejection.status === 401 && userService.currentUser.tokens && userService.currentUser.tokens.refreshToken) {\r\n\r\n // Defer until we can re-request a new token\r\n var deferred = $q.defer();\r\n\r\n // Add the current request to the buffer so we can retry it at a later time\r\n httpBuffer.append(rejection, deferred);\r\n\r\n if (!isRefreshingTokens) {\r\n isRefreshingTokens = true;\r\n refreshTokens();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n // Wasn't a 401 or we could not get a new token, just trigger the event, reject the response and move on.\r\n broadcastError(rejection);\r\n return $q.reject(rejection);\r\n }\r\n\r\n function refreshTokens() {\r\n var refreshTokensSuccessCallback = function (response) {\r\n if (response && response.data && response.data.accessToken && response.data.refreshToken) {\r\n // Set the tokens with whatever was returned as response.\r\n userService.currentUser.tokens.accessToken = response.data.accessToken;\r\n userService.currentUser.tokens.refreshToken = response.data.refreshToken;\r\n userService.persist();\r\n\r\n // Retry all previously failed requests.\r\n httpBuffer.retryAll();\r\n } else {\r\n // We don't have a token, clear the userService and reject all previous requests.\r\n userService.clear();\r\n httpBuffer.rejectAll();\r\n\r\n // After all is done, just broadcast a 401\r\n broadcastError({ status: 401 });\r\n }\r\n }\r\n var refreshTokensErrorCallback = function (response) {\r\n // Token retry failed, clear the userService and reject all previous requests.\r\n userService.clear();\r\n httpBuffer.rejectAll();\r\n\r\n // After all is done, just broadcast a 401\r\n broadcastError({ status: 401 });\r\n\r\n return;\r\n }\r\n\r\n // Can't inject $http directly as will cause a circular ref.\r\n var $http = $injector.get(\"$http\");\r\n\r\n // Call the refresh token endpoint to try and get some new tokens\r\n $http\r\n .post(config.servicesUrl.identity.refreshTokenUrl, { refreshToken: userService.currentUser.tokens.refreshToken })\r\n .then(refreshTokensSuccessCallback, refreshTokensErrorCallback)\r\n .finally(function () { isRefreshingTokens = false; });\r\n }\r\n\r\n function broadcastError(response) {\r\n $rootScope.$broadcast({\r\n 401: config.events.auth.notAuthenticated,\r\n 403: config.events.auth.notAuthorized,\r\n 419: config.events.auth.notAuthorized,\r\n 440: config.events.auth.notAuthorized\r\n }[response.status], response);\r\n }\r\n}\r\n\r\nfunction httpBufferFactory($injector) {\r\n // Holds all the requests, so they can be re-requested in future.\r\n var buffer = [];\r\n\r\n // Service initialized later because of circular dependency problem.\r\n var $http;\r\n\r\n var service = {\r\n append: append,\r\n rejectAll: rejectAll,\r\n retryAll: retryAll\r\n };\r\n\r\n return service;\r\n\r\n // Appends HTTP request configuration object with deferred response attached to buffer.\r\n function append(rejection, deferred) {\r\n buffer.push({\r\n rejection: rejection,\r\n deferred: deferred\r\n });\r\n }\r\n\r\n // Abandon or reject (if reason provided) all the buffered requests.\r\n function rejectAll() {\r\n for (var i = 0; i < buffer.length; ++i) {\r\n var item = buffer[i];\r\n item.deferred.reject(item.rejection);\r\n }\r\n\r\n buffer = [];\r\n }\r\n\r\n // Retries all the buffered requests clears the buffer.\r\n function retryAll() {\r\n for (var i = 0; i < buffer.length; ++i) {\r\n var item = buffer[i];\r\n retryHttpRequest(item.rejection.config, item.deferred);\r\n }\r\n buffer = [];\r\n }\r\n\r\n function retryHttpRequest(config, deferred) {\r\n function successCallback(response) {\r\n deferred.resolve(response);\r\n }\r\n function errorCallback(response) {\r\n deferred.reject(response);\r\n }\r\n $http = $http || $injector.get('$http');\r\n $http(config).then(successCallback, errorCallback);\r\n }\r\n}","(function () {\r\n 'use strict';\r\n\r\n // Register all Framework modules here.\r\n angular.module('inoApp.directives', []);\r\n angular.module('inoApp.directives.layout', []);\r\n\r\n angular.module('inoApp', [\r\n // Angular modules \r\n 'ngAnimate', // animations\r\n 'ui.router', // routing and navigation\r\n 'ngSanitize', // sanitizes html bindings (ex: sidebar.js)\r\n\r\n // SmartAdmin\r\n 'sa.directives',\r\n \t \r\n // Custom modules \r\n 'inoApp.templates',\r\n 'inoApp.directives',\r\n 'inoApp.directives.layout',\r\n 'common', // common functions, logger\r\n 'common.bootstrap', // bootstrap dialog wrapper functions\r\n\r\n // 3rd Party Modules\r\n 'ui.bootstrap', // ui-bootstrap (ex: carousel, pagination, dialog)\r\n 'pascalprecht.translate',\r\n 'angularMoment',\r\n 'tmh.dynamicLocale',\r\n 'cgBusy'\r\n ]);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('inoApp').run(['$rootScope', '$translate', appRun]);\r\n\r\n function appRun($rootScope, $translate) {\r\n $rootScope.$on('$translatePartialLoaderStructureChanged', function () {\r\n\t\t\t$translate.refresh();\r\n\t\t});\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n\r\n // Configure Toastr\r\n toastr.options.timeOut = 4000;\r\n toastr.options.positionClass = 'toast-bottom-right';\r\n\r\n var events = {\r\n appWorkStarted: 'app.workStarted',\r\n appWorkFinished: 'app.workFinished',\r\n auth: {\r\n logoutSuccess: 'auth-logout-success',\r\n notAuthenticated: 'auth-not-authenticated',\r\n notAuthorized: 'auth-not-authorized'\r\n },\r\n controllerActivateSuccess: 'controller.activateSuccess',\r\n languageChanged: 'languageChanged'\r\n };\r\n\r\n var config = {\r\n events: events,\r\n appRoot: angular.copy(window.appRootPath),\r\n clientAppSrcPath: angular.copy(window.clientAppSrcPath),\r\n appVersion: angular.copy(window.inoAppConfig.version),\r\n appLanguage: angular.copy(window.inoAppConfig.uiLanguage),\r\n servicesUrl: angular.copy(window.servicesUrl)\r\n };\r\n\r\n app.value('config', config);\r\n\r\n app.config(['commonConfigProvider', function (cfg) {\r\n cfg.config.appWorkStartedEvent = config.events.appWorkStarted;\r\n cfg.config.appWorkFinishedEvent = config.events.appWorkFinished;\r\n cfg.config.appRoot = config.appRoot;\r\n cfg.config.clientAppSrcPath = config.clientAppSrcPath;\r\n }]);\r\n \r\n app.config(['$logProvider', function ($logProvider) {\r\n // turn debugging off/on (no info or warn)\r\n if ($logProvider.debugEnabled) {\r\n $logProvider.debugEnabled(true);\r\n }\r\n }]);\r\n\r\n app.config(['tmhDynamicLocaleProvider', function (dynamicLocaleProvider) {\r\n dynamicLocaleProvider.localeLocationPattern(config.clientAppSrcPath + 'InovestorFramework/Core/i18n/angular-locale_{{locale}}.js');\r\n //dynamicLocale.set('en-CA');\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n var app = angular.module('inoApp');\r\n app.config(['$translateProvider', '$translatePartialLoaderProvider', 'commonConfigProvider', function ($translateProvider, $translatePartialLoaderProvider, commonConfigProvider) {\r\n $translateProvider.useSanitizeValueStrategy('escaped');\r\n\r\n $translatePartialLoaderProvider.addPart('InovestorFramework/Core/app/resources');\r\n $translateProvider.useLoader('$translatePartialLoader', {\r\n urlTemplate: commonConfigProvider.config.clientAppSrcPath + '{part}/locale-{lang}.json'\r\n });\r\n $translateProvider.preferredLanguage('en');\r\n }]);\r\n})();","// Include in index.html so that app level exceptions are handled.\r\n// Exclude from testRunner.html which should run exactly what it wants to run\r\n(function () {\r\n 'use strict';\r\n \r\n var app = angular.module('inoApp');\r\n\r\n // Configure by setting an optional string value for appErrorPrefix.\r\n // Accessible via config.appErrorPrefix (via config value).\r\n\r\n app.config(['$provide', function ($provide) {\r\n $provide.decorator('$exceptionHandler',\r\n ['$delegate', 'config', 'logger', extendExceptionHandler]);\r\n }]);\r\n \r\n // Extend the $exceptionHandler service to also display a toast.\r\n function extendExceptionHandler($delegate, config, logger) {\r\n var appErrorPrefix = config.appErrorPrefix;\r\n var logError = logger.getLogFn('inoApp', 'error');\r\n return function (exception, cause) {\r\n $delegate(exception, cause);\r\n if (appErrorPrefix && exception.message.indexOf(appErrorPrefix) === 0) { return; }\r\n\r\n var errorData = { exception: exception, cause: cause };\r\n var msg = appErrorPrefix + exception.message;\r\n logError(msg, errorData, true);\r\n };\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n // Define the common module \r\n // Contains services:\r\n // - common\r\n // - logger\r\n var commonModule = angular.module('common', []);\r\n\r\n // Must configure the common service and set its \r\n // events via the commonConfigProvider\r\n commonModule.provider('commonConfig', function () {\r\n this.config = {\r\n // These are the properties we need to set\r\n //controllerActivateSuccessEvent: '',\r\n };\r\n\r\n this.$get = function () {\r\n return {\r\n config: this.config\r\n };\r\n };\r\n });\r\n\r\n commonModule.factory('common',\r\n ['$q', '$rootScope', '$timeout', 'commonConfig', 'logger', common]);\r\n\r\n function common($q, $rootScope, $timeout, commonConfig, logger) {\r\n var throttles = {};\r\n\r\n var service = {\r\n handleBusyState: handleBusyState,\r\n logger: logger // for accessibility\r\n };\r\n\r\n return service;\r\n\r\n function handleBusyState(promises, taskId, textResourceKey) {\r\n $rootScope.$broadcast(commonConfig.config.appWorkStartedEvent, { taskId: taskId, textResourceKey: textResourceKey });\r\n return $q\r\n .all(promises)\r\n .finally(function () {\r\n $rootScope.$broadcast(commonConfig.config.appWorkFinishedEvent, { taskId: taskId, textResourceKey: textResourceKey });\r\n });\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n \r\n angular.module('common').factory('logger', ['$log', logger]);\r\n\r\n function logger($log) {\r\n var service = {\r\n getLogFn: getLogFn,\r\n log: log,\r\n logError: logError,\r\n logSuccess: logSuccess,\r\n logWarning: logWarning\r\n };\r\n\r\n return service;\r\n\r\n function getLogFn(moduleId, fnName) {\r\n fnName = fnName || 'log';\r\n switch (fnName.toLowerCase()) { // convert aliases\r\n case 'success':\r\n fnName = 'logSuccess'; break;\r\n case 'error':\r\n fnName = 'logError'; break;\r\n case 'warn':\r\n fnName = 'logWarning'; break;\r\n case 'warning':\r\n fnName = 'logWarning'; break;\r\n }\r\n\r\n var logFn = service[fnName] || service.log;\r\n return function (msg, data, showToast) {\r\n logFn(msg, data, moduleId, (showToast === undefined) ? true : showToast);\r\n };\r\n }\r\n\r\n function log(message, data, source, showToast) {\r\n logIt(message, data, source, showToast, 'info');\r\n }\r\n\r\n function logWarning(message, data, source, showToast) {\r\n logIt(message, data, source, showToast, 'warning');\r\n }\r\n\r\n function logSuccess(message, data, source, showToast) {\r\n logIt(message, data, source, showToast, 'success');\r\n }\r\n\r\n function logError(message, data, source, showToast) {\r\n logIt(message, data, source, showToast, 'error');\r\n }\r\n\r\n function logIt(message, data, source, showToast, toastType) {\r\n var write = (toastType === 'error') ? $log.error : $log.log;\r\n source = source ? '[' + source + '] ' : '';\r\n write(source, message, data);\r\n if (showToast) {\r\n if (toastType === 'error') {\r\n toastr.error(message);\r\n } else if (toastType === 'warning') {\r\n toastr.warning(message);\r\n } else if (toastType === 'success') {\r\n toastr.success(message);\r\n } else {\r\n toastr.info(message);\r\n }\r\n }\r\n }\r\n }\r\n})();","var app = angular.module('inoApp');\r\n\r\napp.factory('contentVersionningInterceptor', ['$templateCache', 'config', function ($templateCache, config) {\r\n var interceptor = {\r\n request: function (request) {\r\n // Just add the version id to the supported URL (meaning not from the template cache, the API, IdentityServer URLs, etc.)\r\n if (!$templateCache.get(request.url) && isSupportedUrl(request.url)) {\r\n // Append the app version as a querystring parameters to all other calls.\r\n // This is to deal with potential browser cache issues between versions of the application.\r\n request.url = buildUrl(request.url, 'vid', encodeURIComponent(config.appVersion));\r\n }\r\n\r\n return request;\r\n }\r\n };\r\n\r\n return interceptor;\r\n\r\n function isSupportedUrl(url) {\r\n var isSupported = true;\r\n if (config.servicesUrl && config.servicesUrl.api && config.servicesUrl.identity) {\r\n if (isUrlSameAsApiUrl(config.servicesUrl.identity.userInfoEndpoint, url))\r\n isSupported = false;\r\n else if (isUrlSameAsApiUrl(config.servicesUrl.identity.refreshTokenUrl, url))\r\n isSupported = false;\r\n else if (config.servicesUrl.api.apiBasePaths) {\r\n for (var pathIndex in config.servicesUrl.api.apiBasePaths) {\r\n if (isUrlSameAsApiUrl(config.servicesUrl.api.apiBasePaths[pathIndex], url)) {\r\n isSupported = false;\r\n break;\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n return isSupported;\r\n }\r\n\r\n function isUrlSameAsApiUrl(apiUrl, url){\r\n if (apiUrl == null || typeof (apiUrl) === \"undefined\" || (apiUrl !== url && url.indexOf(apiUrl) !== 0))\r\n return false;\r\n return true;\r\n }\r\n\r\n\r\n function buildUrl(baseUrl, key, value) {\r\n var separator = (baseUrl.indexOf('?') > -1) ? '&' : '?';\r\n return baseUrl + separator + key + '=' + value;\r\n }\r\n}]);\r\n\r\napp.config(['$httpProvider', function ($httpProvider) {\r\n $httpProvider.interceptors.push('contentVersionningInterceptor');\r\n}]);","var app = angular.module('inoApp')\r\n\r\napp.factory('headersInjectorInterceptor', function () {\r\n var headerInjector = {\r\n request: function (config) {\r\n config.headers['X-Requested-With'] = \"XMLHttpRequest\";\r\n return config;\r\n }\r\n };\r\n\r\n return headerInjector;\r\n});\r\n\r\napp.config(['$httpProvider', function ($httpProvider) {\r\n $httpProvider.interceptors.push('headersInjectorInterceptor');\r\n}]);","angular.module('inoApp')\r\n .factory('serverExceptionInterceptor', ['$q', '$translate', function ($q, $translate) {\r\n var serverExceptionInterceptor = {\r\n responseError: handleResponseError\r\n };\r\n\r\n return serverExceptionInterceptor;\r\n\r\n function handleResponseError(response) {\r\n // In some cases (notably 403 from Web API), data will be an empty string and we don't want that.\r\n if (!response.data || typeof response.data === 'string')\r\n response.data = {};\r\n response.data.LocalizedErrorMessage = '';\r\n\r\n var isHandled = false;\r\n\r\n // 400 Bad Request\r\n if (response.status === 400 && response.data && response.data.modelState) {\r\n // A Bad Request error that is handled by the Web API controller.\r\n // We should have enough information to get a meaningful error message.\r\n\r\n var messagesSeparationElement = '
';\r\n\r\n //errorMessages = getDistinctElement(getErrorMessagesFromModelState(response.data.ModelState));\r\n errorMessages = getErrorMessagesFromModelState(response.data.modelState);\r\n\r\n // Add all the errors to the LocalizedErrorMessage separated by the separation element.\r\n for (var i = 0; i < errorMessages.length; i++) {\r\n response.data.LocalizedErrorMessage += errorMessages[i];\r\n if (i + 1 !== errorMessages.length)\r\n response.data.LocalizedErrorMessage += messagesSeparationElement;\r\n }\r\n\r\n isHandled = true;\r\n }\r\n\r\n // 401 Unauthorized\r\n if (response.status === 401) {\r\n response.data.LocalizedErrorMessage = $translate.instant('error.NotAuthenticated');\r\n isHandled = true;\r\n }\r\n\r\n // 403 Forbidden\r\n if (response.status === 403) {\r\n response.data.LocalizedErrorMessage = $translate.instant('error.Unauthorized');\r\n isHandled = true;\r\n }\r\n\r\n // If the error wasn't handled, just add the default error text.\r\n if (!isHandled)\r\n response.data.LocalizedErrorMessage = $translate.instant('error.DefaultErrorMessage');\r\n\r\n return $q.reject(response);\r\n }\r\n\r\n function getErrorMessagesFromModelState(modelState) {\r\n var errorMessages = [];\r\n var defaultErrorText = $translate.instant('error.DefaultErrorMessage');\r\n\r\n // Loop in all property as we can have multiple error messages coming from the server.\r\n for (var property in modelState) {\r\n\r\n // To avoid logging inherited properties\r\n if (modelState.hasOwnProperty(property)) {\r\n\r\n // Each property is an array of errors so, loop.\r\n for (var i = 0; i < modelState[property].length; i++) {\r\n\r\n var errorTextKey = 'error.' + modelState[property][i];\r\n var errorText = $translate.instant(errorTextKey);\r\n\r\n // If the error key is the same as the text, it means that we don't have any relevant error text to display\r\n // so we just add the default error text to the response.\r\n if (errorTextKey === errorText)\r\n errorMessages.push(defaultErrorText);\r\n else\r\n errorMessages.push(errorText);\r\n }\r\n }\r\n }\r\n\r\n return errorMessages;\r\n }\r\n\r\n //function getDistinctElement(a) {\r\n // return a.reduce(function (p, c) {\r\n // if (p.indexOf(c) < 0) p.push(c);\r\n // return p;\r\n // }, []);\r\n //}\r\n\r\n }])\r\n .config(['$httpProvider', function ($httpProvider) {\r\n $httpProvider.interceptors.push('serverExceptionInterceptor');\r\n }]);","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n\r\n app.factory('authService', ['$q', '$rootScope', '$window', 'config', 'storageService', 'userService', authServiceFactory]);\r\n\r\n function authServiceFactory($q, $rootScope, $window, config, storageService, userService) {\r\n var service = {\r\n login: login,\r\n logout: logout\r\n };\r\n\r\n $rootScope.$on(config.events.auth.notAuthenticated, clearSession);\r\n\r\n return service;\r\n\r\n function login() {\r\n // Since we're redirecting, trigger a busy event in case the other app is taking its time to respond.\r\n $rootScope.$broadcast(config.events.appWorkStarted);\r\n $window.location = config.servicesUrl.identity.signInUrl;\r\n }\r\n\r\n function logout() {\r\n var idToken = '';\r\n if (userService.currentUser.tokens)\r\n idToken = userService.currentUser.tokens.identityToken;\r\n\r\n clearSession().then(function () {\r\n $rootScope.$broadcast(config.events.auth.logoutSuccess);\r\n // Since we're redirecting, trigger a busy event in case the other app is taking its time to respond.\r\n $rootScope.$broadcast(config.events.appWorkStarted);\r\n $window.location = config.servicesUrl.identity.signOutUrl + '?idToken=' + encodeURIComponent(idToken);\r\n });\r\n }\r\n\r\n function clearSession() {\r\n return $q.all([storageService.clear()]);\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var bootstrapModule = angular.module('common.bootstrap', ['ui.bootstrap']);\r\n\r\n bootstrapModule.factory('bootstrap.dialog', ['$modal', '$templateCache', modalDialog]);\r\n\r\n function modalDialog($modal, $templateCache) {\r\n var service = {\r\n deleteDialog: deleteDialog,\r\n confirmationDialog: confirmationDialog\r\n };\r\n\r\n $templateCache.put('modalDialog.tpl.html', \r\n '
' +\r\n '
' +\r\n ' ' +\r\n '

{{title}}

' +\r\n '
' +\r\n '
' +\r\n '

{{message}}

' +\r\n '
' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
');\r\n\r\n return service;\r\n\r\n function deleteDialog(itemName) {\r\n var title = 'Confirm Delete';\r\n itemName = itemName || 'item';\r\n var msg = 'Delete ' + itemName + '?';\r\n\r\n return confirmationDialog(title, msg);\r\n }\r\n\r\n function confirmationDialog(title, msg, okText, cancelText) {\r\n\r\n var modalOptions = {\r\n templateUrl: 'modalDialog.tpl.html',\r\n controller: ModalInstance,\r\n keyboard: true,\r\n resolve: {\r\n options: function () {\r\n return {\r\n title: title,\r\n message: msg,\r\n okText: okText,\r\n cancelText: cancelText\r\n };\r\n }\r\n }\r\n };\r\n\r\n return $modal.open(modalOptions).result; \r\n }\r\n }\r\n\r\n var ModalInstance = ['$scope', '$modalInstance', 'options',\r\n function ($scope, $modalInstance, options) {\r\n $scope.title = options.title || 'Title';\r\n $scope.message = options.message || '';\r\n $scope.okText = options.okText || 'OK';\r\n $scope.cancelText = options.cancelText || 'Cancel';\r\n $scope.ok = function () { $modalInstance.close('ok'); };\r\n $scope.cancel = function () { $modalInstance.dismiss('cancel'); };\r\n }];\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var serviceId = 'storageService';\r\n angular.module('inoApp').factory(serviceId, ['$window', storageService]);\r\n\r\n // Base storage/session service. It should probably never be used directly by controllers. If you ever do it, carefully consider another way.\r\n // Currently it only wraps html5 sessionStorage object.\r\n\r\n function storageService($window) {\r\n var sessionStorage = $window.sessionStorage;\r\n\r\n var service = {\r\n clear: clear,\r\n getItem: getItem,\r\n removeItem: removeItem,\r\n setItem: setItem\r\n };\r\n\r\n return service;\r\n\r\n function clear() {\r\n sessionStorage.clear();\r\n }\r\n\r\n function getItem(key) {\r\n var dateTimeReviver = function (key, value) {\r\n if (typeof value === 'string') {\r\n var regexValues = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)(Z|([+\\-])(\\d{2}):(\\d{2}))$/.exec(value);\r\n if (regexValues) {\r\n // JSON.stringify converts dates to UTC so parse them back\r\n return new Date(Date.UTC(+regexValues[1], +regexValues[2] - 1, +regexValues[3], +regexValues[4], +regexValues[5], +regexValues[6]));\r\n }\r\n }\r\n return value;\r\n };\r\n var value = sessionStorage.getItem(JSON.stringify(key));\r\n\r\n return JSON.parse(value, dateTimeReviver);\r\n }\r\n\r\n function removeItem(key) {\r\n sessionStorage.removeItem(JSON.stringify(key));\r\n }\r\n\r\n function setItem(key, value) {\r\n sessionStorage.setItem(JSON.stringify(key), JSON.stringify(value));\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n\r\n app.factory('userInfoEndpointService', ['$http', 'config', userInfoEndpointServiceFactory]);\r\n\r\n function userInfoEndpointServiceFactory($http, config) {\r\n\r\n var service = {\r\n getProfile: getProfile\r\n };\r\n\r\n return service;\r\n\r\n function getProfile() {\r\n // Get information about the user from the UserInfoEndpoint of our identity server.\r\n return $http.get(config.servicesUrl.identity.userInfoEndpoint).then(\r\n function (response) {\r\n return response.data;\r\n },\r\n function (response) {\r\n return {};\r\n });\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n\r\n // Do not add any dependencies to this service, leave it as lightweight as possible.\r\n // If we need to add, let's say, profile information on startup, do it in the authService.activate method to keep dependencies to a minimum.\r\n\r\n app.factory('userService', ['storageService', userServiceFactory]);\r\n\r\n function userServiceFactory(storageService) {\r\n var sessionCurrentUserKey = 'sessionCurrentUser';\r\n\r\n var service = {\r\n clear: clear,\r\n currentUser: {\r\n uniqueId: '',\r\n profile: {\r\n email: '',\r\n firstName: '',\r\n lastName: ''\r\n },\r\n tokens: {\r\n accessToken: '',\r\n identityToken: '',\r\n refreshToken: ''\r\n }\r\n },\r\n isAuthenticated: isAuthenticated,\r\n persist: persist,\r\n setProfile: setProfile,\r\n setTokens: setTokens\r\n };\r\n\r\n activate();\r\n\r\n return service;\r\n\r\n function activate() {\r\n resetCurrentUser();\r\n\r\n // Get the stored bearer token if it exists\r\n var sessionUser = storageService.getItem(sessionCurrentUserKey);\r\n if (sessionUser) {\r\n setProfile(sessionUser.uniqueId, sessionUser.profile.email, sessionUser.profile.firstName, sessionUser.profile.lastName);\r\n setTokens(sessionUser.tokens.accessToken, sessionUser.tokens.identityToken, sessionUser.tokens.refreshToken);\r\n }\r\n }\r\n\r\n function clear() {\r\n resetCurrentUser();\r\n storageService.removeItem(sessionCurrentUserKey);\r\n }\r\n\r\n function isAuthenticated() {\r\n return !!service.currentUser.uniqueId;\r\n }\r\n\r\n function persist() {\r\n storageService.setItem(sessionCurrentUserKey, service.currentUser);\r\n }\r\n\r\n function resetCurrentUser() {\r\n service.currentUser.uniqueId = '';\r\n service.currentUser.profile.email = '';\r\n service.currentUser.profile.firstName = '';\r\n service.currentUser.profile.lastName = '';\r\n service.currentUser.tokens.accessToken = '';\r\n service.currentUser.tokens.identityToken = '';\r\n service.currentUser.tokens.refreshToken = '';\r\n }\r\n\r\n function setProfile(uniqueId, email, firstName, lastName) {\r\n service.currentUser.uniqueId = uniqueId;\r\n service.currentUser.profile.email = email;\r\n service.currentUser.profile.firstName = firstName;\r\n service.currentUser.profile.lastName = lastName;\r\n }\r\n\r\n function setTokens(accessToken, identityToken, refreshToken) {\r\n service.currentUser.tokens.accessToken = accessToken;\r\n service.currentUser.tokens.identityToken = identityToken;\r\n service.currentUser.tokens.refreshToken = refreshToken;\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n\r\n app.filter('month', function () {\r\n return function (val) {\r\n return moment().month(val).format('MMMM')\r\n };\r\n });\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n\r\n app.filter('utc', function () {\r\n return function (val) {\r\n var date = new Date(val);\r\n return new Date(date.getUTCFullYear(),\r\n date.getUTCMonth(),\r\n date.getUTCDate(),\r\n date.getUTCHours(),\r\n date.getUTCMinutes(),\r\n date.getUTCSeconds());\r\n };\r\n\r\n });\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n\r\n app.directive('authNotAuthenticatedDialog', ['$rootScope', 'config', function ($rootScope, config) {\r\n var directive = {\r\n restrict: 'A',\r\n templateUrl: 'templates/core/layout/authNotAuthenticatedDialog.html',\r\n link: link\r\n };\r\n return directive;\r\n\r\n function link(scope) {\r\n var showDialog = function () {\r\n scope.toggleAuthenticationDialog(true);\r\n };\r\n\r\n scope.toggleAuthenticationDialog(false);\r\n $rootScope.$on(config.events.auth.notAuthenticated, showDialog);\r\n }\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n app.directive('authNotAuthorizedDialog', ['$rootScope', 'config', function ($rootScope, config) {\r\n var directive = {\r\n restrict: 'A',\r\n templateUrl: 'templates/core/layout/authNotAuthorizedDialog.html',\r\n link: link\r\n };\r\n return directive;\r\n\r\n function link(scope) {\r\n var showDialog = function () {\r\n scope.toggleAuthorizationDialog(true);\r\n };\r\n\r\n scope.toggleAuthorizationDialog(false);\r\n $rootScope.$on(config.events.auth.notAuthorized, showDialog);\r\n }\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var controllerId = 'shellController';\r\n var module = angular.module('inoApp.directives.layout');\r\n\r\n module.directive('layoutShell', [function () {\r\n var directive = {\r\n restrict: 'E',\r\n replace: true,\r\n controller: controllerId,\r\n controllerAs: 'shellVm',\r\n templateUrl: 'templates/core/layout/shell.html'\r\n };\r\n\r\n return directive;\r\n }]);\r\n \r\n module.controller(controllerId, ['$q', '$rootScope', '$scope', 'common', 'config', 'userService', shellController]);\r\n\r\n function shellController($q, $rootScope, $scope, common, config, userService) {\r\n var vm = this;\r\n var amountBusyPromisesToResolve = 0;\r\n var deferredBusy;\r\n\r\n vm.appRoot = config.clientAppSrcPath;\r\n vm.busyIndicatorConfig = {\r\n promise: null,\r\n templateUrl: 'templates/core/layout/loadingIndicator.html',\r\n textResourceKey: ''\r\n };\r\n vm.setIsBusy = setIsBusy;\r\n vm.timeoutSignInUrl = config.servicesUrl.identity.signInUrl;\r\n vm.userProfile = userService.currentUser.profile;\r\n\r\n activate();\r\n\r\n function activate() {\r\n common.handleBusyState([], controllerId);\r\n }\r\n\r\n $scope.toggleAuthorizationDialog = function (visible) {\r\n $scope.authorizationDialogVisible = visible;\r\n $('#authorization-dialog').modal({\r\n keyboard: false,\r\n show: visible,\r\n backdrop: false\r\n });\r\n };\r\n $scope.isAuthorizationDialogVisible = function () {\r\n return $scope.authorizationDialogVisible;\r\n }\r\n\r\n $scope.toggleAuthenticationDialog = function (visible) {\r\n $scope.authenticationDialogVisible = visible;\r\n $('#authentication-dialog').modal({\r\n keyboard: false,\r\n show: visible,\r\n backdrop: 'static'\r\n });\r\n };\r\n\r\n function setIsBusy(isBusy, textResourceKey) {\r\n if (isBusy) {\r\n // If we already had a promise and we have other calls to is busy do nothing.\r\n if (deferredBusy && typeof deferredBusy.resolve === 'function' && amountBusyPromisesToResolve > 0)\r\n return;\r\n\r\n deferredBusy = $q.defer();\r\n vm.busyIndicatorConfig.textResourceKey = textResourceKey;\r\n vm.busyIndicatorConfig.promise = deferredBusy.promise;\r\n } else {\r\n if (deferredBusy && amountBusyPromisesToResolve === 0) {\r\n vm.busyIndicatorConfig.textResourceKey = '';\r\n deferredBusy.resolve();\r\n }\r\n }\r\n }\r\n\r\n $rootScope.$on(config.events.appWorkStarted, function (eventArgs, data) {\r\n var data = data || {};\r\n vm.setIsBusy(true, data.textResourceKey);\r\n amountBusyPromisesToResolve++;\r\n\r\n logAppWork('appWorkStarted', data.taskId);\r\n });\r\n\r\n $rootScope.$on(config.events.appWorkFinished, function (eventArgs, data) {\r\n if (amountBusyPromisesToResolve > 0)\r\n amountBusyPromisesToResolve--;\r\n\r\n vm.setIsBusy(false);\r\n\r\n logAppWork('appWorkFinished', data.taskId);\r\n });\r\n\r\n function logAppWork(event, taskId) {\r\n common.logger.log(event + ' from ' + taskId + '. Remaining promises: ' + amountBusyPromisesToResolve);\r\n }\r\n };\r\n})();","angular.module(\"inoApp.templates\",\r\n [\r\n \"templates/core/layout/shell.html\",\r\n \"templates/core/layout/header.html\",\r\n \"templates/core/layout/header_search.html\",\r\n \"templates/core/layout/ribbon.html\",\r\n \"templates/core/layout/navMenu.html\",\r\n \"templates/core/layout/tabstrip.html\",\r\n \"templates/core/layout/footer.html\",\r\n \"templates/core/layout/loadingIndicator.html\",\r\n \"templates/core/layout/authNotAuthorizedDialog.html\",\r\n \"templates/core/layout/authNotAuthenticatedDialog.html\",\r\n \"templates/core/layout/widgetControl.html\",\r\n \"templates/core/layout/widgetDataTable.html\"\r\n ]);\r\n\r\nangular.module(\"templates/core/layout/shell.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/shell.html\",\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/header.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/header.html\",\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \" \\n\" +\r\n \"
\\n\" +\r\n \"
\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/header_search.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/header_search.html\",\r\n \"
  • \\n\" +\r\n \"
  • \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/ribbon.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/ribbon.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \"\\n\" +\r\n \"\\n\" +\r\n \" \\n\" +\r\n \"\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/navMenu.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/navMenu.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \" {{ 'config.appName' | translate }}\\n\" +\r\n \"
    \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/footer.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/footer.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \" Inovestor\\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/authNotAuthenticatedDialog.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/authNotAuthenticatedDialog.html\",\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"

    \" +\r\n \" \" +\r\n \"

    \" +\r\n \"

    \" +\r\n \" \" +\r\n \" \" +\r\n \" \" +\r\n \"

    \" +\r\n \"

    \" +\r\n \"
    \" +\r\n \"

    \" +\r\n \" \" +\r\n \"

    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/authNotAuthorizedDialog.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/authNotAuthorizedDialog.html\",\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \" \" +\r\n \"

    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \" \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/loadingIndicator.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/loadingIndicator.html\",\r\n \"
    \" +\r\n \"
    \" +\r\n \" \" +\r\n \"
    \" +\r\n \"

    {{ busyConfig.textResourceKey | translate }}

    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"templates/core/layout/tabstrip.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/tabstrip.html\",\r\n \"
    \" +\r\n \" \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"
    \" +\r\n \"\");\r\n}]);\r\n\r\n\r\nangular.module(\"templates/core/layout/widgetControl.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/widgetControl.html\",\r\n \"
    \" +\r\n \"\t
    \" +\r\n \"\t\t
    \" +\r\n \"\t\t\t
    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t\t\t

    {{ widgetTitle }}

    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t\t\t
    \" +\r\n \"
    \" +\r\n \"\t\t\t\t\t
    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t
    \" +\r\n \"\t\t
    \" +\r\n \"\t
    \" +\r\n \"
    \" +\r\n \"\");\r\n}]);\r\n\r\n\r\nangular.module(\"templates/core/layout/widgetDataTable.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"templates/core/layout/widgetDataTable.html\",\r\n \"
    \" +\r\n \"\t
    \" +\r\n \"\t\t
    \" +\r\n \"\t\t\t
    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t\t\t

    {{widgetTitle}}

    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t\t\t
    \" +\r\n \"
    \" +\r\n \"\t\t\t\t\t
    \" +\r\n \"\t\t\t\t
    \" +\r\n \"\t\t\t
    \" +\r\n \"\t\t
    \" +\r\n \"\t
    \" +\r\n \"
    \" +\r\n \"\");\r\n}]);","(function () {\r\n 'use strict';\r\n\r\n angular.module('inoApp').directive('loadingIndicator', ['$rootScope', function ($rootScope) {\r\n var directive = {\r\n restrict: \"E\",\r\n replace: false,\r\n scope: {\r\n busyConfig: '=',\r\n },\r\n link: link,\r\n template: '
    '\r\n };\r\n\r\n return directive;\r\n\r\n function link(scope, element) {\r\n /* DOM manipulation */\r\n var body = document.body;\r\n element.detach();\r\n angular.element(body).append(element);\r\n }\r\n }]);\r\n\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n app.directive('progressIndicator', ['$timeout', '$interval', function ($timeout, $interval) {\r\n return {\r\n restrict: 'E',\r\n replace: true,\r\n transclude: true,\r\n template: '
    ',\r\n controller: ['$scope', function ($scope) {\r\n var items = $scope.items = [];\r\n var index = $scope.index = 0;\r\n var isIncrementing = $scope.isIncrementing = true;\r\n var interval = $scope.interval = null;\r\n var isStopped = false; // once stopped, it cannot restart\r\n\r\n this.start = function () {\r\n if (interval !== null)\r\n stop();\r\n if (isStopped)\r\n return;\r\n\r\n interval = $interval(function () {\r\n items[index].isCurrent = false;\r\n if (isIncrementing && index + 1 == items.length)\r\n isIncrementing = false;\r\n else if (!isIncrementing && index - 1 == -1)\r\n isIncrementing = true;\r\n index = isIncrementing ? index + 1 : index - 1;\r\n items[index].isCurrent = true;\r\n }, 300);\r\n }\r\n this.addItem = function (item) {\r\n $scope.items.push(item);\r\n }\r\n this.stop = function () {\r\n $interval.cancel(interval);\r\n isStopped = true;\r\n }\r\n }],\r\n link: { pre: link },\r\n scope: {}\r\n };\r\n function link(scope, element, attrs, controller) {\r\n var itemAmount = attrs.items == null ? 5 : attrs.items;\r\n for (var iCnt = 0; iCnt < itemAmount; iCnt++)\r\n controller.addItem({\r\n isCurrent: (iCnt == 0)\r\n });\r\n // When element destoyed, call stop() to end interval\r\n element.on('$destroy', function () {\r\n controller.stop();\r\n });\r\n // Call start() after render\r\n $timeout(function () {\r\n controller.start();\r\n });\r\n }\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('inoApp').directive('selectOnClick', ['$window', function ($window) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attrs) {\r\n element.on('click', function () {\r\n if (!$window.getSelection().toString()) {\r\n // Required for mobile Safari\r\n this.setSelectionRange(0, this.value.length)\r\n }\r\n });\r\n }\r\n };\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n app.directive('sparkline', [function () {\r\n return {\r\n restrict: 'A',\r\n link: link,\r\n scope: {}\r\n };\r\n\r\n function link(scope, element, attrs) {\r\n var $this = angular.element(element);\r\n var sparklineType = $this.data('sparkline-type') || 'bar';\r\n\r\n // BAR CHART\r\n if (sparklineType == 'bar') {\r\n\r\n var barColor = $this.data('sparkline-bar-color') || $this.css('color') || '#0000f0';\r\n var sparklineHeight = $this.data('sparkline-height') || '26px';\r\n var sparklineBarWidth = $this.data('sparkline-barwidth') || 5;\r\n var sparklineBarSpacing = $this.data('sparkline-barspacing') || 2;\r\n var sparklineNegBarColor = $this.data('sparkline-negbar-color') || '#A90329';\r\n var sparklineStackedColor = $this.data('sparkline-barstacked-color') || [\"#A90329\", \"#0099c6\", \"#98AA56\", \"#da532c\", \"#4490B1\", \"#6E9461\", \"#990099\", \"#B4CAD3\"];\r\n\r\n $this.sparkline('html', {\r\n barColor: barColor,\r\n type: sparklineType,\r\n height: sparklineHeight,\r\n barWidth: sparklineBarWidth,\r\n barSpacing: sparklineBarSpacing,\r\n stackedBarColor: sparklineStackedColor,\r\n negBarColor: sparklineNegBarColor,\r\n zeroAxis: 'false',\r\n disableTooltips: true,\r\n disableInteraction: true\r\n });\r\n\r\n }\r\n }\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n function tabstripController($scope, $timeout) {\r\n var vm = this;\r\n\r\n // This array keeps track of the tabstrips\r\n vm.tabs = [];\r\n vm.tabRoot = null;\r\n vm.resetTabStrip = resetTabStrip;\r\n vm.resetTrigger = null;\r\n vm.addTab = addTab;\r\n vm.removeGroup = removeGroup;\r\n vm.activate = activate;\r\n\r\n activate();\r\n function activate() {\r\n $timeout(function () {\r\n vm.tabs.forEach(function (tabScope) {\r\n angular.element(vm.tabRoot).find(\"#\" + tabScope.tabId).append(tabScope.tabContent);\r\n angular.element(vm.tabRoot).find(\".tabheader[href='#\" + tabScope.tabId + \"']\").append(tabScope.tabHeader);\r\n });\r\n if (vm.resetTrigger !== null)\r\n $scope.$watch('resetTrigger', function () {\r\n vm.resetTabStrip();\r\n });\r\n });\r\n }\r\n function resetTabStrip() {\r\n // allow time for rendering\r\n $timeout(function () {\r\n for (var iCnt = 0; iCnt < vm.tabs.length; iCnt++) {\r\n if (!vm.tabs[iCnt].isHidden) {\r\n angular.element(vm.tabRoot).find(\".tabheader[href='#\" + vm.tabs[iCnt].tabId + \"']\").click();\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n function addTab(tabScope) {\r\n vm.tabs.push(tabScope);\r\n tabScope.$on('$destroy', function (event) {\r\n vm.removeGroup(tabScope);\r\n });\r\n };\r\n function removeGroup(tabScope) {\r\n var index = vm.tabs.indexOf(tabScope);\r\n if (index !== -1) {\r\n vm.tabs.splice(index, 1);\r\n }\r\n };\r\n }\r\n app.controller(\"TabstripController\", ['$scope', '$timeout', tabstripController\r\n ]).directive('tabstrip', ['config', '$rootScope', function (config, $rootScope) {\r\n return {\r\n replace: true,\r\n transclude: true,\r\n scope: {\r\n resetTrigger: \"=\"\r\n },\r\n restrict: 'E',\r\n controller: 'TabstripController as vm',\r\n templateUrl: 'templates/core/layout/tabstrip.html',\r\n link: link\r\n };\r\n\r\n function link(scope, iElement, iAttrs, controller) {\r\n scope.vm.tabRoot = angular.element(iElement[0]);\r\n scope.vm.resetTrigger = scope.resetTrigger;\r\n }\r\n }\r\n ]).directive('tabstripGroup', [function () {\r\n return {\r\n replace: false,\r\n transclude: true,\r\n require: '^tabstrip',\r\n restrict: 'E',\r\n scope: {\r\n tabHeader: '&',\r\n tabContent: '&',\r\n tabId: '@',\r\n isHidden: '='\r\n },\r\n controller: ['$scope', function ($scope) {\r\n this.setTabHeader = function (element) {\r\n $scope.tabHeader = element;\r\n };\r\n this.setTabContent = function (element) {\r\n $scope.tabContent = element;\r\n };\r\n }],\r\n template: '
    ',\r\n link: link\r\n };\r\n function link(scope, iElement, iAttrs, controller) {\r\n controller.addTab(scope);\r\n }\r\n }\r\n ]).directive('tabstripHeader', [function () {\r\n return {\r\n replace: false,\r\n require: '^tabstripGroup',\r\n transclude: true,\r\n restrict: 'E',\r\n template: '
    ',\r\n link: {\r\n post: postlink\r\n },\r\n };\r\n function postlink(scope, iElement, iAttrs, controller, transcludeFn) {\r\n transcludeFn(function (clone, scope) {\r\n controller.setTabHeader(clone);\r\n angular.element(iElement[0]).remove(); // remove from DOM\r\n });\r\n\r\n }\r\n }\r\n ]).directive('tabstripContent', [function () {\r\n return {\r\n replace: false,\r\n require: '^tabstripGroup',\r\n transclude: true,\r\n restrict: 'E',\r\n template: '
    ',\r\n link: {\r\n post: postlink\r\n },\r\n };\r\n function postlink(scope, iElement, iAttrs, controller, transcludeFn) {\r\n transcludeFn(function (clone, scope) {\r\n controller.setTabContent(clone);\r\n angular.element(iElement[0]).remove(); // remove from DOM\r\n });\r\n\r\n\r\n }\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n app.directive('widgetControl', ['$timeout', 'config', 'widgetControlConfig', function ($timeout, config, widgetControlConfig) {\r\n var directive = {\r\n restrict: 'E',\r\n link: {\r\n pre: prelink,\r\n post: postlink\r\n },\r\n controller: function(){\r\n this.header = null;\r\n },\r\n transclude: true,\r\n templateUrl: config.clientAppSrcPath + 'app/Core/directives/widgetControl/widgetControl.html',\r\n scope: {\r\n widgetTitle: '@',\r\n widgetIconClass: '@',\r\n widgetId: '@',\r\n widgetConfig: '='\r\n }\r\n };\r\n return directive;\r\n\r\n function prelink(scope, element, attrs) {\r\n // init jarvis widget after render\r\n $timeout(function () {\r\n var widgetConfig = {}\r\n angular.extend(widgetConfig, widgetControlConfig, (scope.widgetConfig) ? scope.widgetConfig : {});\r\n $('#' + attrs.widgetId).jarvisWidgets(widgetConfig);\r\n });\r\n }\r\n\r\n function postlink(scope, element, attrs, controller) {\r\n // init jarvis widget after render\r\n $timeout(function () {\r\n if (controller.header)\r\n angular.element(element).find('header > h2').append(controller.header);\r\n });\r\n }\r\n }]).directive('widgetControlHeader', [function () {\r\n return {\r\n replace: false,\r\n require: '^widgetControl',\r\n transclude: true,\r\n restrict: 'E',\r\n template: '
    ',\r\n link: {\r\n post: postlink\r\n },\r\n };\r\n function postlink(scope, iElement, iAttrs, controller, transcludeFn) {\r\n transcludeFn(function (clone, scope) {\r\n controller.header = clone;\r\n angular.element(iElement[0]).remove(); // remove from DOM\r\n });\r\n }\r\n }]);\r\n\r\n\r\n // TODO: move config declaration in other section?\r\n app.constant('widgetControlConfig', {\r\n grid: 'article',\r\n widgets: '.jarviswidget',\r\n localStorage: true,\r\n deleteSettingsKey: '#deletesettingskey-options',\r\n settingsKeyLabel: 'Reset settings?',\r\n deletePositionKey: '#deletepositionkey-options',\r\n positionKeyLabel: 'Reset position?',\r\n sortable: true,\r\n buttonsHidden: false,\r\n // toggle button\r\n toggleButton: true,\r\n toggleClass: 'fa fa-minus | fa fa-plus',\r\n toggleSpeed: 200,\r\n onToggle: function () {\r\n },\r\n // delete btn\r\n deleteButton: true,\r\n deleteClass: 'fa fa-times',\r\n deleteSpeed: 200,\r\n onDelete: function () {\r\n },\r\n // edit btn\r\n editButton: true,\r\n editPlaceholder: '.jarviswidget-editbox',\r\n editClass: 'fa fa-cog | fa fa-save',\r\n editSpeed: 200,\r\n onEdit: function () {\r\n },\r\n // color button\r\n colorButton: true,\r\n // full screen\r\n fullscreenButton: true,\r\n fullscreenClass: 'fa fa-expand | fa fa-compress',\r\n fullscreenDiff: 3,\r\n onFullscreen: function () {\r\n },\r\n // custom btn\r\n customButton: false,\r\n customClass: 'folder-10 | next-10',\r\n customStart: function () {\r\n alert('Hello you, this is a custom button...');\r\n },\r\n customEnd: function () {\r\n alert('bye, till next time...');\r\n },\r\n // order\r\n buttonOrder: '%refresh% %custom% %edit% %toggle% %fullscreen% %delete%',\r\n opacity: 1.0,\r\n dragHandle: '> header',\r\n placeholderClass: 'jarviswidget-placeholder',\r\n indicator: true,\r\n indicatorTime: 600,\r\n ajax: true,\r\n timestampPlaceholder: '.jarviswidget-timestamp',\r\n timestampFormat: 'Last update: %m%/%d%/%y% %h%:%i%:%s%',\r\n refreshButton: true,\r\n refreshButtonClass: 'fa fa-refresh',\r\n labelError: 'Sorry but there was a error:',\r\n labelUpdated: 'Last Update:',\r\n labelRefresh: 'Refresh',\r\n labelDelete: 'Delete widget:',\r\n afterLoad: function () {\r\n },\r\n rtl: false, // best not to toggle this!\r\n onChange: function () {\r\n\r\n },\r\n onSave: function () {\r\n\r\n }\r\n });\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var app = angular.module('inoApp');\r\n app.directive('widgetDataTable', ['$timeout', 'config', 'widgetControlConfig', function ($timeout, config, widgetControlConfig) {\r\n var directive = {\r\n restrict: 'E',\r\n link: link,\r\n replace: true,\r\n transclude: true,\r\n controller: 'DataTableController as vm',\r\n templateUrl: config.clientAppSrcPath + 'app/Core/directives/widgetDataTable/widgetDataTable.html',\r\n scope: {\r\n widgetDataItems: '=',\r\n widgetTitle: '@',\r\n widgetIconClass: '@',\r\n widgetConfig: '=',\r\n enableCustomFiltering: '='\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, element, attrs, controller) {\r\n controller.rootElement = element;\r\n controller.widgetDataTableScope = scope;\r\n\r\n // init jarvis widget after render\r\n $timeout(function () {\r\n controller.createDataTable(scope);\r\n $(element).on('dataTables.updateLanguage', controller.updateLanguage);\r\n });\r\n }\r\n }\r\n ]).directive('widgetDataRow', ['$timeout', function ($timeout) {\r\n return {\r\n replace: false,\r\n require: '^widgetDataTable',\r\n restrict: 'EA',\r\n link: link,\r\n scope: {\r\n rowIndex: '=widgetDataRow'\r\n }\r\n };\r\n function link(scope, iElement, iAttrs, controller) {\r\n scope.$on(\"$destroy\", function () {\r\n controller.removeRowAt(scope.rowIndex)\r\n });\r\n\r\n $timeout(function () {\r\n var trElement = angular.element(iElement);\r\n controller.addRow(trElement);\r\n });\r\n }\r\n }\r\n ]).directive('widgetDataTableFiltering', [function () {\r\n return {\r\n replace: false,\r\n require: '^widgetDataTable',\r\n transclude: true,\r\n restrict: 'E',\r\n template: '
    ',\r\n link: {\r\n post: postlink\r\n },\r\n };\r\n function postlink(scope, iElement, iAttrs, controller, transcludeFn) {\r\n controller.customFilteringTransclude = transcludeFn;\r\n angular.element(iElement[0]).remove();\r\n }\r\n }]);\r\n\r\n\r\n var controllerId = \"DataTableController\";\r\n app.controller(controllerId, ['$scope','$timeout', DataTableController]);\r\n function DataTableController($scope, $timeout) {\r\n var vm = this;\r\n // Variables set by setup\r\n vm.rootElement = null;\r\n vm.widgetDataTableScope = null;\r\n vm.customFilteringTransclude = null;\r\n vm.tableData = null;\r\n vm.createDataTable = createDataTable;\r\n vm.updateLanguage = updateLanguage;\r\n vm.removeRowAt = removeRowAt;\r\n vm.addRow = addRow;\r\n\r\n function removeRowAt(index) {\r\n vm.tableData.rows().remove(index).draw();\r\n }\r\n\r\n function addRow(trElement) {\r\n vm.tableData.row.add(trElement).draw();\r\n }\r\n\r\n function createDataTable() {\r\n if (vm.tableData != null) {\r\n vm.tableData.destroy(); //important! you have to destroy first or you'll get an alert-error.\r\n vm.tableData = null;\r\n }\r\n\r\n //breakpoint definitions\r\n var breakpointDefinition = {\r\n tablet: 1024,\r\n phone: 480\r\n };\r\n var responsiveHelper_dt_basic = null;\r\n\r\n var table = $(vm.rootElement).find('.table-datatable');\r\n table.dataTable({\r\n \"preDrawCallback\": function () {\r\n // Initialize the responsive datatables helper once.\r\n if (!responsiveHelper_dt_basic) {\r\n responsiveHelper_dt_basic = new ResponsiveDatatablesHelper(table, breakpointDefinition);\r\n }\r\n },\r\n \"rowCallback\": function (nRow) {\r\n responsiveHelper_dt_basic.createExpandIcon(nRow);\r\n },\r\n \"drawCallback\": function (oSettings) {\r\n responsiveHelper_dt_basic.respond();\r\n },\r\n \"searching\": vm.widgetDataTableScope.enableCustomFiltering === true ? false : true,\r\n \"language\": appConfig.dataTables.currentLang,\r\n \"autoWidth\": false\r\n });\r\n\r\n vm.tableData = table.DataTable();\r\n\r\n // Create a clone of originally created element and add to data table if translcude function was set\r\n if (vm.customFilteringTransclude)\r\n $timeout(function () {\r\n vm.customFilteringTransclude(function (clone, scope) {\r\n $(vm.rootElement).find('.dt-toolbar > div').first().append(clone);\r\n });\r\n });\r\n }\r\n\r\n function updateLanguage() {\r\n // re-create table since there is no dynamic language change method\r\n vm.createDataTable();\r\n }\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('inoApp.directives.layout').directive('layoutFooter', [function () {\r\n var directive = {\r\n restrict: 'AE',\r\n replace: false,\r\n templateUrl: 'templates/core/layout/footer.html'\r\n };\r\n\r\n return directive;\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var controllerId = 'headerController';\r\n var module = angular.module('inoApp.directives.layout');\r\n\r\n module.directive('layoutHeader', [function () {\r\n var directive = {\r\n restrict: 'AE',\r\n replace: false,\r\n templateUrl: 'templates/core/layout/header.html',\r\n controller: controllerId,\r\n controllerAs: 'headerVm'\r\n };\r\n\r\n return directive;\r\n }]);\r\n \r\n module.controller(controllerId, ['$rootScope', '$translate', 'common', 'config', 'amMoment', 'tmhDynamicLocale', 'userService', headerController]);\r\n\r\n function headerController($rootScope, $translate, common, config, amMoment, tmhDynamicLocale, userService) {\r\n var vm = this;\r\n\r\n vm.changeLanguage = changeLanguage;\r\n vm.isSelected = isSelected;\r\n vm.isCurrent = isCurrent;\r\n vm.languageKey = config.appLanguage;\r\n\r\n vm.editProfileUrl = config.servicesUrl.editUrl;\r\n vm.signOutUrl = config.servicesUrl.identity.signOutUrl;\r\n vm.userIsAuthenticated = userService.isAuthenticated();\r\n vm.userProfile = userService.currentUser.profile;\r\n\r\n activate();\r\n\r\n function activate() {\r\n common.handleBusyState([setLanguage(vm.languageKey)], controllerId);\r\n }\r\n\r\n function isSelected(languageKey) {\r\n return vm.languageKey === languageKey ? 'selected' : '';\r\n }\r\n\r\n function isCurrent(languageKey) {\r\n return vm.languageKey === languageKey;\r\n }\r\n\r\n function changeLanguage(languageKey) {\r\n setLanguage(languageKey);\r\n // Broadcast the language change event so other app parts can take action if they need it.\r\n $rootScope.$broadcast(config.events.languageChanged, { languageKey: languageKey });\r\n }\r\n\r\n function setLanguage(languageKey) {\r\n $translate.use(languageKey);\r\n tmhDynamicLocale.set(languageKey + '-CA');\r\n amMoment.changeLocale(languageKey + '-CA');\r\n //appConfig.dataTables.changeLanguage(languageKey + '-CA');\r\n vm.languageKey = languageKey;\r\n }\r\n };\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var module = angular.module('inoApp.directives.layout');\r\n\r\n module.directive('layoutHeaderSearch', [function () {\r\n var directive = {\r\n restrict: 'AE',\r\n replace: true,\r\n templateUrl: 'templates/core/layout/header_search.html',\r\n };\r\n\r\n return directive;\r\n }]);\r\n})();","(function () {\r\n 'use strict';\r\n\r\n var controllerId = 'navMenuController';\r\n var module = angular.module('inoApp.directives.layout');\r\n\r\n module.directive('layoutNavMenu', [function () {\r\n var directive = {\r\n restrict: 'AE',\r\n replace: false,\r\n controller: controllerId,\r\n controllerAs: 'navMenuVm',\r\n templateUrl: 'templates/core/layout/navMenu.html'\r\n };\r\n\r\n return directive;\r\n }]);\r\n \r\n module.controller(controllerId, ['$filter', '$state', navMenuController]);\r\n\r\n function navMenuController($filter, $state) {\r\n var vm = this;\r\n\r\n //vm.isSelected = isSelected;\r\n vm.menuInfos = [];\r\n vm.currentState = currentState;\r\n\r\n activate();\r\n\r\n function activate() {\r\n getNavRoutes();\r\n }\r\n\r\n function getNavRoutes() {\r\n vm.menuInfos.length = 0;\r\n var menuInfos = [];\r\n var allStates = $state.get();\r\n allStates.forEach(function (state, index) {\r\n if (state.data && state.data.settings && !state.parent) {\r\n var subMenuInfos = null;\r\n if (state.abstract) {\r\n // check for child states\r\n var childrenStates = allStates.filter(function (s) {\r\n return (s.parent === state.name);\r\n });\r\n childrenStates = $filter('orderBy')(childrenStates, 'data.settings.nav');\r\n\r\n subMenuInfos = [];\r\n for (var i = 0; i < childrenStates.length; i++) {\r\n var childState = childrenStates[i];\r\n if (childState.data && childState.data.settings)\r\n subMenuInfos.push({ stateName: childState.name, resourceKey: childState.data.settings.titleResourceKey, iconClass: childState.data.settings.iconClass, nav: state.data.settings.nav });\r\n }\r\n }\r\n\r\n menuInfos.push({ stateName: state.name, resourceKey: state.data.settings.titleResourceKey, subMenuInfos: subMenuInfos, iconClass: state.data.settings.iconClass, nav: state.data.settings.nav });\r\n }\r\n });\r\n\r\n vm.menuInfos = $filter('orderBy')(menuInfos, 'nav');\r\n\r\n }\r\n\r\n function currentState() {\r\n if ($state.$current)\r\n return $state.$current.name;\r\n\r\n return '';\r\n }\r\n };\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular.module('inoApp.directives.layout').directive('layoutRibbon', [function () {\r\n var directive = {\r\n restrict: 'AE',\r\n replace: false,\r\n templateUrl: 'templates/core/layout/ribbon.html'\r\n };\r\n\r\n return directive;\r\n }]);\r\n})();"]}