{"version":3,"file":"frontend.js","mappings":"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","sources":["webpack://bizpartengage.web/./FrontEnd/Core/Controllers/completeregister.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/exthome.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/forgotpassword.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/login.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/logout.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/mypage.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/notifications.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/register.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/terms.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/themestest.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/unsubscribe.js","webpack://bizpartengage.web/./FrontEnd/Core/Controllers/welcome.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/ActivityReminders.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/AdminBar.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/CookieSettings.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/CountdownTimer.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/CultureSelector.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Engage.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Favorites.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Header.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/LayoutComponent.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Leaderboard.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/LevelProgress.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/MainMenu.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/MyNotes.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/MyText.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Notifications.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/OpenIdLoginBtns.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/ProfileMenu.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Search.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/SimulateUser.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/SocialShare.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/TipSomeone.js","webpack://bizpartengage.web/./FrontEnd/Core/Directives/Unsubscribe.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/completeregisterService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/engageService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/eventStatisticsService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/favoriteService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/forgotpasswordService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/leaderboardService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/levelService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/myNotesService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/portalService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/register.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/sessionService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/ssoService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/termsService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/unitService.js","webpack://bizpartengage.web/./FrontEnd/Core/Services/userService.js","webpack://bizpartengage.web/./FrontEnd/Core/routing.js","webpack://bizpartengage.web/./FrontEnd/Effects/effects.js","webpack://bizpartengage.web/./FrontEnd/Effects/fireworks.js","webpack://bizpartengage.web/./FrontEnd/Effects/pagetitlenotification.js","webpack://bizpartengage.web/./FrontEnd/Modules/Blog/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Blog/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Blog/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/CMS/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/CMS/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Campaign/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Campaign/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Certifications/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Certifications/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Dictionary/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Dictionary/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Education/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Education/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Education/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/deactivateGoal.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/managerGoals.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/myGoals.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/myRootGoals.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/myTasks.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/oneActivity.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/oneGoal.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/oneTask.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Directives/taskStatus.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Activities/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Calendar/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Calendar/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Dashboard/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Goals/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/ManagerSettings/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Resultreport/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Tasks/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/EngagementGoals/Modules/Team/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Event/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Event/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Forms/Plugins/questions.js","webpack://bizpartengage.web/./FrontEnd/Modules/Forum/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Forum/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Journey/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/MasterRun/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Media/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Media/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Media/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Missions/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/Missions/directives.js","webpack://bizpartengage.web/./FrontEnd/Modules/Missions/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/Search/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/SpeedQuiz/controllers.js","webpack://bizpartengage.web/./FrontEnd/Modules/SpeedQuiz/services.js","webpack://bizpartengage.web/./FrontEnd/Modules/routing.js","webpack://bizpartengage.web/./FrontEnd/app.js","webpack://bizpartengage.web/./FrontEnd/controllers.js","webpack://bizpartengage.web/./FrontEnd/directives.js","webpack://bizpartengage.web/./FrontEnd/filters.js","webpack://bizpartengage.web/./FrontEnd/services.js","webpack://bizpartengage.web/./FrontEnd/templates.js","webpack://bizpartengage.web/webpack/bootstrap"],"sourcesContent":["(function (angular) {\r\n angular.module('bizPartEngage').controller('cleanbase.completeregister', completeRegister);\r\n\r\n completeRegister.$inject = ['$rootScope', '$scope', '$stateParams', 'core.completeregisterService', '$translate', '$timeout', '$filter', '$sce', 'core.users.service'];\r\n\r\n function completeRegister($rootScope, $scope, $stateParams, completeRegisterService, $translate, $timeout, $filter, $sce, userService) {\r\n var vm = this;\r\n\r\n vm.CompleteRegistrationGuid = $stateParams.guid;\r\n vm.Unauthorized = false;\r\n\r\n vm.MobilePattern = /^\\+[0-9]{10,}$/;\r\n vm.MobilePatternSE = /^\\+460?7[0|2|3|6|9][0-9]{7}$/;\r\n\r\n vm.GetUser = GetUser;\r\n vm.CompleteRegistration = CompleteRegistration;\r\n vm.GenderClick = GenderClick;\r\n vm.GetGender = GetGender;\r\n vm.IsMobileValid = IsMobileValid;\r\n vm.LoadTranslations = LoadTranslations;\r\n vm.GetPassword = GetPassword;\r\n vm.IsEmailValid = IsEmailValid;\r\n vm.SendVerificationCode = SendVerificationCode;\r\n vm.IsPasswordSecure = IsPasswordSecure;\r\n\r\n vm.IsMainCustomField = IsMainCustomField;\r\n vm.IsPostCustomField = IsPostCustomField;\r\n vm.IsPostCustomFieldValid = IsPostCustomFieldValid;\r\n\r\n vm.UnitLogo = $rootScope.GetUnitSettingsImage();\r\n\r\n function IsPostCustomFieldValid(customField) {\r\n var formFieldKey = 'extcusfield_' + customField.CustomId;\r\n //any form errors - not valid\r\n if (vm.MyForm[formFieldKey] && vm.MyForm[formFieldKey].$error.pattern) return false;\r\n\r\n if (customField.IsMandatory) {\r\n //if mandatory and no value - not valid\r\n if (!vm.ExtCustomFieldValues || !vm.ExtCustomFieldValues[customField.CustomId]) return false;\r\n\r\n //if mandatory and options exist - valid if value is set\r\n if (customField.Options && customField.Options.length > 0) {\r\n return vm.ExtCustomFieldValues[customField.CustomId] !== undefined;\r\n }\r\n\r\n //if mandatory and no options and no value - not valid\r\n if (!vm.ExtCustomFieldValues[customField.CustomId].length) return false;\r\n }\r\n\r\n //if phone, mandatory check has already been done above, but we still need to check if the phone number is valid\r\n if (customField.CustomId.indexOf('PHONE') >= 0) {\r\n if (vm.CustomFieldsMobileBadInput && vm.CustomFieldsMobileBadInput[customField.CustomId]) return false;\r\n\r\n if (vm.ExtCustomFieldValues[customField.CustomId] && !vm.IsMobileValid(vm.ExtCustomFieldValues[customField.CustomId], true)) return false; \r\n }\r\n\r\n return true; \r\n }\r\n\r\n function IsMainCustomField(field) {\r\n return field.CustomId.toLowerCase().startsWith(\"postfield_\") === false;\r\n }\r\n\r\n function IsPostCustomField(field) {\r\n return field.CustomId.toLowerCase().startsWith(\"postfield_\") === true;\r\n }\r\n\r\n function IsEmailValid() {\r\n if (!vm.User || !vm.User.Email) return false;\r\n if (!vm.EmailPattern) return true;\r\n\r\n return vm.EmailPattern.test(vm.User.Email);\r\n }\r\n\r\n function SendVerificationCode() {\r\n if (vm.IsEmailValid()) {\r\n completeRegisterService.SendVerificationCode(vm.CompleteRegistrationGuid, vm.User.Email).then(SendVerificationCodeCallback, SendVerificationCodeError);\r\n } else { \r\n vm.ShowEmailInvalid = true;\r\n }\r\n\r\n function SendVerificationCodeCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n if (result) {\r\n vm.VerificationCodeSent = true;\r\n } else {\r\n SendVerificationCodeError();\r\n }\r\n }\r\n\r\n function SendVerificationCodeError() {\r\n console.log(\"send verification code error\");\r\n }\r\n }\r\n\r\n function IsMobileValid(number, skipSeMatch) {\r\n if (!number) return false;\r\n\r\n if (number.startsWith(\"+46\") && vm.MobilePatternSE && !skipSeMatch) {\r\n return vm.MobilePatternSE.test(number)\r\n } else {\r\n return vm.MobilePattern.test(number)\r\n }\r\n }\r\n\r\n function GenderClick(gender) {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n vm.Genders[i].checked = vm.Genders[i] === gender;\r\n }\r\n }\r\n\r\n function GetUser() {\r\n completeRegisterService.GetUserByActionGuid(vm.CompleteRegistrationGuid).then(GetUserByActionGuidCallback, HandleError);\r\n\r\n function GetUserByActionGuidCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n vm.User = result.User;\r\n InitFormSettings(result.Settings);\r\n vm.Initialized = true;\r\n }\r\n\r\n function HandleError(response) { \r\n if (response.status === 401) {\r\n vm.Unauthorized = true;\r\n vm.UnauthorizedMessage = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n }\r\n\r\n function GetGender() {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n if (vm.Genders[i].checked) {\r\n return vm.Genders[i].SystemName;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function IsPasswordSecure() {\r\n return !vm.GetPassword || $rootScope.PasswordRegex.test(vm.Password);\r\n }\r\n\r\n function GetPassword() {\r\n if (vm.IsPasswordSecure() && vm.Password && vm.Password === vm.RepeatPassword) {\r\n return vm.Password;\r\n } \r\n }\r\n\r\n function CompleteRegistration() { \r\n \r\n var gender = vm.GetGender();\r\n\r\n var password;\r\n var passwordValid = true;\r\n if (vm.FormSettings && vm.FormSettings.AllowSetPassword) {\r\n password = vm.GetPassword();\r\n if (!password) {\r\n passwordValid = false;\r\n }\r\n } \r\n\r\n var mobileValid = vm.IsMobileValid(vm.User.Mobile) && !vm.MobileBadInput;\r\n\r\n var postExtFieldsValid = true;\r\n if (vm.FormSettings.ExtCustomFields) {\r\n for (var i = 0; i < vm.FormSettings.ExtCustomFields.length; i++) {\r\n var customField = vm.FormSettings.ExtCustomFields[i];\r\n //just check post fields because I dont want to risk messing up the other ones\r\n if (IsPostCustomField(customField) && !IsPostCustomFieldValid(customField)) {\r\n postExtFieldsValid = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n if (vm.MyForm.$valid && gender && passwordValid && mobileValid && !vm.Submitting && !vm.Submitted && postExtFieldsValid) {\r\n var extCustomFieldValues;\r\n if (vm.ExtCustomFieldValues) {\r\n extCustomFieldValues = angular.copy(vm.ExtCustomFieldValues);\r\n\r\n for (var customId in extCustomFieldValues) {\r\n if (extCustomFieldValues.hasOwnProperty(customId)) {\r\n var item = extCustomFieldValues[customId];\r\n if (item && (item.Value || item.Value === '')) {\r\n extCustomFieldValues[customId] = item.Value;\r\n }\r\n }\r\n }\r\n }\r\n \r\n console.log(\"submitted\", extCustomFieldValues);\r\n vm.ShowValidation = false;\r\n vm.Submitting = true;\r\n\r\n vm.User.Gender = gender;\r\n\r\n completeRegisterService.CompleteRegistration(vm.CompleteRegistrationGuid, vm.User, password, extCustomFieldValues, vm.VerificationCode).then(CompleteRegistrationCallback, HandleError);\r\n\r\n function CompleteRegistrationCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n console.log(\"result\", result);\r\n vm.Submitted = true;\r\n vm.Success = result.Success;\r\n if (!vm.Success) {\r\n vm.Message = $sce.trustAsHtml(result.Message);\r\n } else {\r\n vm.SuccessMessage = $sce.trustAsHtml(result.Message)\r\n var redirectUrl = result.ExtraInfo.RedirectUrl;\r\n if (redirectUrl) {\r\n if (redirectUrl.startsWith('/') && redirectUrl.toLowerCase().indexOf('login') < 0) {\r\n setSessionStorage('highlightLogin', 'true');\r\n }\r\n\r\n vm.RedirectTimeout = $timeout(() => {\r\n location.href = $filter('siteroot')(redirectUrl);\r\n }, 20000);\r\n }\r\n }\r\n }\r\n\r\n function HandleError() {\r\n console.log(\"handle error\");\r\n vm.Success = false;\r\n vm.Submitted = true;\r\n vm.InternalError = true;\r\n vm.Message = \"Something went wrong, please try again later.\"\r\n }\r\n } else {\r\n console.log(\"not valid\");\r\n vm.ShowValidation = true;\r\n }\r\n \r\n }\r\n\r\n function LoadTranslations() {\r\n $translate([\r\n 'CORE.COMPLETEREGISTER.ERROR_MSG',\r\n 'CORE.COMPLETEREGISTER.MAILTO' \r\n\r\n ]).then(function (translations) {\r\n \r\n var msg = translations['CORE.COMPLETEREGISTER.ERROR_MSG']?.toString();\r\n var mail = translations['CORE.COMPLETEREGISTER.MAILTO']?.toString();\r\n if (msg && mail) {\r\n vm.ErrorMessage = msg.replace('##MAILTOLINK##', '' + mail + '');\r\n } else {\r\n vm.ErrorMessage = msg;\r\n }\r\n console.log(\"error msg\", vm.ErrorMessage);\r\n \r\n });\r\n }\r\n\r\n function InitFormSettings(settings) {\r\n if (settings.ExtCustomFields) {\r\n for (var i = 0; i < settings.ExtCustomFields.length; i++) {\r\n if (settings.ExtCustomFields[i].Options?.length > 0) {\r\n var options = settings.ExtCustomFields[i].Options;\r\n for (var j = 0; j < options.length; j++) {\r\n options[j].Id = options[j].Value; \r\n }\r\n }\r\n\r\n if (IsPostCustomField(settings.ExtCustomFields[i])) {\r\n vm.HasPostCustomFields = true;\r\n }\r\n }\r\n }\r\n vm.FormSettings = settings;\r\n console.log(\"vm.FormSettings\", vm.FormSettings);\r\n }\r\n\r\n function Init() {\r\n \r\n userService.GetGenders().then(GetGendersCallback);\r\n vm.LoadTranslations();\r\n completeRegisterService.GetGuidInfo(vm.CompleteRegistrationGuid).then(GetGuidInfoCallback, HandleError);\r\n\r\n function GetGuidInfoCallback(response) {\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n console.log(\"GetGuidInfoCallback\", result);\r\n if (result.Type === 'COMPLETE_REGISTRATION') {\r\n vm.GetUser();\r\n } else if (result.Type === 'CREATE_USER_FOR_UNIT') {\r\n vm.CreateUserForUnit = true;\r\n InitFormSettings(result.Settings);\r\n\r\n if (vm.FormSettings.AllowEmailDomains && vm.FormSettings.AllowEmailDomains.length > 0) {\r\n var regexDomains = vm.FormSettings.AllowEmailDomains.join('|');\r\n //vm.EmailPattern = new RegExp(\"^\\\\w+([-+.']\\\\w+)*@(?=(?:\" + regexDomains + \")\\\\.\\\\w+$)\\\\w+([-.]\\\\w+)*\\\\.\\\\w+([-.]\\\\w+)*$\");\r\n vm.EmailPattern = new RegExp(\"^[a-zA-Z0-9._%+-]+@(?:\" + regexDomains + \")$\");\r\n } \r\n\r\n vm.Initialized = true;\r\n }\r\n } \r\n\r\n function HandleError(response) {\r\n if (response.status === 401) {\r\n vm.Unauthorized = true;\r\n vm.UnauthorizedMessage = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function GetGendersCallback(response) {\r\n var genders = BizPartCoreHelpers.getResponseValue(response); \r\n vm.Genders = genders.filter(g => g.SystemName !== 'OTHER');\r\n }\r\n\r\n $scope.$on(\"$destroy\", () => {\r\n if (vm.RedirectTimeout) {\r\n $timeout.cancel(vm.RedirectTimeout);\r\n }\r\n });\r\n }\r\n\r\n vm.$onInit = Init;\r\n\r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').controller('cleanbase.exthome', extHome);\r\n\r\n extHome.$inject = ['$rootScope', '$window'];\r\n\r\n function extHome($rootScope, $window) {\r\n var vm = this;\r\n\r\n //const width = 1600;\r\n const width = screen.width;\r\n const css = {\r\n height: width > 1600 ? '60%' : '80%',\r\n width: width > 1600 ? '60%' : '86%',\r\n top: '10%',\r\n left: width > 1600 ? '20%' : '7%',\r\n boxShadow:\r\n '0px 2px 1px -1px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 1px 3px 0px rgba(0,0,0,0.12)',\r\n borderRadius: '5px',\r\n };\r\n\r\n $rootScope.$on('WELCOMEGUIDE.COMPLETED', function (e, data) {\r\n vm.showWelcomeGuide = false;\r\n $window.parent.postMessage(\r\n { show: false, dimBackground: false, css: {} },\r\n '*'\r\n );\r\n });\r\n\r\n $rootScope.$on('WELCOMEGUIDE.SHOW', function (e, data) {\r\n vm.showWelcomeGuide = true;\r\n var showData = {\r\n show: true,\r\n dimBackground: true,\r\n css: css,\r\n };\r\n $window.parent.postMessage(showData, '*');\r\n });\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('core.forgotpassword', forgotpasswordController);\r\n\tangular.module('bizPartEngage').controller('core.changepassword', changepasswordController);\r\n\r\n\tforgotpasswordController.$inject = [\"$rootScope\", \"core.forgotpasswordService\", \"$mdDialog\", \"$translate\", \"bizValidationService\", \"$mdToast\", \"bizCoreService\"];\r\n changepasswordController.$inject = [\"$rootScope\", \"core.forgotpasswordService\", \"$mdDialog\", \"$translate\", \"bizValidationService\", \"$mdToast\", \"$stateParams\", \"$state\", \"bizCoreService\"];\r\n\r\n\tfunction forgotpasswordController($rootScope, forgotpasswordService, $mdDialog, $translate, bizValidationService, $mdToast, bizCoreService) {\r\n\t\tvar vm = this;\r\n\t\tvm.IsIframed = false;\r\n\t\tvm.mode = 'requestpassword';\r\n\t\tvm.SendForgotPasswordWithEmail = SendForgotPasswordWithEmail;\r\n\t\tvm.Message = '';\r\n vm.ShowLogin = ShowLogin;\r\n vm.ErrorObject = null;\r\n\t\tvm.Portal;\r\n\r\n\t\tvm.BackgroundImage = 'Images/login-img.png';\r\n\t\tvm.IsImagesInitialized = false;\r\n\r\n\t\tvm.User = {\r\n\t\t\tEmail: ''\r\n\t\t};\r\n\r\n\t\tfunction ShowLogin() {\r\n\t\t\t$rootScope.$broadcast('SHOW-LOGIN-DIRECTIVE');\r\n\t\t}\r\n\r\n\t\tfunction SendForgotPasswordWithEmail() {\r\n\t\t\tvm.Message = '';\r\n\t\t\tif (vm.User.Email && vm.User.Email.indexOf('@') > 0) { // bizValidationService.FormValid(vm.MyForm1) == true && \r\n\r\n\t\t\t\tforgotpasswordService.SendPasswordRecoveryEmail(vm.User.Email).then(forgotpasswordSuccess);\r\n\r\n\t\t\t\tfunction forgotpasswordSuccess(response) {\r\n\t\t\t\t\tif (response.data.Success == true) {\r\n\t\t\t\t\t\tvm.User.Email = '';\r\n\t\t\t\t\t\t$translate('CORE.FORGOTPASSWORD.EMAILSENT').then(function(translation) {\r\n\t\t\t\t\t\t\tvm.Message = translation || 'E-mail sent!';\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (response.data.Message.length > 0) {\r\n\t\t\t\t\t\tvm.Message = response.data.Message;\r\n }\r\n\r\n vm.ErrorObject = response.data.Object;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t\r\n\t\t\t\t$translate('CORE.FORGOTPASSWORD.NOVALIDEMAILSUPPLIED').then(function (translation) {\r\n\t\t\t\t\tvm.Message = translation || 'No valid email was supplied';\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction GetInitData() {\r\n\t\t\tforgotpasswordService.GetBackgroundImage().then(function (response) {\r\n\t\t\t\tif (response.length > 0)\r\n\t\t\t\t\tvm.BackgroundImage = response;\r\n\r\n\t\t\t\tvm.IsImagesInitialized = true;\r\n\t\t\t});\r\n\r\n\t\t\t$rootScope.HasAcceptedCookies = getLocalStorage('HasAcceptedCookies');\r\n }\r\n\r\n\t\tfunction Init() {\r\n\t\t\tif (window.location.search.indexOf('framed') > -1) {\r\n\t\t\t\tvm.IsIframed = true;\r\n\t\t\t}\r\n\r\n\t\t\tGetInitData();\r\n\t\t}\r\n\r\n\t\tvm.$onInit = Init;\r\n\t}\r\n\r\n function changepasswordController($rootScope, forgotpasswordService, $mdDialog, $translate, bizValidationService, $mdToast, $stateParams, $state, bizCoreService) {\r\n\t\tvar vm = this;\r\n\t\tvm.Guid = $stateParams.guid;\r\n\t\tvm.mode = 'changepassword';\r\n\t\tvm.PasswordWasUpdated = false;\r\n\t\tvm.IsGuidValid = false;\r\n\r\n\t\tvm.BackgroundImage = 'Images/login-img.png';\r\n\t\tvm.IsImagesInitialized = false;\r\n\r\n\t\tvm.UpdatePassword = UpdatePassword;\r\n\t\tvm.Init = Init;\r\n\r\n function Init() {\r\n GetInitData();\r\n\r\n\t\t\tforgotpasswordService.IsResetPasswordGuidValid(vm.Guid).then(IsResetPasswordGuidValidSuccess);\r\n\r\n\t\t\tfunction IsResetPasswordGuidValidSuccess(response) {\r\n\t\t\t\tvm.IsGuidValid = response.data.Success;\r\n\r\n\t\t\t\tif (vm.IsGuidValid == false) {\r\n\t\t\t\t\t$translate('CORE.FORGOTPASSWORD.GUIDNOTVALID').then(function (translation) {\r\n\t\t\t\t\t\tvm.Message = translation || 'Supplied link is not valid!';\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n }\r\n\r\n function GetInitData() {\r\n\t\t\tforgotpasswordService.GetBackgroundImage().then(function (response) {\r\n\t\t\t\tif (response.length > 0)\r\n\t\t\t\t\tvm.BackgroundImage = response;\r\n\r\n\t\t\t\tvm.IsImagesInitialized = true;\r\n\t\t\t});\r\n }\r\n\t\t\r\n\t\tfunction UpdatePassword() {\r\n\t\t\tif (!vm.MyForm2.$valid || vm.Password != vm.RepeatPassword) {\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t//if (bizValidationService.FormValid(vm.MyForm2) == true) { // TODO more validation, regex...?\r\n\r\n\t\t\t\t//vm.Password = vm.Password.trim();\r\n\t\t\t\t//vm.RepeatPassword = vm.RepeatPassword.trim();\r\n\r\n\t\t\t\t//if (vm.Password != vm.RepeatPassword) {\r\n\t\t\t\t//\t$translate('CORE.FORGOTPASSWORD.PASSWORDNOTSAME').then(function (translation) {\r\n\t\t\t\t//\t\tvm.Message = translation || 'Passwords does not match!';\r\n\t\t\t\t//\t});\r\n\t\t\t\t//}\r\n\t\t\t\t//else {\r\n\t\t\t\t\tforgotpasswordService.UpdatePassword(vm.Guid, vm.Password).then(updateSuccess);\r\n\r\n\t\t\t\t\tfunction updateSuccess(response) {\r\n\t\t\t\t\t\tif (response.data.Success == true) {\r\n\t\t\t\t\t\t\t$translate('CORE.FORGOTPASSWORD.RESETSUCCESS').then(function (translation) {\r\n\t\t\t\t\t\t\t\tvm.Message = translation || 'Password updated!';\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tvm.PasswordWasUpdated = true;\r\n\t\t\t\t\t\t\tvm.Password = '';\r\n vm.RepeatPassword = '';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tvm.Message = response.data.Message;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t//}\r\n\t\t\t//}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tvm.$onInit = vm.Init;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.login', loginController);\r\n\r\n loginController.$inject = [\"$rootScope\", \"loginService\", \"core.forgotpasswordService\", \"$timeout\", \"$state\", \"$window\", \"bizLoaderService\", \r\n \"$stateParams\", \"bizValidationService\", \"$translate\", \"bizCoreService\"];\r\n\r\n function loginController($rootScope, loginService, forgotpasswordService, $timeout, $state, $window, bizLoaderService, \r\n $stateParams, bizValidationService, $translate, bizCoreService) {\r\n var vm = this;\r\n vm.IsInitialized = false;\r\n vm.IsImagesInitialized = false;\r\n vm.BackgroundImage = 'Images/login-img.png';\r\n vm.REMEMBER_ME_VAL_KEY = \"LOGIN_REMEMBER_ME_VAL\";\r\n vm.Message = '';\r\n vm.ErrorObject = null;\r\n vm.LoginError = false;\r\n vm.RememberMe = false; \r\n vm.PasswordWasUpdated = false;\r\n vm.OpenLoginActive = false;\r\n vm.ShowLogo = $rootScope.MiniSettings.Login.ShowLogo;\r\n vm.ShowPortalName = $rootScope.MiniSettings.Login.ShowPortalName;\r\n if ($stateParams.guid === 'init') {\r\n vm.ActivateAccountInit = true;\r\n } else {\r\n vm.ActivateAccountGuid = $stateParams.guid;\r\n }\r\n\r\n vm.PhraseSuffix = $stateParams.phraseSuffix;\r\n\r\n vm.ParentUnitUrlRewrite = $stateParams.parentUnitUrlRewrite;\r\n vm.ExternalUnitKey = $stateParams.externalUnitKey;\r\n\r\n if (vm.ParentUnitUrlRewrite) {\r\n vm.UnitLogo = $rootScope.GetCustomImage('logo');\r\n }\r\n\r\n console.log(\"vm.parentUnitUrlRewrite\", vm.parentUnitUrlRewrite);\r\n console.log(\"vm.ExternalUnitKey\", vm.ExternalUnitKey);\r\n console.log(\"vm.ActivateAccountInit\", vm.ActivateAccountInit)\r\n\r\n vm.Portal;\r\n\r\n vm.Login = Login;\r\n vm.SetRememberMeData = SetRememberMeData;\r\n vm.UpdatePassword = UpdatePassword;\r\n vm.SetHighlightLogin = SetHighlightLogin;\r\n vm.InitEmailVerification = InitEmailVerification;\r\n\r\n function SetHighlightLogin() {\r\n setSessionStorage('highlightLogin', 'true');\r\n }\r\n\r\n function Login() {\r\n vm.UserName = vm.UserName.trim();\r\n vm.Password = vm.Password.trim();\r\n\r\n if (vm.UserName.length == 0 || vm.Password.length == 0)\r\n return;\r\n\r\n bizLoaderService.RequestFullPageLoader();\r\n if(vm.RememberMe) vm.SetRememberMeData();\r\n else deleteLocalStorage(vm.REMEMBER_ME_VAL_KEY);\r\n\r\n \tloginService.Login(vm.UserName, vm.Password).then(LoginCallback, bizLoaderService.RequestFullPageLoaderFinish);\r\n\r\n function LoginCallback(response) {\r\n if (response.data.Token && response.data.Token != \"\") {\r\n deleteStorage(\"BizPartAuthToken\");\r\n setBizPartAuthToken(response.data.Token, response.data.Id);\r\n }\r\n\r\n vm.ErrorObject = response.data.Object;\r\n\r\n if (response.data.Id > -1) {\r\n if (response.data.RedirectUrl) {\r\n if (response.data.RedirectUrl === '/') {\r\n $window.location = siteRootPath;\r\n } else {\r\n $window.location = siteRootPath + response.data.RedirectUrl;\r\n }\r\n \r\n }\r\n else if(response.data.HasAdminAccess) {\r\n //$window.location = siteRootPath + \"admin\";\r\n $window.location = $rootScope.MiniSettings.Login.LoginAdminUrl;\r\n } \r\n else if (initialUrl) {\r\n $window.location = siteRootPath + initialUrl;\r\n }\r\n else {\r\n $window.location = siteRootPath;\r\n } \r\n }\r\n else {\r\n \tbizLoaderService.RequestFullPageLoaderFinish();\r\n vm.LoginError = true;\r\n }\r\n }\r\n }\r\n\r\n function SetRememberMeData() {\r\n setLocalStorage(vm.REMEMBER_ME_VAL_KEY, vm.UserName);\r\n }\r\n\r\n function InitEmailVerification() {\r\n if (bizValidationService.FormValid(vm.ActivateAccountInitForm) == true) {\r\n\r\n //We can set it right away as the backend will give no indication of success anyway due to security\r\n vm.AcctivateAccountInitSent = true;\r\n loginService.InitEmailVerification(vm.InitEmail, vm.ParentUnitUrlRewrite, vm.ExternalUnitKey).then(InitEmailVerificationCallback);\r\n\r\n function InitEmailVerificationCallback(response) {\r\n //vm.AcctivateAccountInitSent = true;\r\n }\r\n } \r\n }\r\n\r\n function UpdatePassword() {\r\n if (!vm.MyForm2.$valid || vm.Password != vm.RepeatPassword) {\r\n\r\n return;\r\n }\r\n\r\n //if (bizValidationService.FormValid(vm.MyForm2) == true) { // TODO more validation, regex...?\r\n\r\n //if (vm.Password != vm.RepeatPassword) {\r\n // $translate('CORE.FORGOTPASSWORD.PASSWORDNOTSAME').then(function (translation) {\r\n // vm.Message = translation || 'Passwords does not match!';\r\n // });\r\n //}\r\n //else {\r\n forgotpasswordService.UpdatePassword(vm.ActivateAccountGuid, vm.Password).then(updateSuccess);\r\n\r\n function updateSuccess(response) {\r\n if (response.data.Success == true) {\r\n $translate('CORE.FORGOTPASSWORD.RESETSUCCESS').then(function (translation) {\r\n vm.Message = translation || 'Password updated!';\r\n });\r\n\r\n vm.PasswordWasUpdated = true;\r\n vm.Password = '';\r\n vm.RepeatPassword = '';\r\n\r\n if (response.data.Object) {\r\n if (response.data.Object.redirectUrl) {\r\n vm.RedirectUrl = response.data.Object.redirectUrl;\r\n }\r\n }\r\n }\r\n else {\r\n vm.Message = response.data.Message;\r\n }\r\n\r\n vm.ErrorObject = response.data.Object;\r\n }\r\n // }\r\n //}\r\n }\r\n\r\n function GetInitData() {\r\n forgotpasswordService.GetBackgroundImage().then(function (response) {\r\n if (response.length > 0)\r\n vm.BackgroundImage = response;\r\n\r\n vm.IsImagesInitialized = true;\r\n });\r\n\r\n bizCoreService.GetCurrentPortal().then(function(response) {\r\n vm.Portal = response.data;\r\n });\r\n\r\n bizCoreService.GetPortalsetting(\"IsOpenIdLoginEnabled\").then(function (response) {\r\n vm.OpenLoginActive = response.data === 'True';\r\n });\r\n\r\n var openIdOnly = portalSettings[\"IsOpenIdLoginOnly\"];\r\n if (openIdOnly) {\r\n var overrideOpenIdOnly = getParameterByNameFromUrl('s', location.href) === '91af1798-35b0-4974-9ef5-0fcf52fbe355';\r\n if (!overrideOpenIdOnly) {\r\n vm.OpenIdOnly = true;\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n\r\n GetInitData();\r\n\r\n $rootScope.HasAcceptedCookies = getLocalStorage('HasAcceptedCookies');\r\n\r\n if (vm.ActivateAccountGuid) {\r\n loginService.ActivateAccount(vm.ActivateAccountGuid).then(ActivateAccountCallback);\r\n\r\n function ActivateAccountCallback(response) {\r\n console.log(response);\r\n vm.Message = response.data.Message;\r\n vm.ActivateAccountSuccess = response.data.Success;\r\n vm.ErrorObject = response.data.Object;\r\n\r\n if (response.data.Success && response.data.ExtraInfo?.UserName) {\r\n setSessionStorage('ACTIVATED_EMAIL_USERNAME', response.data.ExtraInfo.UserName);\r\n } else if (response.data.ExtraInfo?.UserName) {\r\n setSessionStorage('ACTIVATED_EMAIL_USERNAME', response.data.ExtraInfo.UserName);\r\n $window.location = siteRootPath + $rootScope.MiniSettings[\"Login\"][\"AlreadyVerifiedRedirectUrl\"];\r\n }\r\n }\r\n }\r\n else {\r\n var rememberMeVal = getLocalStorage(vm.REMEMBER_ME_VAL_KEY);\r\n var activatedEmailUserName = getSessionStorage('ACTIVATED_EMAIL_USERNAME');\r\n if (activatedEmailUserName) {\r\n deleteSessionStorage('ACTIVATED_EMAIL_USERNAME');\r\n }\r\n\r\n if (rememberMeVal || activatedEmailUserName) {\r\n vm.UserName = rememberMeVal || activatedEmailUserName;\r\n if (rememberMeVal) {\r\n vm.RememberMe = true;\r\n }\r\n setTimeout(function () {\r\n document.getElementById(\"password\").focus();\r\n }, 10);\r\n } \r\n }\r\n\r\n vm.IsInitialized = true;\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.logout', logoutController);\r\n\r\n logoutController.$inject = [\"$rootScope\", \"core.users.service\"];\r\n\r\n function logoutController($rootScope, userService) {\r\n var vm = this;\r\n\r\n function Init() {\r\n userService.Logout();\r\n }\r\n\r\n $rootScope.Initialized.then(Init);\r\n }\r\n}(window.angular));","(function(angular) {\r\n angular.module('bizPartEngage').controller('core.mypage', mypageController);\r\n angular.module('bizPartEngage').controller('core.mysettings', mysettingsController);\r\n angular.module('bizPartEngage').controller('core.mysecurity', mysecurityController);\r\n angular.module('bizPartEngage').controller('core.mycustomsettings', mycustomsettingsController);\r\n angular.module('bizPartEngage').controller('core.mycolleagues', mycolleaguesController);\r\n angular.module('bizPartEngage').controller('core.myleaderboards', myleaderboardsController);\r\n angular.module('bizPartEngage').controller('core.myrelatedusers', myRelatedUsersController);\r\n\r\n mypageController.$inject = [\"$rootScope\", \"$state\", \"modules.education.service\", \"core.users.service\", \"core.level.serivce\", \r\n \"core.event.statistics.service\", \"core.engage.service\", \"modules.certifications.service\"];\r\n mysettingsController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdDialog\", \"$translate\", \"bizMediabankService\", \r\n \"bizMediabankUploadService\", \"$mdToast\", \"$q\", \"bizCoreService\", \"bizCore\", \"$filter\", \"$scope\"];\r\n mysecurityController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdToast\"];\r\n mycustomsettingsController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdToast\", \"$translate\", \"$scope\"];\r\n mycolleaguesController.$inject = [\"$rootScope\", \"core.unit.service\"];\r\n myleaderboardsController.$inject = [\"$rootScope\", \"core.unit.service\", \"core.leaderboard.service\"];\r\n myRelatedUsersController.$inject = [\"$rootScope\", \"core.users.service\", \"$mdToast\", \"$translate\", \"$stateParams\", \"$q\"];\r\n\r\n function myRelatedUsersController($rootScope, userService, $mdToast, $translate, $stateParams, $q) {\r\n var vm = this;\r\n\r\n vm.Clean = $stateParams.clean === true;\r\n\r\n vm.AddRelatedUser = AddRelatedUser;\r\n vm.RemoveRelatedUser = RemoveRelatedUser;\r\n vm.FilterByRelationType = FilterByRelationType;\r\n vm.Save = Save;\r\n vm.GetGenderDisplayNameForRelationType = GetGenderDisplayNameForRelationType;\r\n vm.IsFormValid = IsFormValid;\r\n\r\n function IsFormValid() {\r\n if (!vm.MyForm.$valid) return false;\r\n\r\n if ($rootScope.MiniSettings.Profile.ShowGender && $rootScope.MiniSettings.Profile.GenderMandatory && vm.RelatedUsers) {\r\n for (var i = 0; i < vm.RelatedUsers.length; i++) {\r\n if (!vm.RelatedUsers[i].Gender) { \r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function GetGenderDisplayNameForRelationType(genderSystemName, relationSystemName, genderDefaultSystemName) {\r\n var key = getGenderOverrideKey(genderSystemName, relationSystemName);\r\n if (vm.GenderOverrides && vm.GenderOverrides[key] && vm.GenderOverrides[key] != key) {\r\n return vm.GenderOverrides[key];\r\n }\r\n return genderDefaultSystemName;\r\n }\r\n\r\n function FilterByRelationType(relationTypeId) {\r\n return function (user) {\r\n if (!user.Relations) return false;\r\n\r\n var relations = user.Relations.GetItemsByValue('RelationTypeId', relationTypeId);\r\n if (!relations) return false;\r\n var byParent = relations.GetItemByValue('ParentUserId', $rootScope.LoggedInUser.Id)\r\n if (byParent !== null) return true;\r\n\r\n return relations.GetItemByValue('ChildUserId', $rootScope.LoggedInUser.Id) !== null;\r\n };\r\n };\r\n\r\n function AddRelatedUser(relationTypeId, focus) {\r\n vm.RelatedUsers.push({\r\n Relations: [{\r\n RelationTypeId: relationTypeId,\r\n ParentUserId: $rootScope.LoggedInUser.Id\r\n }],\r\n Focus: focus\r\n });\r\n }\r\n\r\n function RemoveRelatedUser(user) {\r\n var index = vm.RelatedUsers.indexOf(user);\r\n if (index > -1) {\r\n vm.RelatedUsers.splice(index, 1);\r\n vm.MyForm.$setDirty();\r\n }\r\n }\r\n\r\n function Save() {\r\n userService.UpdateRelatedUsers(vm.RelatedUsers).then(function(response) {\r\n vm.RelatedUsers = response.data || [];\r\n \r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n\r\n vm.HasSaved = true;\r\n\r\n //$mdToast.show($mdToast.simple().content('Successfully saved').position(\"bottom right\"));\r\n $translate('PROFILE.RELATED_USERS_SAVED').then(function (translation) {\r\n $mdToast.show($mdToast.simple().content(translation).position(\"bottom right\"));\r\n });\r\n }, function () {\r\n $mdToast.show($mdToast.simple().content('Error saving').position(\"bottom right\"));\r\n });\r\n } \r\n\r\n function getGenderOverrideKey(genderSystemName, relationSystemName) {\r\n return 'PROFILE.GENDER_OVERRIDES.' + genderSystemName.toUpperCase() + '_' + relationSystemName.toUpperCase();\r\n }\r\n\r\n function Init() {\r\n $q.all([\r\n userService.GetRelationTypes(),\r\n userService.GetGenders(),\r\n userService.GetRelatedUsers()\r\n ]).then(function (result) {\r\n vm.RelationTypes = result[0].data;\r\n vm.Genders = result[1].data;\r\n vm.RelatedUsers = result[2].data || [];\r\n\r\n if (vm.Clean && vm.RelatedUsers.length === 0 && $rootScope.MiniSettings[\"Profile\"].AutoExpandRelatedUserSystemNamesOnClean.length) {\r\n var autoExpandSystemNames = $rootScope.MiniSettings[\"Profile\"].AutoExpandRelatedUserSystemNamesOnClean;\r\n for (var i = 0; i < vm.RelationTypes.length; i++) {\r\n if (autoExpandSystemNames.includes(vm.RelationTypes[i].SystemName)) {\r\n vm.AddRelatedUser(vm.RelationTypes[i].Id);\r\n }\r\n }\r\n }\r\n\r\n var genderOverrideKeys = [];\r\n for (var i = 0; i < vm.RelationTypes.length; i++) {\r\n for (var j = 0; j < vm.Genders.length; j++) {\r\n genderOverrideKeys.push(getGenderOverrideKey(vm.Genders[j].SystemName, vm.RelationTypes[i].SystemName))\r\n }\r\n }\r\n\r\n if (genderOverrideKeys.length > 0) {\r\n $translate(genderOverrideKeys).then(function (translations) {\r\n vm.GenderOverrides = translations;\r\n });\r\n }\r\n }) \r\n }\r\n\r\n $rootScope.Initialized.then(Init);\r\n }\r\n\r\n function mycustomsettingsController($rootScope, userService, $mdToast, $translate, $scope) {\r\n var vm = this;\r\n vm.MyForm = null;\r\n vm.Initialized = false;\r\n \r\n vm.Init = Init;\r\n vm.Save = Save;\r\n vm.IsFieldRestricted = IsFieldRestricted;\r\n vm.IsFieldMandatory = IsFieldMandatory;\r\n\r\n function IsFieldMandatory(customField) {\r\n if (customField.IsMandatory) {\r\n return true;\r\n }\r\n\r\n const group = customField.CustomSettings?.GroupName;\r\n if (!group) return false;\r\n\r\n const groupMandatoryAllOrNone = customField.CustomSettings?.GroupMandatoryAllOrNone;\r\n if (!groupMandatoryAllOrNone) return false;\r\n\r\n for (var i = 0; i < vm.User.CustomData.length; i++) {\r\n const customField = vm.User.CustomData[i];\r\n if (customField.CustomSettings?.GroupName === group && customField.Value) {\r\n return true;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n\r\n function IsFieldRestricted(field) {\r\n if (!vm.RestrictedFields) return false;\r\n\r\n var f = vm.RestrictedFields.find(rf => rf.FieldType === 2 && rf.Name.toLowerCase() === field.toLowerCase());\r\n return f !== undefined;\r\n }\r\n\r\n function Save() {\r\n\r\n if (vm.User.CustomData) {\r\n for (var i = 0; i < vm.User.CustomData.length; i++) {\r\n var customField = vm.User.CustomData[i];\r\n if (customField.SelectedOption) {\r\n customField.Value = customField.SelectedOption.Id;\r\n }\r\n }\r\n }\r\n\r\n userService.SaveCustomProfileData(vm.User).then(SuccessCallback, HandleError);\r\n \r\n function SuccessCallback(response) {\r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n \r\n $mdToast.show($mdToast.simple().content('Successfully saved').position(\"bottom right\")); \r\n }\r\n\r\n function HandleError() {\r\n console.log(\"error!\")\r\n $mdToast.show($mdToast.simple().content('Error saving profile').position(\"bottom right\"));\r\n }\r\n }\r\n\r\n function Init()\r\n {\r\n userService.GetProfile().then(SuccessCallback);\r\n userService.GetProfileRestrictedFields().then(GetProfileRestrictedFieldsSuccess);\r\n\r\n $translate([\r\n 'CORE.EXTSETTINGS_DISABLED_TEXT'\r\n ]).then(GetTranslationsCallback);\r\n\r\n function SuccessCallback(response) {\r\n vm.Initialized = true;\r\n vm.User = response.data;\r\n console.log(\"vm.User\", vm.User);\r\n\r\n if (vm.User.CustomData) {\r\n var currentGroup = null;\r\n for (var i = 0; i < vm.User.CustomData.length; i++) {\r\n var customField = vm.User.CustomData[i];\r\n var group = customField.CustomSettings?.GroupName ?? null;\r\n if (currentGroup !== group && (i > 0 || group)) {//new group on first item only if there is a group\r\n customField.NewGroup = true;\r\n }\r\n\r\n currentGroup = group;\r\n\r\n if (customField.CustomSettings?.Options) {\r\n const selected = customField.CustomSettings.Options.GetItemByValue('Id', customField.Value);\r\n if (selected) {\r\n customField.SelectedOption = selected;\r\n }\r\n }\r\n }\r\n\r\n $scope.$watch('vm.User.CustomData', function (newValue, oldValue) {\r\n if (vm.MyForm?.$dirty) {\r\n return;\r\n }\r\n\r\n if (newValue && oldValue) {\r\n for (var i = 0; i < newValue.length; i++) {\r\n if (newValue[i].SelectedOption !== oldValue[i].SelectedOption) {\r\n vm.MyForm.$setDirty();\r\n }\r\n }\r\n }\r\n }, true);\r\n }\r\n }\r\n\r\n function GetProfileRestrictedFieldsSuccess(response) {\r\n vm.RestrictedFields = response.data;\r\n }\r\n\r\n function GetTranslationsCallback(translations) {\r\n vm.CustomSettingsDisabledText = '

These settings are disabled

';\r\n\r\n var t = translations['CORE.EXTSETTINGS_DISABLED_TEXT'].toString();\r\n if (t !== 'CORE.EXTSETTINGS_DISABLED_TEXT') {\r\n vm.CustomSettingsDisabledText = t;\r\n }\r\n } \r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n\r\n function mysecurityController($rootScope, userService, $mdToast) {\r\n var vm = this;\r\n vm.MyForm = null;\r\n vm.OldPassword;\r\n vm.NewPassword;\r\n vm.NewPasswordRepeat;\r\n vm.ShowPasswords = false;\r\n\r\n vm.Save = Save;\r\n vm.ToggleShowPassword = ToggleShowPassword;\r\n\r\n function ToggleShowPassword() {\r\n vm.ShowPasswords = !vm.ShowPasswords;\r\n \r\n document.getElementById('newPassword').setAttribute('type', vm.ShowPasswords ? 'text' : 'password');\r\n document.getElementById('newPasswordRepeat').setAttribute('type', vm.ShowPasswords ? 'text' : 'password');\r\n }\r\n\r\n function IsPasswordValidToSave() {\r\n if (vm.OldPassword && vm.OldPassword != \"\" && vm.NewPassword && vm.NewPassword != \"\" && vm.NewPassword === vm.NewPasswordRepeat)\r\n return true;\r\n\r\n return false;\r\n }\r\n\r\n function Save() {\r\n if (IsPasswordValidToSave() === false)\r\n return false;\r\n\r\n userService.UpdateMyPassword(vm.NewPassword, vm.OldPassword).then(UpdateMyPasswordSuccess);\r\n\r\n function UpdateMyPasswordSuccess(response) {\r\n \t$mdToast.show($mdToast.simple().content(response.data).position(\"bottom right\"));\r\n\r\n \tvm.OldPassword = undefined;\r\n \tvm.NewPassword = undefined;\r\n vm.NewPasswordRepeat = undefined;\r\n\r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n\r\n return true;\r\n }\r\n }\r\n }\r\n \r\n function mypageController($rootScope, $state, educationService, userService, levelService, eventStatisticsService, engageService, certificationsService) {\r\n var vm = this;\r\n vm.PageMax = 20;\r\n vm.UserStats = undefined;\r\n vm.AuthToken = getBizPartAuthToken();\r\n vm.Mascot = mascot;\r\n\r\n vm.EducationCount = -1;\r\n vm.BlogCount = -1;\r\n vm.VideoCount = -1;\r\n vm.ScormCount = -1;\r\n vm.QuizCount = -1;\r\n vm.TotalEducationCount = -1;\r\n\r\n vm.Notifications = [];\r\n vm.NotificationsPage = 1;\r\n vm.ActivityLog = [];\r\n vm.ActivityLogPage = 1;\r\n vm.GainMoreExperience = [];\r\n vm.GainMoreExperiencePage = 1;\r\n vm.LastGainedExperience = [];\r\n vm.LastGainedExperiencePage = 1;\r\n vm.CertificationCount = 0;\r\n vm.CompletedEducationCount = 0;\r\n\r\n vm.GetCompletedCount = GetCompletedCount;\r\n vm.GetLoggedInUserNotifications = GetLoggedInUserNotifications;\r\n vm.GetLoggedInUserExperiencePointHistory = GetLoggedInUserExperiencePointHistory;\r\n vm.GetAllEventStatisticsForUser = GetAllEventStatisticsForUser;\r\n vm.GetSuggestions = GetSuggestions;\r\n vm.GoToSuggestion = GoToSuggestion;\r\n vm.GetSuggestionIcon = GetSuggestionIcon;\r\n vm.ShowCertificates = ShowCertificates;\r\n vm.GetUserLogStats = GetUserLogStats;\r\n vm.GetStatCount = GetStatCount;\r\n vm.Initialize = Initialize;\r\n vm.GoToItem = GoToItem;\r\n\r\n function GoToItem(item) { \r\n //The types that only should be clickable for the users own items\r\n if ((item.Settings && ~~item.Settings.ObjectOwnerUserId > 0 && item.Settings.ObjectOwnerUserId === $rootScope.LoggedInUser.Id)) {\r\n switch (item.ObjectType) {\r\n case 'GOAL':\r\n $state.go(\"base.modules.goals.onegoal\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'TODO':\r\n $state.go(\"base.modules.goals.onetask\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITY':\r\n $state.go(\"base.modules.goals.activity\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n }\r\n }\r\n\r\n //The types that should be clickable for any user (as long as they have access, which should be fixed on backend)\r\n switch (item.ObjectType) {\r\n case 'HTML5':\r\n $state.go(\"base.modules.html5education\", { id: item.ObjectId });\r\n break;\r\n case 'MediabankFile':\r\n $state.go(\"base.modules.mediafile\", { id: item.ObjectId });\r\n break;\r\n case 'Blog':\r\n $state.go(\"base.modules.blog\", { id: item.ObjectId });\r\n break;\r\n case 'SCORM':\r\n location.href = siteRootPath + \"SCORM/\" + item.ObjectId;\r\n break;\r\n } \r\n }\r\n\r\n function GetStatCount(types) {\r\n var count = -1;\r\n if(types && vm.UserStats) {\r\n //We handle multiple types...\r\n if(types.length > 1) {\r\n for(var i = 0; i < types.length; i++) {\r\n for(var y = 0; y < vm.UserStats.EngageObjectLogs.length; y++) {\r\n if(vm.UserStats.EngageObjectLogs[y].EngageObjectType === types[i] && vm.UserStats.EngageObjectLogs[y].Passed === true) {\r\n count++;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n for(var i = 0; i < vm.UserStats.EngageObjectLogs.length; i++) {\r\n if(vm.UserStats.EngageObjectLogs[i].EngageObjectType === types && vm.UserStats.EngageObjectLogs[i].Passed === true) {\r\n count++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function GetUserLogStats() {\r\n userService.GetUserLogStats().then(function(response) {\r\n vm.UserStats = response.data;\r\n\r\n var eduCount = 0;\r\n var blogCount = 0;\r\n var videoCount = 0;\r\n var scormCount = 0;\r\n var quizCount = 0;\r\n for (var i = 0; i < vm.UserStats.EngageObjectLogs.length; i++) {\r\n if (vm.UserStats.EngageObjectLogs[i].Passed === true) {\r\n switch (vm.UserStats.EngageObjectLogs[i].EngageObjectType) {\r\n case 1:\r\n eduCount++;\r\n break;\r\n case 2:\r\n blogCount++;\r\n break;\r\n case 3:\r\n videoCount++;\r\n break;\r\n case 4:\r\n scormCount++;\r\n break;\r\n case 5:\r\n quizCount++;\r\n break;\r\n }\r\n\r\n } \r\n }\r\n \r\n vm.EducationCount = eduCount;\r\n vm.BlogCount = blogCount;\r\n vm.VideoCount = videoCount;\r\n vm.ScormCount = scormCount;\r\n vm.QuizCount = quizCount;\r\n vm.TotalEducationCount = eduCount + scormCount;\r\n\r\n console.log(\"count done\"); \r\n });\r\n }\r\n\r\n function ShowCertificates(){\r\n \t$mdDialog.show({\r\n \t\ttemplateUrl: siteRootPath + \"Frontend/Core/Views/mypagecertificates.html\",\r\n \t\tcontrollerAs: \"vm\",\r\n \t\tcontroller: certificateController,\r\n\t\t\t\tbindToController: true\r\n \t});\r\n\t\t\t\r\n \tcertificateController.$inject = [\"$mdDialog\"];\r\n\r\n \tfunction certificateController($mdDialog) {\r\n \t\tvar vm = this;\r\n\r\n \t\tvm.GetCertificates = GetCertificates;\r\n\r\n \t\tfunction GetCertificates() {\r\n\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function GetCompletedCount() {\r\n educationService.GetCompletedCount().then(GetCompletedCountSuccess);\r\n\r\n function GetCompletedCountSuccess(response) {\r\n vm.CompletedEducationCount = response.data.Education;\r\n vm.CompletedEducationCount += response.data.CertificationEducation;\r\n\r\n vm.CertificationCount = response.data.Certification;\r\n }\r\n }\r\n\r\n function GetLoggedInUserNotifications(page) {\r\n userService.GetLoggedInUserNotifications(vm.PageMax, page).then(GetLoggedInUserNotificationsSuccess);\r\n\r\n function GetLoggedInUserNotificationsSuccess(response) {\r\n vm.Notifications = response.data;\r\n }\r\n }\r\n\r\n function GetLoggedInUserExperiencePointHistory(page) {\r\n levelService.GetLoggedInUserExperiencePointHistory(vm.PageMax, page).then(GetLoggedInUserExperiencePointHistorySuccess);\r\n\r\n function GetLoggedInUserExperiencePointHistorySuccess(response) {\r\n vm.LastGainedExperience = response.data;\r\n }\r\n }\r\n\r\n function GetAllEventStatisticsForUser(page) {\r\n eventStatisticsService.GetAllEventStatisticsForUser(page, vm.PageMax).then(GetAllEventStatisticsForUserSuccess);\r\n\r\n function GetAllEventStatisticsForUserSuccess(response) {\r\n vm.ActivityLog = response.data;\r\n }\r\n }\r\n\r\n function GetSuggestions(page) {\r\n engageService.GetSuggestions(page, vm.PageMax).then(GetSuggestionsSuccess);\r\n\r\n function GetSuggestionsSuccess(response) {\r\n vm.GainMoreExperience = response.data;\r\n }\r\n }\r\n\r\n function GoToSuggestion(item) {\r\n switch (item.ControlType) {\r\n case \"HTML5EDUCATION\":\r\n $state.go('base.modules.html5education', {id: item.Value.Id});\r\n break;\r\n case \"MISSION\":\r\n $state.go('base.modules.missionsview', {id: item.Value.Id});\r\n break;\r\n }\r\n }\r\n\r\n function GetSuggestionIcon(item) {\r\n switch (item.ControlType) {\r\n case \"HTML5EDUCATION\":\r\n return \"fa-graduation-cap\";\r\n case \"MISSION\":\r\n return \"fa-star\";\r\n }\r\n }\r\n\r\n function GetCertificationsForUser() {\r\n certificationsService.GetCertificationsForUser().then(function(response) {\r\n vm.UserCerts = response.data;\r\n });\r\n }\r\n\r\n function Initialize() {\r\n vm.GetCompletedCount();\r\n vm.GetLoggedInUserNotifications(vm.NotificationsPage);\r\n vm.GetAllEventStatisticsForUser(vm.ActivityLogPage);\r\n vm.GetSuggestions(vm.GainMoreExperiencePage);\r\n\r\n vm.GetUserLogStats();\r\n GetCertificationsForUser();\r\n\r\n if (IsPortalSettingTrue('IsLevelSystemEnabled')) {\r\n vm.GetLoggedInUserExperiencePointHistory(vm.LastGainedExperiencePage);\r\n }\r\n }\r\n\r\n vm.Initialize();\r\n }\r\n\r\n function mysettingsController($rootScope, userService, $mdDialog, $translate, bizMediabankService, bizMediabankUploadService, $mdToast, $q, bizCoreService, bizCoreProvider, $filter, $scope) {\r\n var vm = this;\r\n vm.MyForm = null;\r\n vm.Initialized = false;\r\n vm.GendersInitialized = $q.defer();\r\n vm.CountriesInitialized = $q.defer();\r\n vm.UnitTypesInitialized = $q.defer();\r\n vm.UserUnitsInitialized = $q.defer();\r\n \r\n vm.GetUser = GetUser;\r\n vm.UpdateCustomFieldValue = UpdateCustomFieldValue;\r\n vm.GetCustomFieldValue = GetCustomFieldValue;\r\n \r\n vm.AllowSms = false;\r\n vm.PortalCustomerName = portalCustomerName;\r\n vm.NotificationSettings = notificationSettings;\r\n \r\n vm.SaveMyDetails = SaveMyDetails;\r\n vm.Unregister = Unregister;\r\n vm.AskToUnregister = AskToUnregister;\r\n vm.UpdateAllowSMSForLoggedInUser = UpdateAllowSMSForLoggedInUser;\r\n vm.GetLoggedInUserSetting = GetLoggedInUserSetting;\r\n vm.GetLoggedInUserSettingAsBoolean = GetLoggedInUserSettingAsBoolean;\r\n vm.SetFile = SetFile;\r\n vm.SetTempFile = SetTempFile;\r\n vm.GetProfileImageUrl = GetProfileImageUrl;\r\n vm.FavoriteTagFilter = FavoriteTagFilter;\r\n vm.SetSelectedUserType = SetSelectedUserType;\r\n vm.GetProfileRestrictedFields = GetProfileRestrictedFields;\r\n vm.IsFieldRestricted = IsFieldRestricted;\r\n vm.SetGender = SetGender;\r\n vm.IsFormValid = IsFormValid;\r\n \r\n vm.Initialize = Initialize;\r\n\r\n function IsFormValid() {\r\n if (!vm.MyForm.$valid) return false;\r\n\r\n if ($rootScope.MiniSettings.Profile.ShowGender && $rootScope.MiniSettings.Profile.GenderMandatory && !vm.User.Gender) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function GetProfileImageUrl() {\r\n if (!vm.User)\r\n return $filter('siteroot')('Images/Common/no_user_photo.png');\r\n\r\n return (vm.TempFile ? ($filter('ngfDataUrl')(vm.TempFile)) : ($filter('siteroot')(vm.User.Photo ? vm.User.Photo : 'Images/Common/no_user_photo.png')));\r\n }\r\n\r\n function IsFieldRestricted(field) {\r\n if (!vm.RestrictedFields) return false;\r\n\r\n var f = vm.RestrictedFields.find(rf => rf.FieldType === 1 && rf.Name.toLowerCase() === field.toLowerCase());\r\n return f !== undefined;\r\n }\r\n\r\n function GetProfileRestrictedFields() {\r\n userService.GetProfileRestrictedFields().then(GetProfileRestrictedFieldsSuccess);\r\n\r\n function GetProfileRestrictedFieldsSuccess(response) {\r\n vm.RestrictedFields = response.data;\r\n }\r\n }\r\n\r\n function GetUser() {\r\n userService.GetProfile().then(GetLoggedInUserSuccess); //GetLoggedInUserFromDB\r\n \r\n function GetLoggedInUserSuccess(response) {\r\n vm.Initialized = true;\r\n vm.User = response.data;\r\n vm.GetCustomFieldValue();\r\n vm.SetSelectedUserType();\r\n vm.SetGender();\r\n SetCountry();\r\n SetUnits();\r\n\r\n vm.HadMiddleNameOnLastFetch = vm.User.MiddleName && vm.User.MiddleName.length > 0;\r\n }\r\n }\r\n\r\n function SetUnits() {\r\n vm.UnitTypesInitialized.promise.then(function () {\r\n //todo: support for multiple units of the same type, because that might be the case, right?\r\n for (var i = 0; i < vm.User.Units.length; i++) {\r\n var ut = vm.AllowedUnitTypesToEdit.GetItemByValue('Id', vm.User.Units[i].UnitTypeId);\r\n if (ut) {\r\n var unit = ut.Units.GetItemByValue('Id', vm.User.Units[i].Id);\r\n if (unit) {\r\n ut.SelectedUnit = unit;\r\n }\r\n } \r\n }\r\n \r\n console.log(\"unittypes init user\", vm.User);\r\n\r\n vm.UserUnitsInitialized.resolve('');\r\n });\r\n }\r\n\r\n function SetCountry() {\r\n vm.CountriesInitialized.promise.then(function () {\r\n if (vm.User.CountryId > 0) {\r\n var userCountry = vm.Countries.filter(c => c.Id === vm.User.CountryId);\r\n if (userCountry.length === 1) {\r\n vm.SelectedCountry = userCountry[0];\r\n } else {\r\n console.log(\"more than one country matched? something is wrong...\")\r\n }\r\n \r\n }\r\n });\r\n }\r\n\r\n function SetGender() {\r\n vm.GendersInitialized.promise.then(function () {\r\n if (vm.User.Gender) {\r\n var userGender = vm.Genders.filter(g => g.SystemName.toLowerCase() == vm.User.Gender.toLowerCase());\r\n if (userGender.length === 1) {\r\n vm.User.Gender = userGender[0].SystemName;//in case there is a case difference\r\n } else if (userGender.length === 0) {\r\n vm.Genders.push({\r\n SystemName: vm.User.Gender,\r\n DisplayName: vm.User.Gender\r\n });\r\n } else {\r\n console.log(\"more than one gender matched? something is wrong...\")\r\n }\r\n }\r\n })\r\n }\r\n\r\n function GetCustomFieldValue() {\r\n userService.GetCustomFieldValue(1, vm.User.Id).then(GetCustomFieldValueSuccess);\r\n\r\n function GetCustomFieldValueSuccess(response) {\r\n if(response.data)\r\n vm.CompanyNumber = response.data.Value ? response.data.Value : undefined;\r\n }\r\n }\r\n\r\n function UpdateCustomFieldValue() {\r\n userService.UpdateCustomFieldValue(1, vm.User.Id, vm.CompanyNumber).then(UpdateCustomFieldValueSuccess);\r\n\r\n function UpdateCustomFieldValueSuccess(response) {\r\n }\r\n }\r\n\r\n function SetTempFile(files) {\r\n \tif (!files.length)\r\n \t\treturn;\r\n\t\t\t\t\r\n \tvm.TempFile = files[0];\r\n console.log(vm.TempFile);\r\n\r\n vm.MyForm.$setDirty();\r\n }\r\n\r\n function SetFile(file) {\r\n \tif (file.length > 0) {\r\n \t\tvm.File = file[0];\r\n\r\n \t\tvar settings = {\r\n \t\t\tFileType: bizMediabankService.FileTypes.Image,\r\n \t\t\tFileLocation: bizMediabankService.UploadLocations.UserProfile,\r\n \t\t\tFilePattern: '',\r\n \t\t\tIsPrivate: true,\r\n \t\t\tIsInvisible: true,\r\n \t\t\tIsPrivateControlHidden: true,\r\n \t\t\tIsInvisibleControlHidden: true,\r\n \t\t\tIsUser: true\r\n \t\t}\r\n\r\n \t\tvar promise = bizMediabankUploadService.UploadFile(vm.File, vm.File.name, '', bizMediabankService.UploadLocations.UserProfile, true, true, settings, [], []);\r\n \t\tpromise.then(UploadFileSuccessCallback);\r\n\r\n \t\treturn promise;\r\n\r\n \t\tfunction UploadFileSuccessCallback(response) {\r\n \t\t\tif (response) {\r\n \t\t\t\tvar status = response.data;\r\n \t\t\t\tvm.File = status.Object;\r\n \t\t\t\tvm.User.Photo = vm.File.FileUrl;\r\n \t\t\t\t$rootScope.LoggedInUser.Photo = vm.File.FileUrl;\r\n \t\t\t\tvm.TempFile = undefined;\r\n userService.SaveBasicProfile(vm.User);\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function SaveMyDetails(showToast) {\r\n if (vm.TempFile)\r\n vm.SetFile([vm.TempFile]).then(SuccessCallback);\r\n else {\r\n vm.User.UserTypeId = (vm.SelectedUserType && vm.SelectedUserType.Id > 0 ? vm.SelectedUserType.Id : -1);\r\n vm.User.CountryId = (vm.SelectedCountry && vm.SelectedCountry.Id > 0 ? vm.SelectedCountry.Id : -1);\r\n \r\n //todo: support for multiple units of the same type, because that might be the case, right?\r\n if (vm.AllowedUnitTypesToEdit) {\r\n for (var i = 0; i < vm.AllowedUnitTypesToEdit.length; i++) {\r\n var ut = vm.AllowedUnitTypesToEdit[i];\r\n var currentUserUnitsForType = vm.User.Units.filter(u => u.UnitTypeId === ut.Id);\r\n if (currentUserUnitsForType.length > 1) {\r\n console.error(\"Multiple units of the same type not supported yet\")\r\n continue;//no support for multiple units of the same type yet\r\n }\r\n \r\n var currentUserUnit = currentUserUnitsForType.length === 1 ? currentUserUnitsForType[0] : null;\r\n\r\n var removeCurrentUnit = currentUserUnit && (!ut.SelectedUnit || ut.SelectedUnit.Id !== currentUserUnit.Id);\r\n var addNewUnit = ut.SelectedUnit && (!currentUserUnit || ut.SelectedUnit.Id !== currentUserUnit.Id);\r\n\r\n if (removeCurrentUnit) {\r\n vm.User.Units = vm.User.Units.filter(u => u.Id !== currentUserUnit.Id);\r\n }\r\n\r\n if (addNewUnit) {\r\n vm.User.Units.push(ut.SelectedUnit);\r\n } \r\n }\r\n }\r\n \r\n userService.SaveBasicProfile(vm.User).then(SuccessCallback);\r\n }\r\n\r\n \tvm.UpdateAllowSMSForLoggedInUser();\r\n\r\n if (vm.CompanyNumber && vm.CompanyNumber != \"\")\r\n vm.UpdateCustomFieldValue();\r\n\r\n function SuccessCallback(response) {\r\n \t$rootScope.LoggedInUser = angular.copy(vm.User);\r\n\r\n vm.IsEditMode = false;\r\n\r\n vm.MyForm.$setPristine();\r\n vm.MyForm.$setUntouched();\r\n\r\n \tif (showToast){\r\n \t\t$translate('CORE.DETAILSUPDATED').then(function(translation) {\r\n \t\t\t$mdToast.show($mdToast.simple().content(translation).position(\"bottom right\"));\r\n \t\t});\r\n \t}\r\n }\r\n }\r\n\r\n function Unregister() {\r\n userService.DeleteMe().then(DeleteMeSuccess);\r\n\r\n function DeleteMeSuccess() {\r\n window.location.href = siteRootPath;\r\n }\r\n }\r\n\r\n function AskToUnregister() {\r\n $translate('CORE.ASKTOUNREGISTER').then(function(translation) {\r\n $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n controller: profileDialogController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n Text: translation,\r\n IsSureCheck: true\r\n },\r\n bindToController: true\r\n }).then(function (response) {\r\n if (response) {\r\n vm.Unregister();\r\n }\r\n });\r\n });\r\n }\r\n\r\n function UpdateAllowSMSForLoggedInUser() {\r\n userService.UpdateAllowSMSForLoggedInUser(vm.AllowSms).then(UpdateAllowSMSForLoggedInUserSuccess).catch(UpdateAllowSMSForLoggedInUserError);\r\n\r\n function UpdateAllowSMSForLoggedInUserSuccess(response) {\r\n\r\n }\r\n\r\n function UpdateAllowSMSForLoggedInUserError(err) {\r\n vm.AllowSms = !vm.AllowSms;\r\n\r\n $translate('CORE.ERROR.SOMETHING').then(function (translation) {\r\n $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n controller: profileDialogController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n Text: translation\r\n },\r\n bindToController: true\r\n }).then(function (response) {\r\n });\r\n });\r\n }\r\n }\r\n\r\n function GetLoggedInUserSetting(key, callback) {\r\n userService.GetLoggedInUserSetting(key).then(callback);\r\n }\r\n\r\n function GetLoggedInUserSettingAsBoolean(key, callback) {\r\n userService.GetLoggedInUserSettingAsBoolean(key).then(callback);\r\n }\r\n\r\n function FavoriteTagFilter(tag) {\r\n \treturn vm.ShowMoreFavorites || tag.Favorite === undefined || tag.Favorite;\r\n }\r\n\r\n function SetSelectedUserType() {\r\n if (vm.UserTypes && vm.User) {\r\n vm.SelectedUserType = vm.UserTypes.GetItemByValue('Id', vm.User.UserTypeId);\r\n }\r\n }\r\n\r\n function Initialize() {\r\n\r\n userService.GetGenders().then(GetGendersCallback);\r\n\r\n vm.GetProfileRestrictedFields();\r\n \tvm.GetUser();\r\n\r\n vm.GetLoggedInUserSettingAsBoolean('blnAllowSMS', function(response) {\r\n vm.AllowSms = response.data;\r\n });\r\n\r\n bizCoreService.GetAllTags($rootScope.LoggedInUser.CurrentCultureId).then(GetTagsCallback);\r\n userService.GetUserTypes().then(GetUserTypesCallback);\r\n bizCoreService.GetAllActiveCountries().then(GetAllActiveCountriesCallback);\r\n userService.GetProfileAllowedUnitsToEdit().then(GetProfileAllowedUnitsToEditCallback);\r\n\r\n function GetTagsCallback(response) {\r\n \tvm.Tags = response.data;\r\n }\r\n\r\n function GetUserTypesCallback(response) {\r\n vm.UserTypes = response.data;\r\n vm.UserTypes = $filter('orderBy')(vm.UserTypes, 'Name');\r\n vm.SetSelectedUserType();\r\n }\r\n\r\n function GetAllActiveCountriesCallback(response) {\r\n vm.Countries = response.data;\r\n vm.CountriesInitialized.resolve('');\r\n }\r\n\r\n function GetGendersCallback(response) {\r\n var genders = BizPartCoreHelpers.getResponseValue(response);\r\n if ($rootScope.MiniSettings[\"Profile\"].CustomGenderFilterFn) {\r\n vm.Genders = $rootScope.MiniSettings[\"Profile\"].CustomGenderFilterFn(genders);\r\n } else {\r\n vm.Genders = genders;\r\n } \r\n\r\n vm.GendersInitialized.resolve('');\r\n }\r\n\r\n function GetProfileAllowedUnitsToEditCallback(response) {\r\n vm.AllowedUnitsToEdit = response.data;\r\n vm.AllowedUnitTypesToEdit = [];\r\n for (var i = 0; i < vm.AllowedUnitsToEdit.length; i++) {\r\n var ut = vm.AllowedUnitTypesToEdit.GetItemByValue('Id', vm.AllowedUnitsToEdit[i].UnitTypeId);\r\n if (!ut) {\r\n ut = {\r\n Id: vm.AllowedUnitsToEdit[i].UnitTypeId,\r\n Name: vm.AllowedUnitsToEdit[i].UnitTypeName,\r\n Units: []\r\n }\r\n vm.AllowedUnitTypesToEdit.push(ut);\r\n }\r\n ut.Units.push(vm.AllowedUnitsToEdit[i]);\r\n } \r\n vm.UnitTypesInitialized.resolve('');\r\n }\r\n\r\n $scope.$watch('vm.SelectedCountry', function (newValue, oldValue) { \r\n if (vm.MyForm?.$dirty) {\r\n return;\r\n }\r\n\r\n if (oldValue && newValue != oldValue) {\r\n vm.MyForm.$setDirty();\r\n }\r\n }, true);\r\n\r\n vm.UserUnitsInitialized.promise.then(function () {\r\n $scope.$watch('vm.AllowedUnitTypesToEdit', function (newValue, oldValue) {\r\n if (vm.MyForm?.$dirty || !newValue || !oldValue) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < newValue.length; i++) {\r\n if (newValue[i].SelectedUnit?.Id !== oldValue[i].SelectedUnit?.Id) {\r\n console.log(\"unit changed, new\", newValue[i].SelectedUnit?.Id);\r\n console.log(\"unit changed, old\", oldValue[i].SelectedUnit?.Id);\r\n vm.MyForm.$setDirty();\r\n }\r\n }\r\n\r\n }, true);\r\n }) \r\n }\r\n\r\n profileDialogController.$inject = [\"$mdDialog\"];\r\n\r\n function profileDialogController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.Close = Close;\r\n vm.Ok = Ok;\r\n\r\n function Close() {\r\n $mdDialog.cancel();\r\n }\r\n\r\n function Ok() {\r\n $mdDialog.hide(true);\r\n }\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Initialize);\r\n\r\n \r\n }\r\n\r\n function mycolleaguesController($rootScope, unitService) {\r\n var vm = this;\r\n vm.MyUnit = {};\r\n vm.UnitUsers = [];\r\n vm.Units = [];\r\n vm.ShowSpecificUnit = false;\r\n\r\n vm.GetUsersInUnit = GetUsersInUnit;\r\n vm.Initialize = Initialize;\r\n\r\n function InitializeUnit() {\r\n if ($rootScope.LoggedInUser.Units.length == 1) {\r\n vm.MyUnit = $rootScope.LoggedInUser.Units[0];\r\n\r\n if (~~vm.MyUnit.ParentId > 0) {\r\n GetUnitsByParent(~~vm.MyUnit.ParentId);\r\n }\r\n else {\r\n GetUsersInUnit(vm.MyUnit.Id);\r\n }\r\n }\r\n else {\r\n //Handle multiple units...\r\n }\r\n }\r\n\r\n function GetUsersInUnit(unitId) {\r\n vm.UnitUsers = [];\r\n unitService.GetUsersInUnit(unitId).then(GetUsersInUnitSuccess);\r\n\r\n function GetUsersInUnitSuccess(response) {\r\n vm.UnitUsers = response.data;\r\n }\r\n }\r\n\r\n function GetUnitsByParent(parentId) {\r\n unitService.GetUnitsByParent(parentId).then(GetUnitsByParentSuccess);\r\n\r\n function GetUnitsByParentSuccess(response) {\r\n vm.Units = response.data;\r\n }\r\n }\r\n\r\n function Initialize() {\r\n InitializeUnit();\r\n }\r\n\r\n vm.Initialize();\r\n }\r\n\r\n function myleaderboardsController($rootScope, unitService, leaderboardService) {\r\n var vm = this;\r\n vm.MyUnit = {};\r\n vm.MainUnitLeaderboard = [];\r\n vm.MainUnitLeaderboardMonth = [];\r\n vm.MainUnitLeaderboardYear = [];\r\n vm.UnitLeaderboard = [];\r\n vm.UnitLeaderboardMonth = [];\r\n vm.UnitLeaderboardYear = [];\r\n vm.Limit = 5;\r\n\r\n vm.Initialize = Initialize;\r\n vm.InitializeUnit = InitializeUnit;\r\n vm.GetMainUnitLeaderboard = GetMainUnitLeaderboard;\r\n vm.GetMainUnitLeaderboardBetweenDates = GetMainUnitLeaderboardBetweenDates;\r\n vm.GetUnitLeaderboard = GetUnitLeaderboard;\r\n vm.GetUnitLeaderboardBetweenDates = GetUnitLeaderboardBetweenDates;\r\n\r\n function InitializeUnit() {\r\n if ($rootScope.LoggedInUser.Units.length <= 1) {\r\n \tvm.MyUnit = $rootScope.LoggedInUser.Units[0];\r\n }\r\n else {\r\n //Handle multiple units...\r\n }\r\n }\r\n\r\n function GetMainUnitLeaderboard() {\r\n leaderboardService.GetMainUnitLeaderboard(vm.Limit).then(GetMainUnitLeaderboardSuccess);\r\n\r\n function GetMainUnitLeaderboardSuccess(response) {\r\n vm.MainUnitLeaderboard = response.data;\r\n\r\n console.log('vm.MainUnitLeaderboard', vm.MainUnitLeaderboard);\r\n }\r\n }\r\n\r\n function GetMainUnitLeaderboardBetweenDates(startTime, endTime, callback) {\r\n leaderboardService.GetMainUnitLeaderboardBetweenDates(vm.Limit, startTime, endTime).then(callback);\r\n }\r\n\r\n function GetUnitLeaderboard() {\r\n leaderboardService.GetUnitLeaderboard(vm.Limit).then(GetUnitLeaderboardSuccess);\r\n\r\n function GetUnitLeaderboardSuccess(response) {\r\n vm.UnitLeaderboard = response.data;\r\n }\r\n }\r\n\r\n function GetUnitLeaderboardBetweenDates(startTime, endTime, callback) {\r\n leaderboardService.GetUnitLeaderboardBetweenDates(vm.Limit, startTime, endTime).then(callback);\r\n }\r\n\r\n function Initialize() {\r\n \tInitializeUnit();\r\n\r\n\t\t\tif (vm.MyUnit && vm.MyUnit.ParentId){\r\n\t\t\t\tvm.GetMainUnitLeaderboard();\r\n\t\t\t\tvm.GetMainUnitLeaderboardBetweenDates(moment().startOf('month').format('YYYY-MM-DD hh:mm'), moment().endOf('month').format('YYYY-MM-DD hh:mm'), MonthLeaderboardCallback);\r\n\t\t\t\tvm.GetMainUnitLeaderboardBetweenDates(moment().startOf('year').format('YYYY-MM-DD hh:mm'), moment().endOf('year').format('YYYY-MM-DD hh:mm'), YearLeaderboardCallback);\r\n\t\t\t}\r\n\r\n\t\t\tif (vm.MyUnit){\r\n\t\t\t\tvm.GetUnitLeaderboard();\r\n\t\t\t\tvm.GetUnitLeaderboardBetweenDates(moment().startOf('month').format('YYYY-MM-DD hh:mm'), moment().endOf('month').format('YYYY-MM-DD hh:mm'), MonthUnitLeaderboardCallback);\r\n\t\t\t\tvm.GetUnitLeaderboardBetweenDates(moment().startOf('year').format('YYYY-MM-DD hh:mm'), moment().endOf('year').format('YYYY-MM-DD hh:mm'), YearUnitLeaderboardCallback);\r\n\t\t\t}\r\n\r\n\t\t\tif (!vm.MyUnit) {\r\n\t\t\t\tleaderboardService.GetCountryLeaderboard(vm.Limit).then(function (response) { vm.CountryLeaderboard = response.data; });\r\n\r\n\t\t\t\tleaderboardService.GetCountryLeaderboard(vm.Limit, moment().startOf('month').format('YYYY-MM-DD hh:mm'), moment().endOf('month').format('YYYY-MM-DD hh:mm'))\r\n\t\t\t\t\t.then(function (response) { vm.CountryLeaderboardMonth = response.data; });\r\n\r\n\t\t\t\tleaderboardService.GetCountryLeaderboard(vm.Limit, moment().startOf('year').format('YYYY-MM-DD hh:mm'), moment().endOf('year').format('YYYY-MM-DD hh:mm'))\r\n\t\t\t\t\t.then(function (response) { vm.CountryLeaderboardYear = response.data; });\r\n\t\t\t}\r\n }\r\n\r\n function MonthLeaderboardCallback(response) {\r\n vm.MainUnitLeaderboardMonth = response.data;\r\n }\r\n\r\n function YearLeaderboardCallback(response) {\r\n vm.MainUnitLeaderboardYear = response.data;\r\n }\r\n\r\n function MonthUnitLeaderboardCallback(response) {\r\n vm.UnitLeaderboardMonth = response.data;\r\n }\r\n\r\n function YearUnitLeaderboardCallback(response) {\r\n vm.UnitLeaderboardYear = response.data;\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Initialize);\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.notifications', notificationsController);\r\n\r\n notificationsController.$inject = [\"core.users.service\", \"$state\", \"bizUser\"];\r\n\r\n function notificationsController(userService, $state, bizUser) {\r\n var vm = this;\r\n vm.PageMax = 2000;\r\n vm.NotificationsPage = 1;\r\n\r\n vm.Settings = notificationSettings;\r\n\r\n vm.Init = Init;\r\n vm.GetLoggedInUserNotifications = GetLoggedInUserNotifications;\r\n vm.GoToItem = GoToItem;\r\n vm.Back = Back; \r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GoToItem(item) { \r\n //The types that only should be clickable for the users own items\r\n if ((item.Settings && ~~item.Settings.ObjectOwnerUserId > 0 && item.Settings.ObjectOwnerUserId === $rootScope.LoggedInUser.Id)) {\r\n switch (item.ObjectType) {\r\n case 'GOAL':\r\n $state.go(\"base.modules.goals.onegoal\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'TODO':\r\n $state.go(\"base.modules.goals.onetask\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITY':\r\n $state.go(\"base.modules.goals.activity\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n }\r\n }\r\n\r\n //The types that should be clickable for any user (as long as they have access, which should be fixed on backend)\r\n switch (item.ObjectType) {\r\n case 'HTML5':\r\n $state.go(\"base.modules.html5education\", { id: item.ObjectId });\r\n break;\r\n case 'MediabankFile':\r\n $state.go(\"base.modules.mediafile\", { id: item.ObjectId });\r\n break;\r\n case 'Blog':\r\n $state.go(\"base.modules.blog\", { id: item.ObjectId });\r\n break;\r\n case 'SCORM':\r\n location.href = siteRootPath + \"SCORM/\" + item.ObjectId;\r\n break;\r\n } \r\n }\r\n\r\n function GetLoggedInUserNotifications(page) {\r\n userService.GetLoggedInUserNotifications(vm.PageMax, page).then(GetLoggedInUserNotificationsSuccess);\r\n\r\n function GetLoggedInUserNotificationsSuccess(response) {\r\n vm.Notifications = response.data;\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetLoggedInUserNotifications(vm.NotificationsPage);\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.register', registerController);\r\n\r\n registerController.$inject = [\"$rootScope\", \"core.registerService\", \"$translate\", \"core.users.service\", \"$window\"];\r\n\r\n function registerController($rootScope, registerService, $translate, userService, $window) {\r\n var vm = this;\r\n vm.Register = Register;\r\n vm.AcceptedConditions = false;\r\n vm.Roles = [];\r\n vm.User = {};\r\n vm.Message = '';\r\n vm.IsEmailValid = IsEmailValid;\r\n vm.IsMobileValid = IsMobileValid;\r\n vm.GenderClick = GenderClick;\r\n vm.GetGender = GetGender;\r\n\r\n vm.MobilePattern = /^\\+[0-9]{10,}$/;\r\n vm.EmailPattern = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n //much of the code here is for the possibility of use in custom views, that might not be used in the default view (yet)\r\n \r\n function Init() {\r\n userService.GetGenders().then(GetGendersCallback);\r\n function GetGendersCallback(response) {\r\n vm.Genders = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function GenderClick(gender) {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n vm.Genders[i].checked = vm.Genders[i] === gender;\r\n }\r\n }\r\n\r\n function IsMobileValid() {\r\n if (!vm.User.Mobile) return false;\r\n\r\n return vm.MobilePattern.test(vm.User.Mobile)\r\n }\r\n\r\n function IsEmailValid() {\r\n if (!vm.User || !vm.User.Email) return false;\r\n if (!vm.EmailPattern) return true;\r\n\r\n return vm.EmailPattern.test(vm.User.Email);\r\n }\r\n\r\n function GetGender() {\r\n for (var i = 0; i < vm.Genders.length; i++) {\r\n if (vm.Genders[i].checked) {\r\n return vm.Genders[i].SystemName;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function Register()\r\n {\r\n var gender = vm.GetGender();\r\n \r\n vm.ShowValidation = true;\r\n if (vm.MyForm.$valid && (!vm.GenderIsMandatory || gender) && vm.AcceptedConditions == true && !vm.Submitting && !vm.Submitted )\r\n {\r\n console.log(\"submitted\");\r\n vm.ShowValidation = false;\r\n vm.Submitting = true;\r\n vm.Message = '';\r\n\r\n vm.User.Gender = gender;\r\n vm.User.IsActive = true;\r\n vm.User.CultureId = $rootScope.LoggedInUser.CurrentCultureId;\r\n vm.User.strCulture = $rootScope.Cultures.GetItemByValue('Id', $rootScope.LoggedInUser.CurrentCultureId).CultureCode;\r\n\r\n registerService.CreateUser(vm.User).then(registerSuccess);\r\n\r\n function registerSuccess(response)\r\n {\r\n vm.Submitted = true;\r\n vm.Success = response.data.Success;\r\n\r\n if (response.data.Success == true)\r\n { \r\n $translate('CORE.REGISTER.USERCREATED').then(function (translation) {\r\n vm.SuccessMessage = translation || 'Follow the instructions mailed to you in order to verify your email address and select a password.';\r\n });\r\n }\r\n else {\r\n vm.Message = response.data.Message;\r\n }\r\n\r\n if ($window.dataLayer) {\r\n $window.dataLayer.push({\r\n event: 'form.Submit',\r\n attributes: {\r\n key: 'register-user-form',\r\n success: vm.Success\r\n },\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('core.terms.show', showTermsController);\r\n\r\n\tshowTermsController.$inject = [\"core.terms.service\"];\r\n\r\n\tfunction showTermsController(termsService) {\r\n\t\tvar vm = this;\r\n\t\tvm.GetTerms = GetTerms;\r\n\r\n\t\tfunction GetTerms() {\r\n\t\t\tvm.GettingsTerms = true;\r\n\t\t\ttermsService.GetSystemTerms().then(GetTermsCallback);\r\n\r\n\t\t\tfunction GetTermsCallback(response) {\r\n\t\t\t\tvm.GettingsTerms = false;\r\n\t\t\t\tvar terms = BizPartCoreHelpers.getResponseValue(response, []);\r\n\t\t\t\tfor (var i = 0; i < terms.length; i++)\r\n\t\t\t\t\tterms[i].InteractionsDisabled = true;\r\n\r\n\t\t\t\tvm.Terms = terms;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.GetTerms();\r\n\t}\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.themestest', themestestController);\r\n\r\n themestestController.$inject = [];\r\n\r\n function themestestController() {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n\r\n function Init() {\r\n console.log('ThemesTest init...')\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').controller('cleanbase.unsubscribe', unsubscribe);\r\n\r\n unsubscribe.$inject = ['$rootScope'];\r\n\r\n function unsubscribe($rootScope) {\r\n var vm = this;\r\n\r\n \r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').controller('core.welcome', welcomeController);\r\n\r\n welcomeController.$inject = [\"$rootScope\", \"bizCoreService\"];\r\n\r\n function welcomeController($rootScope, bizCoreService) {\r\n var vm = this; \r\n\r\n vm.Init = Init;\r\n vm.Back = Back;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function Init() {\r\n bizCoreService.GetWelcomeGuide().then(function (response) {\r\n var showAdvanced = true;//backwards compatibility, if setting is missing\r\n var pages;\r\n if (response.data && response.data !== \"\" && response.data !== null) {\r\n const data = JSON.parse(response.data);\r\n showAdvanced = data.useAdvanced;\r\n pages = data.pages; \r\n }\r\n vm.showAdvanced = showAdvanced;\r\n vm.pages = pages;\r\n }); \r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n}(window.angular));","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizActivityReminder', bizActivityReminder);\r\n\tangular.module('bizPartEngage').service('bizActivityReminderService', bizActivityReminderService);\r\n\r\n\tbizActivityReminderService.$inject = [\"$http\"];\r\n\r\n\tfunction bizActivityReminder() {\r\n\t\treturn {\r\n\t\t\trestrict: 'AE',\r\n\t\t\ttemplateUrl: siteRootPath + 'FrontEnd/Core/Directives/Views/ActivityReminders.html',\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: bizActivityReminderController\r\n\t\t};\r\n\r\n\t\tbizActivityReminderController.$inject = [\"bizActivityReminderService\", \"bizPhraseLoaderService\", \"$filter\", \"$q\", \"$rootScope\"];\r\n\r\n\t\tfunction bizActivityReminderController(bizActivityReminderService, bizPhraseLoaderService, $filter, $q, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Initialize = Initialize;\r\n\t\t\tvm.GetPhrasePlaceholders = GetPhrasePlaceholders;\r\n\r\n\t\t\tbizPhraseLoaderService.LoadPart(\"activityreminder\");\r\n\r\n\t\t\tfunction GetPhrasePlaceholders(reminder) {\r\n\t\t\t\tif (reminder.PhrasePlaceholders)\r\n\t\t\t\t\treturn reminder.PhrasePlaceholders;\r\n\r\n\t\t\t\tvar unitName = $rootScope.LoggedInUser.Units.length ? $rootScope.LoggedInUser.Units[0].Name : \"\";\r\n\t\t\t\tvar parentUnitName = $rootScope.LoggedInUser.ParentUnits.length ? $rootScope.LoggedInUser.ParentUnits[0].Name : \"\";\r\n\r\n\t\t\t\treminder.PhrasePlaceholders = {\r\n\t\t\t\t\t'#USER#': reminder.UserInfo.FirstName + ' ' + reminder.UserInfo.LastName,\r\n\t\t\t\t\t'#UNIT#': reminder.UserIdListUsedIndex == 0 ? unitName : parentUnitName,\r\n\t\t\t\t\t'#USERCOUNT#': reminder.UserIds.length - 1\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn reminder.PhrasePlaceholders;\r\n\t\t\t}\r\n\r\n\t\t\tfunction Initialize() {\r\n\t\t\t\tif ($rootScope.LoggedInUser.Id <= 0)\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tbizActivityReminderService.GetActivityReminders(1).then(InitializeCallback);\r\n\r\n\t\t\t\tfunction InitializeCallback(response) {\r\n\t\t\t\t\tvar reminders = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n\t\t\t\t\tfor (var i = 0; i < reminders.length; i++) {\r\n\t\t\t\t\t\tif (!reminders[i].ImageUrl)\r\n\t\t\t\t\t\t\tcontinue\r\n\r\n\t\t\t\t\t\tvm.FirstImageUrl = reminders[i].ImageUrl;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvm.Reminders = reminders;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.Initialize();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction bizActivityReminderService($http) {\r\n\t\tvar baseUrl = siteRootPath + 'api/ActivityReminder/'\r\n\r\n\t\treturn {\r\n\t\t\tGetActivityReminders: GetActivityReminders,\r\n\t\t\tSetActivityReminderViewed: SetActivityReminderViewed\r\n\t\t}\r\n\r\n\t\tfunction GetActivityReminders(maxReminders) {\r\n\t\t\treturn $http.get(baseUrl + 'GetActivityReminders', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tmaxReminders: maxReminders\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction SetActivityReminderViewed(reminder) {\r\n\t\t\treturn $http.post(baseUrl + 'SetActivityReminderViewed', reminder);\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizAdminBar', bizAdminBar);\r\n\tangular.module('bizPartEngage').service('bizAdminBarService', bizAdminBarService);\r\n\r\n\tbizAdminBar.$inject = [];\r\n\tbizAdminBarService.$inject = [\"$http\"];\r\n\r\n\tfunction bizAdminBar() {\r\n\t\treturn {\r\n\t\t\trestrict: \"E\",\r\n\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/AdminBar.html\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tcontroller: bizAdminBarController,\r\n\t\t\tbindToController: true,\r\n\t\t\tscope: {\r\n\t\t\t\tsimulating: \"=\",\r\n\t\t\t\tisAllowedToSimulate: \"=?\"\r\n\t\t\t}\r\n\t\t}\t\t\r\n }\r\n\r\n bizAdminBarController.$inject = [\"$rootScope\", \"bizCoreService\", \"$window\", \"$filter\", \"$mdDialog\", \"bizAdminBarService\", \"bizUser\", \"$transitions\", \"$state\", \"$stateParams\", \"$q\"];\r\n\r\n function bizAdminBarController($rootScope, bizCoreService, $window, $filter, $mdDialog, bizAdminBarService, bizUser, $transitions, $state, $stateParams, $q) {\r\n var vm = this; \r\n\r\n vm.Init = Init;\r\n vm.GetCultures = GetCultures;\r\n vm.ChangeCulture = ChangeCulture;\r\n vm.CancelSimulation = CancelSimulation;\r\n vm.ShowSimulateUser = ShowSimulateUser;\r\n vm.GetAdminUrl = GetAdminUrl;\r\n vm.ShowAdminButton = ShowAdminButton;\r\n vm.SetEditButton = SetEditButton;\r\n vm.GotoAdminEdit = GotoAdminEdit;\r\n\r\n vm.SimulatingDate = BizPartCoreHelpers.getSimulatedDate(); \r\n \r\n function ShowAdminButton() {\r\n //if (!vm.simulating || (vm.simulating && bizUser.HasModuleAccess('DASHBOARD', 20)))\r\n return true;\r\n\r\n //return false;\r\n }\r\n\r\n function GetAdminUrl() {\r\n return bizAdminBarService.AdminUrl || $filter(\"siteroot\")(\"Admin\");\r\n }\r\n\r\n function CancelSimulation() {\r\n bizAdminBarService.CancelSimulation().then(CancelSimulationCallback);\r\n\r\n function CancelSimulationCallback(response) {\r\n var simulation = response.data;\r\n deleteCookie(\"BizPartAuthToken\");\r\n setBizPartAuthToken(simulation.SimulatedByUserToken, simulation.SimulatedByUserId, true);\r\n deleteSessionStorage(\"SimulateDate\");\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n\r\n function ShowSimulateUser() {\r\n $mdDialog.show({\r\n templateUrl: \"simulate-user\",\r\n controller: simulateUserDialogController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n });\r\n\r\n simulateUserDialogController.$inject = [\"$mdDialog\", \"$scope\"];\r\n\r\n function simulateUserDialogController($mdDialog, $scope) {\r\n var vm = this;\r\n\r\n vm.Users = [];\r\n vm.SearchTerm = \"\";\r\n vm.PageIndex = 0;\r\n vm.PageLength = 20;\r\n vm.IncludeInactive = false;\r\n vm.RoleId = -1;\r\n\r\n vm.Close = Close;\r\n vm.SearchUsers = SearchUsers;\r\n vm.SimulateUser = SimulateUser;\r\n vm.SearchMoreUsers = SearchMoreUsers;\r\n\r\n function SearchUsers(pageIndex) {\r\n vm.PageIndex = pageIndex || 0;\r\n vm.GettingUsers = true;\r\n bizAdminBarService.SearchUsers(vm.SearchTerm, vm.PageIndex, vm.PageLength, vm.IncludeInactive, vm.RoleId).then(SearchUsersCallback);\r\n\r\n function SearchUsersCallback(response) {\r\n vm.UserData = response.data;\r\n\r\n if (vm.PageIndex == 0)\r\n vm.Users = vm.UserData.CurrentPageEntries;\r\n else\r\n vm.Users = vm.Users.concat(vm.UserData.CurrentPageEntries);\r\n\r\n vm.GettingUsers = false;\r\n }\r\n }\r\n\r\n function SearchMoreUsers() {\r\n vm.SearchUsers(vm.PageIndex + 1);\r\n }\r\n\r\n function SimulateUser(user) {\r\n vm.PreparingSimulation = true;\r\n bizAdminBarService.SimulateUser(user.Id, vm.Date).then(SimulateUserCallback);\r\n\r\n function SimulateUserCallback(response) {\r\n\r\n var userSession = response.data;\r\n if (!userSession)\r\n return;\r\n\r\n setBizPartAuthToken(userSession.Token, userSession.UserId);\r\n if (vm.Date) {\r\n setSessionStorage(\"SimulateDate\", moment(vm.Date).format('YYYY-MM-DD HH:mm'));\r\n }\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n\r\n function Close() {\r\n $mdDialog.hide();\r\n }\r\n\r\n function GetRoles() {\r\n bizCoreService.Admin.GetAllRoles(false).then(GetAllRolesCallback);\r\n\r\n function GetAllRolesCallback(response) {\r\n vm.Roles = response.data; \r\n }\r\n }\r\n\r\n $scope.$watch(\"vm.SelectedRole\", function (newValue, oldValue) {\r\n if (newValue != oldValue) {\r\n vm.RoleId = newValue?.Id ?? -1;\r\n vm.SearchUsers(0);\r\n }\r\n });\r\n\r\n GetRoles();\r\n vm.SearchUsers();\r\n }\r\n }\r\n\r\n function ChangeCulture(culture) {\r\n $window.location.href = $filter('siteroot')('/?lang=' + culture.CultureCode.substring(0, 2));\r\n }\r\n\r\n function GetCultures() {\r\n bizCoreService.GetCultures().then(GetCulturesCallback);\r\n\r\n function GetCulturesCallback(response) {\r\n vm.Cultures = response.data;\r\n vm.CurrentCulture = vm.Cultures.GetItemByValue(\"Id\", ~~currentCultureId);\r\n }\r\n }\r\n\r\n function SetEditButton() {\r\n console.log(\"state\", $state.current)\r\n let showBtn = false;\r\n const stateName = $state.current.name;\r\n if (vm.AdminPageMap.has(stateName)) {\r\n const adminInfo = vm.AdminPageMap.get(stateName);\r\n if (!adminInfo.accessTypeKey || $rootScope.HasWriteOrHigherAccess(adminInfo.accessTypeKey)) {\r\n showBtn = true;\r\n } else {\r\n console.log(\"no access\");\r\n }\r\n } \r\n vm.ShowEditButton = showBtn; \r\n }\r\n\r\n function GotoAdminEdit() {\r\n const stateName = $state.current.name;\r\n\r\n if (vm.AdminPageMap.has(stateName)) {\r\n const adminInfo = vm.AdminPageMap.get(stateName);\r\n if (adminInfo.dynamic) {\r\n adminInfo.getFinalUrl(adminInfo.url).then(url => {\r\n $window.location = siteRootPath + url;\r\n }); \r\n } else {\r\n $window.location = siteRootPath + adminInfo.url;\r\n } \r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetCultures();\r\n\r\n const populateId = (url, moduleType, urlRewrite) => {\r\n const deferred = $q.defer();\r\n bizAdminBarService.GetIdByUrlRewrite(moduleType, urlRewrite).then(response => {\r\n const id = BizPartCoreHelpers.getResponseValue(response);\r\n if (~~id > 0) {\r\n const fUrl = url.replace('##id##', id);\r\n deferred.resolve(fUrl);\r\n } else {\r\n deferred.reject('Id not found');\r\n }\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n vm.AdminPageMap = new Map([\r\n [\"base.modules.blog\", {\r\n url: \"Admin#/admin/modules/blog/index\",\r\n accessTypeKey: \"BLOG\"\r\n }],\r\n [\"base.modules.blogtitle\", {\r\n url: \"Admin#/admin/modules/blog/edit/##id##\",\r\n accessTypeKey: \"BLOG\",\r\n dynamic: true,\r\n getFinalUrl: url => populateId(url, 'Blog', $stateParams.title)\r\n }],\r\n [\"base.modules.media\", {\r\n url: \"Admin#/admin/modules/mediabank/general\",\r\n accessTypeKey: \"MEDIABANK\"\r\n }],\r\n [\"base.modules.mediafile\", {\r\n url: \"Admin#/admin/modules/mediabank/view/##id##\",\r\n accessTypeKey: \"MEDIABANK\",\r\n dynamic: true,\r\n getFinalUrl: url => populateId(url, 'MediabankFile', $stateParams.id)\r\n }],\r\n [\"base.modules.journey\", {\r\n url: \"Admin#/admin/journey\",\r\n accessTypeKey: \"JOURNEY\"\r\n }]\r\n ]);\r\n\r\n if ($rootScope.MiniSettings[\"Startpage\"][\"DisableLoadData\"] === false) {\r\n vm.AdminPageMap.set(\"base.home\", {\r\n url: \"Admin#/admin/portal/startpage\",\r\n accessTypeKey: \"PORTAL\"\r\n });\r\n }\r\n\r\n vm.SetEditButton();\r\n\r\n $transitions.onSuccess({}, ($transition) => {\r\n vm.SetEditButton();\r\n })\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n\r\n\tfunction bizAdminBarService($http) {\r\n\t\treturn {\r\n\t\t\tSearchUsers: SearchUsers,\r\n\t\t\tSimulateUser: SimulateUser,\r\n CancelSimulation: CancelSimulation,\r\n GetIdByUrlRewrite: GetIdByUrlRewrite\r\n\t\t};\r\n\r\n\t\tfunction SimulateUser(userId, date) {\r\n return $http.post(siteRootPath + 'api/UserAdmin/SimulateUser', {\r\n UserId: userId,\r\n Date: date\r\n });\r\n\t\t}\r\n\r\n\t\tfunction CancelSimulation() {\r\n\t\t\treturn $http.post(siteRootPath + 'api/User/CancelUserSimulation');\r\n\t\t}\r\n\r\n\t\tfunction SearchUsers(searchTerm, pageIndex, pageLength, includeInactive, roleId) {\r\n\t\t\treturn $http.post(siteRootPath + 'api/UserAdmin/SearchUsersPaged', {\r\n\t\t\t\tsearchTerm: searchTerm,\r\n\t\t\t\tpageIndex: pageIndex,\r\n\t\t\t\tpageLength: pageLength,\r\n includeInactive: includeInactive,\r\n roleId: roleId\r\n\t\t\t});\r\n }\r\n\r\n function GetIdByUrlRewrite(objectType, urlRewrite) {\r\n return $http.get(siteRootPath + 'api/Engage/GetIdByUrlRewrite', {\r\n params: {\r\n objectType,\r\n urlRewrite\r\n },\r\n headers: { \r\n IgnoreLoader: true\r\n }\r\n })\r\n }\r\n\t}\r\n})(window.angular);","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizCookieSettings', bizCookieSettingsDirective);\r\n\r\n\tbizCookieSettingsDirective.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizCookieSettingsDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\r\n\t\t\t},\r\n\t\t\ttemplateUrl: function (element, attr) {\r\n\t\t\t\tif (attr.templateurl) {\r\n\t\t\t\t\treturn siteRootPath + attr.templateurl;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn bizCoreProvider.getView('core.directives.cookiesettings', \"FrontEnd/Core/Directives/Views/CookieSettings.html\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizCookieSettingsController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t};\r\n\r\n\t\tbizCookieSettingsController.$inject = [\"$rootScope\", \"bizCoreService\"];\r\n\r\n\t\tfunction bizCookieSettingsController($rootScope, bizCoreService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\t//vm.Cookies = [{\r\n\t\t\t//\tName: \"Bizpart\",\r\n\t\t\t//\tValue: \"\",\r\n\t\t\t//\tGroup: \"Functional\",\r\n\t\t\t//\tMandatory: true\r\n\t\t\t//}, {\r\n\t\t\t//\tName: \"Google\",\r\n\t\t\t//\tValue: \"\",\r\n\t\t\t//\tGroup: \"Tracking\",\r\n\t\t\t//\tMandatory: false\r\n\t\t\t//}\r\n\t\t\t//];\r\n\r\n\t\t\tvm.ToggleCookie = ToggleCookie;\r\n\r\n\t\t\tfunction ToggleCookie(item) {\r\n\t\t\t\t$rootScope.HasAcceptedCookies = !$rootScope.HasAcceptedCookies;\r\n\t\t\t\tsetLocalStorage(\"HasAcceptedCookies\", $rootScope.HasAcceptedCookies);\r\n\r\n\t\t\t\tif ($rootScope.IsLoggedIn) {\r\n\t\t\t\t\tbizCoreService.UpdateUserSetting(\"HasAcceptedCookies\", $rootScope.HasAcceptedCookies).then(function (response) {\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n }\r\n\r\n function Init() {\r\n }\r\n\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tInit();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizCountdownTimer', bizCountdownTimer);\r\n angular.module('bizPartEngage').service('bizCountdownService', bizCountdownService);\r\n\r\n bizCountdownTimer.$inject = [\"bizCore\", \"bizCountdownService\", \"bizUser\"];\r\n bizCountdownService.$inject = [\"$http\"];\r\n\r\n function bizCountdownTimer(bizCore, bizCountdownService, bizUser) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCore.getView('core.directives.countdowntimer', \"FrontEnd/Core/Directives/Views/CountdownTimer.html\"),\r\n link: linkController,\r\n bindToController: true,\r\n controller: bizMyNotesController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n function linkController(scope, element, attrs) {\r\n //Remove directive if we don't have access to it.\r\n if(!bizUser.HasModuleAccess(\"COUNTDOWN\", 10)) {\r\n scope.$destroy();\r\n element.remove();\r\n }\r\n }\r\n\r\n bizMyNotesController.$inject = [\"$rootScope\", \"$interval\"];\r\n\r\n function bizMyNotesController($rootScope, $interval) {\r\n var vm = this;\r\n vm.Countdown = {};\r\n vm.interval;\r\n\r\n vm.StartTimer = StartTimer;\r\n vm.CancelTimer = CancelTimer;\r\n vm.ResetTime = ResetTime;\r\n\r\n function StartTimer(ignoreUpdate) {\r\n if(vm.HasAccessToStartTimer && !ignoreUpdate) {\r\n vm.Countdown.StartTime = moment().utc().format();\r\n bizCountdownService.StartCountdown(vm.Countdown).then(function(response) {\r\n vm.Countdown.Id = response.data.Id;\r\n });\r\n }\r\n\r\n vm.interval = $interval(function() {\r\n if(~~vm.Countdown.Seconds <= 0) {\r\n vm.Countdown.Seconds = 59;\r\n vm.Countdown.Minutes = (~~vm.Countdown.Minutes - 1).toString();\r\n }\r\n else {\r\n vm.Countdown.Seconds = (~~vm.Countdown.Seconds - 1).toString();\r\n if(~~vm.Countdown.Seconds < 10) vm.Countdown.Seconds = \"0\" + (~~vm.Countdown.Seconds).toString();\r\n }\r\n\r\n if(~~vm.Countdown.Minutes < 10) vm.Countdown.Minutes = \"0\" + (~~vm.Countdown.Minutes).toString();\r\n\r\n if(~~vm.Countdown.Minutes <= 0 && vm.Countdown.Seconds <= 0) {\r\n $interval.cancel(vm.interval);\r\n vm.TimerStarted = false;\r\n }\r\n \r\n }, 1000, 0, true, vm);\r\n vm.TimerStarted = true;\r\n }\r\n\r\n function CancelTimer() {\r\n if(vm.HasAccessToStartTimer) {\r\n bizCountdownService.CancelCountdown(vm.Countdown);\r\n }\r\n\r\n $interval.cancel(vm.interval);\r\n vm.TimerStarted = false;\r\n }\r\n\r\n function ResetTime() {\r\n vm.Countdown.Minutes = \"10\";\r\n vm.Countdown.Seconds = \"00\";\r\n }\r\n\r\n function Init() {\r\n vm.ResetTime();\r\n vm.HasAccessToStartTimer = bizUser.HasModuleAccess(\"COUNTDOWN\", 20);\r\n\r\n if(bizUser.HasModuleAccess(\"COUNTDOWN\", 10)) {\r\n bizCountdownService.GetCountdownForLoggedinUser().then(GetCountdownForLoggedinUserSuccess);\r\n }\r\n\r\n function GetCountdownForLoggedinUserSuccess(response) {\r\n if(response.data) {\r\n var countdown = response.data;\r\n vm.Countdown.Id = countdown.Id;\r\n vm.Countdown.CreatedByUserFullName = countdown.CreatedByUserFullName;\r\n var elapsedSeconds = moment(moment().utc()).diff(countdown.StartTime, 'seconds');\r\n var elapsedMinutes = Math.floor(elapsedSeconds / 60);\r\n elapsedSeconds = Math.floor(elapsedSeconds % 60);\r\n \r\n vm.Countdown.Minutes = countdown.Minutes - elapsedMinutes;\r\n\r\n var secondsLeft = countdown.Seconds - elapsedSeconds;\r\n\r\n if(secondsLeft < 0) {\r\n vm.Countdown.Minutes--;\r\n vm.Countdown.Seconds = 60 + secondsLeft;\r\n }\r\n else {\r\n vm.Countdown.Seconds = secondsLeft;\r\n }\r\n\r\n vm.StartTimer(true);\r\n }\r\n }\r\n }\r\n\r\n var hubListender = $rootScope.$on('HUB_COUNTDOWN', function(event, args) {\r\n var c = JSON.parse(args.Content);\r\n if(!vm.TimerStarted && !c.Cancelled) {\r\n vm.Countdown = c;\r\n vm.StartTimer(true);\r\n }\r\n else if(vm.TimerStarted === true && c.Cancelled === true) {\r\n vm.CancelTimer();\r\n }\r\n });\r\n\r\n function Destroy() {\r\n //Unsubscribe for the hub event...\r\n hubListender();\r\n }\r\n\r\n vm.$onInit = Init;\r\n vm.$onDestroy = Destroy;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizCountdownService($http) {\r\n var servicePath = siteRootPath + \"api/Countdown/\";\r\n\r\n this.GetCountdownForLoggedinUser = function() {\r\n return $http.get(servicePath + \"GetCountdownForLoggedinUser\");\r\n };\r\n\r\n this.StartCountdown = function(countdown) {\r\n return $http.post(servicePath + \"StartCountdown\", countdown);\r\n };\r\n\r\n this.CancelCountdown = function(countdown) {\r\n return $http.post(servicePath + \"CancelCountdown\", countdown);\r\n }; \r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizCultureSelector', bizCultureSelectorDirective);\r\n\r\n bizCultureSelectorDirective.$inject = [\"bizCore\"];\r\n\r\n function bizCultureSelectorDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n useGbflagForUs: '@?'\r\n },\r\n templateUrl: function (element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n }\r\n else {\r\n return bizCoreProvider.getView('core.directives.cultureselector', \"FrontEnd/Core/Directives/Views/CultureSelector.html\");\r\n }\r\n },\r\n bindToController: true,\r\n controller: bizCultureSelectorController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizCultureSelectorController.$inject = [\"bizCoreService\", \"$rootScope\"];\r\n\r\n function bizCultureSelectorController(bizCoreService, $rootScope) {\r\n var vm = this; \r\n\r\n vm.GetCultures = GetCultures;\r\n vm.ChangeLanguage = ChangeLanguage;\r\n\r\n function GetCultures() {\r\n bizCoreService.GetCultures().then(GetCulturesCallback);\r\n\r\n function GetCulturesCallback(response) {\r\n var cultures = response.data; \r\n\r\n vm.Cultures = []; \r\n for (var i = 0; i < cultures.length; i++) {\r\n cultures[i].Flag = 'Images/StatFlags/' + GetImageName(cultures[i].CultureCode);\r\n cultures[i].ShortCultureCode = GetShortCountryCode(cultures[i].CultureCode);\r\n\r\n if (cultures[i].IsVisible) {\r\n vm.Cultures.push(cultures[i]);\r\n }\r\n }\r\n \r\n vm.CurrentCulture = vm.Cultures.GetItemByValue(\"Id\", ~~currentCultureId);\r\n\r\n function GetShortCountryCode(cultureCode) {\r\n var ccParts = cultureCode.split('-');\r\n if (ccParts.length > 0) {\r\n return ccParts[0];\r\n }\r\n return cultureCode;\r\n }\r\n\r\n function GetImageName(cultureCode) {\r\n var ccParts = cultureCode.split('-');\r\n if (ccParts.length > 1) {\r\n var countryCode = ccParts[1];\r\n //console.log(\"useGbflagForUs\", vm.useGbflagForUs);\r\n if (vm.useGbflagForUs) {\r\n if (countryCode.toLowerCase() == \"us\") {\r\n countryCode = \"GB\";\r\n }\r\n }\r\n return countryCode + \".png\";\r\n }\r\n console.log(\"culture selector, could not split country code\", cultureCode);\r\n }\r\n }\r\n }\r\n\r\n function ChangeLanguage(cultureCode) {\r\n var url = window.location.href;\r\n var qs;\r\n var parts = url.split('?');\r\n if (parts.length >= 2) {\r\n url = parts[0];\r\n\r\n var qsParts = parts[1].split(/[&;]/g);\r\n for (var i = 0; i < qsParts.length; i++) {\r\n if (qsParts[i].indexOf('lang=') === -1) {\r\n if (qs) {\r\n qs = qs + \"&\" + qsParts[i];\r\n } else {\r\n qs = qsParts[i];\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (qs) qs = \"?\" + qs + \"&\";\r\n else qs = \"?\";\r\n\r\n var ccParts = cultureCode.split('-');\r\n window.location.href = url + qs + \"lang=\" + ccParts[0];\r\n } \r\n\r\n function Init() {\r\n vm.GetCultures();\r\n }\r\n\r\n vm.$onInit = function () {\r\n Init();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizEngageJourney', bizEngageJourneyDirective);\r\n\tangular.module('bizPartEngage').directive('bizEngageProgress', bizEngageProgressDirective);\r\n\tangular.module('bizPartEngage').directive('bizEngageProgressBar', bizEngageProgressBarDirective);\r\n\tangular.module('bizPartEngage').directive('bizEngageJourneyProgressBar', bizEngageJourneyProgressBarDirective);\r\n angular.module('bizPartEngage').directive('bizEngageProgressSettings', bizEngageProgressSettingsDirective);\r\n angular.module('bizPartEngage').directive('bizEngageStackedObjects', bizEngageStackedObjectsDirective);\r\n\r\n\tbizEngageJourneyDirective.$inject = [\"bizCore\"];\r\n\tbizEngageProgressDirective.$inject = [\"bizCore\"];\r\n\tbizEngageProgressBarDirective.$inject = [\"bizCore\"]\r\n bizEngageProgressSettingsDirective.$inject = [\"bizCore\"];\r\n bizEngageStackedObjectsDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizEngageStackedObjectsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n engageObjects: '=',\r\n categoryId: '=',\r\n horizontal: '=?',\r\n gotoFunc: '&',\r\n bigImage: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.engagestackedobjects', \"FrontEnd/Core/Directives/Views/EngageStackedObjects.html\"),\r\n bindToController: true,\r\n controller: bizEngageStackedObjectsController,\r\n controllerAs: \"vm\",\r\n }\r\n\r\n bizEngageStackedObjectsController.$inject = ['$filter'];\r\n\r\n function bizEngageStackedObjectsController($filter) {\r\n var vm = this;\r\n\r\n vm.ImageList = [];\r\n\r\n vm.Init = Init;\r\n vm.SetSelected = SetSelected;\r\n vm.SetSelectedImageFirst = SetSelectedImageFirst;\r\n vm.Goto = Goto;\r\n\r\n function Goto() {\r\n vm.gotoFunc()(vm.Selected);\r\n }\r\n\r\n function SetSelected(obj) {\r\n vm.Selected = obj;\r\n vm.SetSelectedImageFirst();\r\n }\r\n\r\n function SetSelectedImageFirst() { \r\n var index = 0;\r\n for (var i = 0; i < vm.ImageList.length; i++) {\r\n if (vm.ImageList[i].Id === vm.Selected.Id) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (index === 0)\r\n return;\r\n\r\n var first = vm.ImageList[index];\r\n var newList = [first];\r\n for (var i = 0; i < vm.ImageList.length; i++) {\r\n if (i !== index) {\r\n newList.push(vm.ImageList[i]);\r\n }\r\n }\r\n vm.ImageList = newList;\r\n }\r\n\r\n function Init() {\r\n\r\n if (!vm.engageObjects || !vm.engageObjects.length)\r\n return;\r\n \r\n var category;\r\n for (var i = 0; i < vm.engageObjects.length && !category; i++) {\r\n category = vm.engageObjects[i].GenericCategories.GetItemByValue('Id', vm.categoryId); \r\n }\r\n\r\n if (!category)\r\n return;\r\n\r\n for (var i = 0; i < vm.engageObjects.length; i++) {\r\n var catObj = category.Objects.GetItemByValue('Id', vm.engageObjects[i].Id);\r\n vm.engageObjects[i].Order = catObj.Order;\r\n }\r\n \r\n vm.engageObjects = $filter('orderBy')(vm.engageObjects, 'Order');\r\n\r\n vm.Selected = vm.engageObjects[0]; \r\n\r\n for (var i = 0; i < vm.engageObjects.length; i++) { \r\n vm.ImageList.push(vm.engageObjects[i]);\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n\tfunction bizEngageProgressBarDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tlabel: '@',\r\n progress: '=',\r\n showProfileImage: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engageprogressbar', \"FrontEnd/Core/Directives/Views/EngageProgressBar.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageProgressBarController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n\t\tbizEngageProgressBarController.$inject = ['core.engage.service'];\r\n\r\n\t\tfunction bizEngageProgressBarController(engageService) {\r\n\t\t\tvar vm = this;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageJourneyProgressBarDirective() {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tlabel: '@',\r\n showCustomJourney: '=?',//favorites not used atm\r\n showProfileImage: '=?'\r\n\t\t\t},\r\n template: '',\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageJourneyProgressBarController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n\t\tbizEngageJourneyProgressBarController.$inject = ['$rootScope', 'core.engage.service'];\r\n\r\n\t\tfunction bizEngageJourneyProgressBarController($rootScope, engageService) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvm.progress = 0;\r\n\r\n\t\t\tvm.Init = Init;\r\n\r\n function GetJourneys() {\r\n\r\n $rootScope.JourneysInitialized.then(InitJourneys);\r\n\r\n function InitJourneys() {\r\n vm.Journeys = $rootScope.Journeys;\r\n\r\n var objectCount = 0;\r\n var finishedObjectCount = 0;\r\n for (var i = 0; i < vm.Journeys.length; i++) {\r\n for (var j = 0; j < vm.Journeys[i].EngageObjects.length; j++) {\r\n objectCount++;\r\n if (vm.Journeys[i].EngageObjects[j].Status === 3) {\r\n finishedObjectCount++;\r\n }\r\n }\r\n } \r\n\r\n var progress = 0;\r\n if (objectCount > 0) {\r\n progress = Math.round((finishedObjectCount * 100) / objectCount);\r\n }\r\n vm.progress = progress;\r\n }\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tGetJourneys();\r\n\r\n\t\t\t\t//REGISTER FOR UPDATES\r\n\t\t\t\tif(vm.showCustomJourney) {\r\n\t\t\t\t\t$rootScope.$on('favorites.change', function() {\r\n\t\t\t\t\t\tGetJourneys();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageProgressSettingsDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tsettingsHandler: '='\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engageprogresssettings', \"FrontEnd/Core/Directives/Views/EngageProgressSettings.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageProgressSettingsController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n\t\tbizEngageProgressSettingsController.$inject = ['core.engage.service'];\r\n\r\n\t\tfunction bizEngageProgressSettingsController(engageService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.Save = Save;\r\n\t\t\tvm.GetSettings = GetSettings;\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tvm.settingsHandler = {\r\n\t\t\t\t\tSave: vm.Save\r\n\t\t\t\t};\r\n\t\t\t\tvm.GetSettings();\r\n\t\t\t}\r\n\r\n\t\t\tfunction GetSettings() {\r\n\t\t\t\tengageService.GetSettings().then(GetSettingsCallback);\r\n\r\n\t\t\t\tfunction GetSettingsCallback(response) {\r\n\t\t\t\t\tvm.Settings = response.data;\r\n\t\t\t\t\tvm.OriginalSettings = angular.copy(vm.Settings);\r\n\t\t\t\t\tvm.settingsHandler.Settings = vm.Settings;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction Save() {\r\n\t\t\t\tvm.SavedSettings = true;\r\n\t\t\t\tengageService.SaveSettings(vm.Settings);\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onDestroy = function () {\r\n\t\t\t\tif (!vm.SavedSettings)\r\n\t\t\t\t\tObject.assign(vm.Settings, vm.OriginalSettings);\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageProgressDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\twidth: '@',\r\n\t\t\t\tdata: '=?',\r\n settings: '=?',\r\n showProfileImage: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engageprogress', \"FrontEnd/Core/Directives/Views/EngageProgress.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageProgressController,\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t}\r\n\r\n bizEngageProgressController.$inject = ['core.engage.service', '$scope', 'bizUser', '$rootScope'];\r\n\r\n function bizEngageProgressController(engageService, $scope, bizUser, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\r\n vm.Mascot = mascot;\r\n vm.BackgroundImage;\r\n\r\n vm.Init = Init;\r\n vm.SetProgress = SetProgress;\r\n\t\t\t//vm.GetEngageJourneys = GetEngageJourneys;\r\n\r\n\t\t\t//function GetEngageJourneys(useCache) {\r\n\t\t\t//\tengageService.GetEngageJourneysForUser(!useCache).then(GetEngageJourneysCallback);\r\n\r\n\t\t\t//\tfunction GetEngageJourneysCallback(journeys) {\r\n // vm.data = {};\r\n // console.log(\"journeys\", journeys)\r\n\r\n\t\t\t//\t\tif (journeys.Custom && journeys.Custom.length)\r\n\t\t\t//\t\t\tvm.data.Custom = journeys.Custom[0].TotalProgress;\r\n\r\n\t\t\t//\t\tif (journeys.General && journeys.General.length)\r\n\t\t\t//\t\t\tvm.data.General = journeys.General[0].TotalProgress;\r\n\t\t\t//\t}\r\n // } \r\n\r\n function SetProgress() {\r\n $rootScope.GetAllJourneysTotalProgress().then((progress) => { \r\n vm.data = {};\r\n vm.data.General = progress;\r\n });\r\n }\r\n\r\n\t\t\tfunction Init() {\r\n \r\n\r\n\t\t\t\tif (!vm.settings) {\r\n\r\n\t\t\t\t\tvm.settings = {\r\n\t\t\t\t\t\tHideGeneralJourneyProgress: true,\r\n\t\t\t\t\t\tHideCustomJourneyProgress: true\r\n\t\t\t\t\t};\r\n\t\t\t\t\t\r\n\t\t\t\t\tengageService.GetSettings().then(GetSettingsCallback);\r\n }\r\n\r\n if (vm.showProfileImage) {\r\n vm.LoggedInUser = bizUser.getLoggedInUser();\r\n if (vm.LoggedInUser) {\r\n vm.BackgroundImage = vm.LoggedInUser.Photo || 'Images/Common/no_user_photo.png';\r\n }\r\n }\r\n\r\n if (!vm.BackgroundImage) {\r\n vm.BackgroundImage = vm.Mascot.Image;\r\n }\r\n\r\n\t\t\t\tif (vm.data) return;\r\n\r\n vm.settings.HideCustomJourneyProgress = true;\r\n vm.SetProgress();\r\n \r\n\t\t\t\t//vm.GetEngageJourneys(true);\r\n\r\n $scope.$on('favorites.change', vm.SetProgress);\r\n $scope.$on('engageobject.finished', vm.SetProgress);\r\n\r\n\t\t\t\tfunction GetSettingsCallback(response) {\r\n\t\t\t\t\tvm.settings = response.data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizEngageJourneyDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('core.directives.engagejourney', \"FrontEnd/Core/Directives/Views/EngageJourney.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizEngageJourneyController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizEngageJourneyController.$inject = ['core.engage.service'];\r\n\r\n\t\tfunction bizEngageJourneyController(engageService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.GetEngageState = GetEngageState;\r\n\r\n\t\t\tfunction GetEngageState(engageObject) {\r\n\t\t\t\tswitch (engageObject.EngageObjectType) {\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn \"base.modules.html5education({id: \" + engageObject.Id + \"})\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn engageObject.UrlRewrite ? \"base.modules.blogtitle({title: '\" + engageObject.UrlRewrite + \"'})\" : \"base.modules.blog({id: \" + engageObject.Id + \"})\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\treturn \"base.modules.mediafile({id: '\" + (engageObject.UrlRewrite || engageObject.Id) + \"'})\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tengageService.GetEngageJourneys(false).then(GetJourneysCallback);\r\n\r\n\t\t\t\tfunction GetJourneysCallback(response) {\r\n\t\t\t\t\tvm.EngageJourneys = response.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizFavorite', bizFavorite);\r\n\tangular.module('bizPartEngage').directive('bizFavoriteList', bizFavoriteList);\r\n\tangular.module('bizPartEngage').directive('bizFavoriteEditList', bizFavoriteEditList);\r\n\r\n\tbizFavorite.$inject = [\"bizCore\"];\r\n\tbizFavoriteList.$inject = [\"bizCore\"];\r\n\tbizFavoriteEditList.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizFavorite(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tobjectType: '@',\r\n\t\t\t\tobjectId: '@',\r\n\t\t\t\tlabel: '@',\r\n\t\t\t\tfavorite: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.favorite', \"FrontEnd/Core/Directives/Views/Favorite.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizFavoriteController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizFavoriteController.$inject = ['core.services.favorite', '$rootScope'];\r\n\r\n\t\tfunction bizFavoriteController(favoriteService, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.ToggleFavorite = ToggleFavorite;\r\n\r\n\t\t\tfunction ToggleFavorite() {\r\n\t\t\t\tvm.favorite = !vm.favorite;\r\n\r\n\t\t\t\tif (vm.favorite)\r\n\t\t\t\t\tfavoriteService.AddFavorite(vm.objectType, vm.objectId).then(FavoriteChangeCallback);\r\n\t\t\t\telse\r\n\t\t\t\t\tfavoriteService.RemoveFavorite(vm.objectType, vm.objectId).then(FavoriteChangeCallback);\r\n\r\n\t\t\t\tfunction FavoriteChangeCallback(){\r\n\t\t\t\t\tfavoriteService.GetFavorites(false).then(function(response) {\r\n\t\t\t\t\t\t$rootScope.$broadcast('favorites.change', response.data);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tif (vm.favorite !== undefined) return;\r\n\r\n\t\t\t\tif ($rootScope.FavMarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavMarkedCssClass = 'fa fa-heart biz-primary-icon';\r\n\r\n\t\t\t\tif ($rootScope.FavUnmarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavUnmarkedCssClass = 'fa fa-heart-o';\r\n\r\n\t\t\t\tfavoriteService.IsFavorite(vm.objectType, vm.objectId).then(IsFavoriteCallback);\r\n\r\n\t\t\t\tfunction IsFavoriteCallback(response) {\r\n\t\t\t\t\tvm.favorite = !!response.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizFavoriteList(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tobjectType: '@',\r\n\t\t\t\tfavorites: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.favoritelist', \"FrontEnd/Core/Directives/Views/FavoriteList.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizFavoriteListController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizFavoriteListController.$inject = ['core.services.favorite'];\r\n\r\n\t\tfunction bizFavoriteListController(favoriteService) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Init = Init;\r\n\t\t\tvm.RemoveFavorite = RemoveFavorite;\r\n\r\n\t\t\tfunction RemoveFavorite(favorite) {\r\n\t\t\t\tfavoriteService.RemoveFavorite(favorite.ObjectType, favorite.ObjectId);\r\n\t\t\t\tvm.favorites.Remove(favorite);\r\n\t\t\t}\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tif (vm.favorites) return;\r\n\r\n\t\t\t\tif ($rootScope.FavMarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavMarkedCssClass = 'fa fa-heart biz-primary-icon';\r\n\r\n\t\t\t\tif ($rootScope.FavUnmarkedCssClass === undefined)\r\n\t\t\t\t\t$rootScope.FavUnmarkedCssClass = 'fa fa-heart-o';\r\n\r\n\t\t\t\tfavoriteService.GetFavorites(false, vm.objectType).then(GetFavoritesCallback);\r\n\r\n\t\t\t\tfunction GetFavoritesCallback(response) {\r\n\t\t\t\t\tvm.favorites = response.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizFavoriteEditList(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.favoritelist', \"FrontEnd/Core/Directives/Views/FavoriteEditList.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizFavoriteEditListController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t}\r\n\r\n\t\tbizFavoriteEditListController.$inject = ['core.services.favorite', 'bizCoreService', '$rootScope'];\r\n\r\n\t\tfunction bizFavoriteEditListController(favoriteService, bizCoreService, $rootScope) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvm.Tags = [];\r\n\t\t\tvm.Init = Init;\r\n\r\n\t\t\tfunction Init() {\r\n\t\t\t\tbizCoreService.GetAllTags($rootScope.LoggedInUser.CurrentCultureId).then(GetTagsCallback);\r\n\r\n\t\t\t\tfunction GetTagsCallback(response) {\r\n\t\t\t\t\tvm.Tags = response.data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// if (vm.favorites) return;\r\n\r\n\t\t\t\t// favoriteService.GetFavorites(false, vm.objectType).then(GetFavoritesCallback);\r\n\r\n\t\t\t\t// function GetFavoritesCallback(response) {\r\n\t\t\t\t// \tvm.favorites = response.data;\r\n\t\t\t\t// }\r\n\t\t\t}\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n\r\n\t\t\t//vm.$onInit = vm.Init;\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizHeader', bizHeaderDirective);\r\n angular.module('bizPartEngage').directive('bizGlobalSiteTitle', bizGlobalSiteTitleDirective);\r\n\r\n bizHeaderDirective.$inject = [\"bizCore\"];\r\n bizGlobalSiteTitleDirective.$inject = [];\r\n\r\n function bizGlobalSiteTitleDirective() {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n template: '',\r\n controller: bizGlobalSiteTitleController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizGlobalSiteTitleController.$inject = [\"base.service\"];\r\n\r\n function bizGlobalSiteTitleController(baseService) {\r\n var vm = this;\r\n\r\n baseService.GetGlobalSiteTitle().then(function (response) {\r\n vm.SiteTitle = response.data;\r\n });\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizHeaderDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.header', \"FrontEnd/Core/Directives/Views/Header.html\"),\r\n controller: bizHeaderController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizHeaderController.$inject = [\"core.users.service\", \"bizCoreService\", \"$window\", \"$filter\", \"$rootScope\", \"$element\"];\r\n\r\n function bizHeaderController(userService, bizCoreService, $window, $filter, $rootScope, $element) {\r\n var vm = this;\r\n vm.logo = portalSettings['logo'];\r\n vm.lastScrollTop = 0;\r\n vm.scrollTop = 0;\r\n vm.scrollDirection = '';\r\n\r\n vm.ShowLogin = false;\r\n vm.ShowFavorites = false;\r\n vm.ShowSearch = false;\r\n vm.ShowCultures = false;\r\n\r\n this.GoToAdmin = GoToAdmin;\r\n this.Logout = Logout;\r\n this.Search = Search;\r\n this.ChangeCulture = ChangeCulture;\r\n this.ToggleCollapseHeader = ToggleCollapseHeader;\r\n this.Init = Init;\r\n this.ClickOutsideMenu = ClickOutsideMenu;\r\n\r\n $rootScope.$watch('MiniSettings.Header.KeepBgClass',\r\n function (newVal, oldVal) {\r\n if (newVal && newVal != oldVal) {\r\n if ($rootScope.MiniSettings.Header.KeepBgClass === true)\r\n AddBgClass();\r\n else\r\n RemoveBgClass();\r\n }\r\n }\r\n );\r\n\r\n $rootScope.$on('CLOSE_ALL_MENUS', function (event, args) {\r\n CloseAllMenus();\r\n });\r\n\r\n $rootScope.$on('HIDE-LOGIN-DIRECTIVE', function (event, args) {\r\n vm.ShowLogin = false;\r\n $rootScope.$digest();\r\n });\r\n\r\n $rootScope.$on('SHOW-LOGIN-DIRECTIVE', function (event, args) {\r\n vm.ShowLogin = true;\r\n $rootScope.$digest();\r\n });\r\n\r\n function HighLightItem(showOverlay) {\r\n if (showOverlay === true) {\r\n angular.element('#base-home').addClass('highlight-header-item');\r\n }\r\n else {\r\n angular.element('#base-home').removeClass('highlight-header-item');\r\n }\r\n }\r\n\r\n function ClickOutsideMenu() {\r\n vm.ShowLogin = false;\r\n HighLightItem(false);\r\n\r\n $rootScope.$broadcast('CLICK_OUTSIDE_MENU');\r\n }\r\n\r\n function CloseAllMenus() {\r\n if (vm.ShowLogin || vm.ShowFavorites || vm.ShowSearch || vm.ShowCultures) {\r\n vm.ShowLogin = false;\r\n vm.ShowFavorites = false;\r\n vm.ShowSearch = false;\r\n vm.ShowCultures = false;\r\n }\r\n\r\n $rootScope.$digest();\r\n }\r\n\r\n function GoToAdmin() {\r\n $window.location.href = $filter('siteroot')('/admin');\r\n }\r\n\r\n function Logout() {\r\n console.log(\"logout btn\")\r\n userService.Logout();\r\n }\r\n\r\n function Search(searchText) {\r\n \treturn bizCoreService.Search(searchText).then(function (response) {\r\n \t\treturn response.data;\r\n \t});\r\n }\r\n\r\n function ChangeCulture(culture) {\r\n if (culture.QueryString)\r\n { \r\n $window.location.href = $filter('siteroot')('/' + culture.QueryString);\r\n }\r\n }\r\n\r\n function ToggleCollapseHeader() {\r\n $element.parent().toggleClass('collapsed');\r\n }\r\n\r\n function onScroll() {\r\n vm.scrollTop = $window.pageYOffset || document.documentElement.scrollTop;\r\n vm.scrollDirection = vm.lastScrollTop < vm.scrollTop ? 'down' : 'up';\r\n\r\n if (vm.scrollDirection === 'down' && vm.scrollTop > 5 && $rootScope.MiniSettings[\"Header\"][\"PreventHideOnScroll\"] === false) { // iOS fix 5px\r\n angular.element('.biz-header').addClass('hide-menu');\r\n }\r\n else {\r\n angular.element('.biz-header').removeClass('hide-menu');\r\n }\r\n\r\n var offsetLimit = 0;\r\n var offsetElement = angular.element('#header-bg-offset');\r\n if (offsetElement.length > 0 && offsetElement[0].offsetTop > 0) {\r\n var logoHeight = angular.element('.biz-site-logo-wrapper')[0].clientHeight;\r\n offsetLimit = offsetElement[0].offsetTop - (logoHeight !== undefined ? logoHeight : 0);\r\n }\r\n\r\n if (vm.scrollTop > offsetLimit) {\r\n AddBgClass();\r\n CloseAllMenus();\r\n }\r\n else if ($rootScope.MiniSettings[\"Header\"][\"KeepBgClass\"] === false) {\r\n RemoveBgClass();\r\n }\r\n vm.lastScrollTop = vm.scrollTop;\r\n }\r\n\r\n function Init() {\r\n vm.ShowTipSomeone = portalSettings['IsShowTipSomeoneEnabled'];\r\n vm.OpenIdProviderId = portalSettings[\"loginopenidp\"];\r\n\r\n if ($rootScope.MiniSettings.Header.KeepBgClass === true)\r\n AddBgClass();\r\n\r\n $window.addEventListener('scroll', onScroll);\r\n\r\n if (isSessionStorageTrue('highlightLogin')) {\r\n vm.ShowLogin = true;\r\n HighLightItem(true);\r\n deleteSessionStorage('highlightLogin');\r\n }\r\n }\r\n\r\n function AddBgClass() {\r\n //console.log('AddBgClass');\r\n angular.element('.biz-header').addClass('menu-w-bg');\r\n }\r\n\r\n function RemoveBgClass() {\r\n //console.log('RemoveBgClass');\r\n angular.element('.biz-header').removeClass('menu-w-bg');\r\n }\r\n\r\n this.$onInit = vm.Init; \r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizLayoutComponent', bizLayoutComponent);\r\n\tangular.module('bizPartEngage').service('bizLayoutComponentService', bizLayoutComponentService);\r\n\r\n\tbizLayoutComponent.$inject = [\"bizLayoutComponentService\", \"$compile\", \"container\"];\r\n\tbizLayoutComponentService.$inject = [\"$http\"]\r\n\r\n\tfunction bizLayoutComponent(bizLayoutComponentService, $compile, container) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"A\",\r\n\t\t\tlink: bizLayoutComponentLink\r\n\t\t}\r\n\r\n\t\tfunction bizLayoutComponentLink(scope, element, attrs) {\r\n\t\t\tvar htm = '';\r\n\r\n\t\t\tif (!attrs.bizLayoutComponent)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tbizLayoutComponentService.GetLayoutComponent(attrs.bizLayoutComponent).then(GetLayoutComponentCallback);\r\n\r\n\t\t\tfunction GetLayoutComponentCallback(response) {\r\n\t\t\t\tscope.LayoutComponent = BizPartCoreHelpers.getResponseValue(response, {});\r\n\r\n\t\t\t\tif (scope.LayoutComponent.Container) {\r\n\t\t\t\t\tscope.LayoutComponent.Container = new container(scope.LayoutComponent.Container);\r\n\t\t\t\t\tvar compiled = $compile(htm)(scope);\r\n\t\t\t\t\telement.html(compiled);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizLayoutComponentService($http) {\r\n\t\tvar servicepath = siteRootPath + \"api/layout/\";\r\n\r\n\t\tthis.GetLayoutComponent = function (type) {\r\n\t\t\treturn $http.get(servicepath + \"GetLayoutComponentForUser\", {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\ttype: type\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizLeaderboard', bizLeaderboardDirective);\r\n\r\n bizLeaderboardDirective.$inject = [\"bizCore\"];\r\n\r\n function bizLeaderboardDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n leaderboard: \"=\",\r\n header: \"@\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.leaderboard', \"FrontEnd/Core/Directives/Views/Leaderboard.html\"),\r\n controller: bizHeaderController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizHeaderController.$inject = [\"bizUser\"];\r\n\r\n function bizHeaderController(bizUser) {\r\n var vm = this;\r\n\r\n vm.IsMe = IsMe;\r\n\r\n function IsMe(user) {\r\n return user.UserId == bizUser.getLoggedInUser().Id;\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizDefaultLevelProgress', bizDefaultLevelProgressDirective);\r\n\r\n bizDefaultLevelProgressDirective.$inject = [\"bizCore\"];\r\n\r\n function bizDefaultLevelProgressDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: true,\r\n templateUrl: function (element, attrs) {\r\n \tif (!attrs.templateUrl)\r\n \t\treturn bizCoreProvider.getView('core.directives.defaultlevelprogress', \"FrontEnd/Core/Directives/Views/DefaultLevelProgress.html\");\r\n\t\t\t\t\r\n \treturn siteRootPath + attrs.templateUrl;\r\n },\r\n controller: bizDefaultLevelProgressController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizDefaultLevelProgressController.$inject = [\"$rootScope\", \"core.users.service\"];\r\n\r\n function bizDefaultLevelProgressController($rootScope, userService) {\r\n var vm = this;\r\n vm.CurrentLevel;\r\n vm.NextLevel;\r\n vm.UserExperienceSum = 0;\r\n vm.PercentageCompleted = 0;\r\n vm.ExpLeftToNextLevel = 0;\r\n\r\n vm.GetLoggedInUserDefaultLevelProgress = GetLoggedInUserDefaultLevelProgress;\r\n vm.CalculateExperience = CalculateExperience;\r\n\r\n function GetLoggedInUserDefaultLevelProgress() {\r\n userService.GetLoggedInUserDefaultLevelProgress().then(GetLoggedInUserDefaultLevelProgressSuccess);\r\n\r\n function GetLoggedInUserDefaultLevelProgressSuccess(response) {\r\n vm.CurrentLevel = response.data.m_Item1;\r\n vm.AllLevels = response.data.m_Item2;\r\n vm.UserExperienceSum = response.data.m_Item3;\r\n\r\n vm.CurrentLevelIndex = vm.AllLevels.GetIndexByValue('Id', vm.CurrentLevel.Id);\r\n\r\n for (var i = 0; i < vm.AllLevels.length; i++) {\r\n \tif (vm.AllLevels[i].RequiredExp > vm.CurrentLevel.RequiredExp) {\r\n \t\tvm.NextLevel = vm.AllLevels[i];\r\n \t\tbreak;\r\n \t}\r\n }\r\n\r\n vm.CalculateExperience();\r\n }\r\n }\r\n\r\n function CalculateExperience() {\r\n var sum = vm.UserExperienceSum - vm.CurrentLevel.RequiredExp;\r\n var needed = vm.NextLevel !== undefined ? vm.NextLevel.RequiredExp - vm.CurrentLevel.RequiredExp : 0;\r\n\r\n if(~~needed > 0) {\r\n vm.PercentageCompleted = (sum / needed) * 100;\r\n }\r\n else {\r\n vm.PercentageCompleted = 100;\r\n }\r\n\r\n vm.ExpLeftToNextLevel = needed > 0 ? needed - sum : 0;\r\n\r\n if (vm.PercentageCompleted > 100)\r\n \tvm.PercentageCompleted = 100;\r\n\r\n if(vm.ExpLeftToNextLevel < 0) {\r\n vm.ExpLeftToNextLevel = 0;\r\n }\r\n }\r\n\r\n if (IsPortalSettingTrue('IsLevelSystemEnabled'))\r\n vm.GetLoggedInUserDefaultLevelProgress();\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizMainMenu', bizMainMenuDirective);\r\n angular.module('bizPartEngage').directive('bizMenuJourney', bizMenuJourney);\r\n angular.module('bizPartEngage').directive('bizMenuJourneyCollection', bizMenuJourneyCollection);\r\n angular.module('bizPartEngage').directive('bizMenuJourneyStatus', bizMenuJourneyStatus);\r\n angular.module('bizPartEngage').service('bizMainMenuService', bizMainMenuService);\r\n\r\n bizMainMenuDirective.$inject = [\"bizCore\"];\r\n bizMenuJourney.$inject = [\"bizCore\"];\r\n bizMenuJourneyCollection.$inject = [\"bizCore\"];\r\n bizMenuJourneyStatus.$inject = [\"bizCore\"];\r\n bizMainMenuService.$inject = [\"$http\"];\r\n\r\n function bizMenuJourneyStatus(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: { \r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.menu.journey', \"FrontEnd/Core/Directives/Views/MenuJourneyStatus.html\"),\r\n controller: bizMenuJourneyStatusController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizMenuJourneyStatusController.$inject = [\"$rootScope\", \"bizJourneyService\"];\r\n\r\n function bizMenuJourneyStatusController($rootScope, bizJourneyService) {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n\r\n vm.SetCurrentJourney = SetCurrentJourney;\r\n vm.GoToNextJourneyObject = GoToNextJourneyObject;\r\n vm.SetNextJourneyObject = SetNextJourneyObject;\r\n vm.CloseJourneyPanel = CloseJourneyPanel;\r\n\r\n vm.JourneyPanelOpen = false;\r\n\r\n function CloseJourneyPanel() {\r\n vm.JourneyPanelOpen = false;\r\n }\r\n\r\n function GoToNextJourneyObject(event) {\r\n event.stopPropagation();\r\n\r\n bizJourneyService.GoToEngageItem(vm.NextJourneyObject);\r\n }\r\n\r\n function SetCurrentJourney() {\r\n $rootScope.JourneysInitialized.then(() => {\r\n if ($rootScope.Journeys) {\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n if ($rootScope.Journeys[i].IsCurrentJourney) {\r\n vm.CurrentJourney = $rootScope.Journeys[i];\r\n }\r\n }\r\n }\r\n\r\n vm.SetNextJourneyObject();\r\n });\r\n }\r\n\r\n function SetNextJourneyObject() {\r\n if (vm.CurrentJourney) {\r\n var nextObject;\r\n for (var i = 0; i < vm.CurrentJourney.EngageObjects.length; i++) {\r\n if (!nextObject && vm.CurrentJourney.EngageObjects[i].Status !== 3) {\r\n nextObject = vm.CurrentJourney.EngageObjects[i];\r\n }\r\n }\r\n vm.NextJourneyObject = nextObject;\r\n }\r\n }\r\n\r\n function Init() { \r\n vm.SetCurrentJourney();\r\n\r\n $rootScope.$on('CURRENT_JOURNEY_CHANGED', (event, args) => {\r\n vm.SetCurrentJourney();\r\n });\r\n\r\n $rootScope.$on('JOURNEY_OBJECT_UPDATED', (event, args) => {\r\n vm.SetNextJourneyObject();\r\n }); \r\n } \r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMenuJourney(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n journey: \"=?\",\r\n fromCollection: \"@?\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.menu.journey', \"FrontEnd/Core/Directives/Views/MenuJourney.html\"),\r\n controller: bizMenuJourneyController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizMenuJourneyController.$inject = [\"$rootScope\"];\r\n\r\n function bizMenuJourneyController($rootScope) {\r\n var vm = this;\r\n vm.Init = Init;\r\n vm.Round = Round;\r\n\r\n function Init() {\r\n\r\n }\r\n\r\n function Round(p) {\r\n return Math.round(p);\r\n }\r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMenuJourneyCollection(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n closeFunc: \"&\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.menu.journey', \"FrontEnd/Core/Directives/Views/MenuJourneyCollection.html\"),\r\n controller: bizMenuJourneyCollectionController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizMenuJourneyCollectionController.$inject = [\"$rootScope\", \"bizJourneyService\", \"$state\"];\r\n\r\n function bizMenuJourneyCollectionController($rootScope, bizJourneyService, $state) {\r\n var vm = this;\r\n vm.Init = Init;\r\n vm.GoToJourneyPage = GoToJourneyPage;\r\n vm.SetCurrentJourney = SetCurrentJourney;\r\n\r\n function SetCurrentJourney(id) {\r\n if ($rootScope.Journeys && $rootScope.Journeys.length) {\r\n $rootScope.SetCurrentJourney(id, true);\r\n vm.closeFunc();\r\n }\r\n }\r\n\r\n function GoToJourneyPage() {\r\n vm.closeFunc();\r\n $state.go(\"base.modules.journey\");\r\n }\r\n\r\n function Init() {\r\n \r\n }\r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMainMenuDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n menuItems: \"=\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.main.menu', \"FrontEnd/Core/Directives/Views/MainMenu.html\"),\r\n controller: bizMainMenuController,\r\n controllerAs: \"vm\",\r\n\t\t\tbindToController: true\r\n }\r\n\r\n bizMainMenuController.$inject = [\"$state\", \"$stateParams\", \"scrollService\", \"$rootScope\", \"bizMainMenuService\", \"core.users.service\", \"bizCoreService\", \"$window\", \"$filter\"];\r\n\r\n function bizMainMenuController($state, $stateParams, scrollService, $rootScope, bizMainMenuService, userService, bizCoreService, $window, $filter) {\r\n var vm = this;\r\n \tvm.GetItemLink = GetItemLink;\r\n vm.Navigate = Navigate;\r\n vm.IsActiveItem = IsActiveItem;\r\n vm.IsAnchorLink = IsAnchorLink;\r\n vm.HandleMenuClick = HandleMenuClick;\r\n vm.CurrentLocation = CurrentLocation;\r\n vm.Logout = Logout;\r\n vm.Login = Login;\r\n vm.ChangeCulture = ChangeCulture;\r\n vm.Init = Init;\r\n \r\n vm.ShowInstallPWA = ShowInstallPWA;\r\n vm.InstallPWA = InstallPWA;\r\n vm.HasInstalledPwa = false; \r\n vm.ShowJourneyWidget = false;\r\n\r\n vm.lastScrollTop = 0;\r\n vm.scrollTop = 0;\r\n vm.scrollDirection = '';\r\n vm.hasSentCloseEvent = false; \r\n\r\n \tvar objectTypeSettings = {\r\n \t\t100: {\r\n \t\t\tName: \"CMSPage\",\r\n \t\t\tState: \"base.modules.cms\",\r\n \t\t\tIdentifier: \"id\"\r\n \t\t}\r\n };\r\n\r\n function Logout() {\r\n userService.Logout();\r\n }\r\n\r\n function Login() {\r\n console.log(\"login\");\r\n if (vm.OpenIdProviderId) {\r\n $window.location.href = $filter('siteroot')('OpenIdLogin/' + vm.OpenIdProviderId);\r\n }\r\n }\r\n\r\n function ChangeCulture(culture) {\r\n if (culture.QueryString) {\r\n $window.location.href = $filter('siteroot')('/' + culture.QueryString);\r\n }\r\n }\r\n\r\n function HandleMenuClick(item, parentItem) {\r\n // Show/Hide sub-menus\r\n if (item.Children.length > 0) {\r\n if (item.Expanded === true) {\r\n item.Expanded = false;\r\n return;\r\n }\r\n\r\n for (var i = 0; i < $rootScope.MenuItems.length; i++) {\r\n $rootScope.MenuItems[i].Expanded = false;\r\n }\r\n\r\n item.Expanded = !item.Expanded;\r\n return;\r\n }\r\n\r\n if (parentItem)\r\n parentItem.Expanded = false;\r\n\r\n $rootScope.ExpandMainMenu = false;\r\n\r\n // External/http links\r\n if (item.Link.indexOf(window.location.hostname) > -1) {\r\n window.location.href = item.Link;\r\n return;\r\n }\r\n else if(item.Link.startsWith('http')) {\r\n window.open(item.Link, '_blank');\r\n return;\r\n }\r\n\r\n // Anchor links\r\n if (IsAnchorLink(item)) {\r\n\r\n if (item.Link.indexOf('#') == 0) {\r\n scrollService.ScrollTo($(item.Link), 0);\r\n }\r\n else {\r\n location.href = item.Link;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function CurrentLocation() {\r\n return location.href.replace(location.hash, '');\r\n } \r\n\r\n function IsActiveItem(item) {\r\n if(!item) return;\r\n\r\n var state = $state.current;\r\n\r\n if (typeof item === 'string') {\r\n if (item == state.name || (state.data && state.data.parentState === item)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n else if (item.Link == state.name ||\r\n state.data !== undefined && item.Link == state.data.parentState ||\r\n item.ControllerScope == state.name ||\r\n state.data !== undefined && item.ControllerScope === state.data.parentState) {\r\n return true;\r\n }\r\n else if (item.ObjectType == 100 && $stateParams !== undefined && $stateParams.id == item.ObjectIdentifier) {\r\n return true;\r\n }\r\n else { \r\n return false;\r\n }\r\n }\r\n\r\n function IsAnchorLink(item) {\r\n if (item.Link.indexOf('#') > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function GetItemLink(item) {\r\n\r\n \tif (!item.ObjectType)\r\n \t\treturn item.Link;\r\n\r\n \tvar setting = objectTypeSettings[item.ObjectType];\r\n \tif (setting) {\r\n \t\tvar link = String.format('{0}({{1}:\"{2}\"})', setting.State, setting.Identifier, item.ObjectIdentifier);\r\n \t\treturn link;\r\n \t}\r\n }\r\n\r\n function Navigate(url) {\r\n $state.go(url);\r\n }\r\n\r\n function ShowInstallPWA() {\r\n if (IsPortalSettingTrue('IsPWAEnabled') && $rootScope.mobile && pwaDeferredPrompt !== undefined && !vm.HasInstalledPwa) { \r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n function InstallPWA(e) {\r\n vm.HasInstalledPwa = true;\r\n installPWA(e);\r\n } \r\n\r\n function onScroll() {\r\n // only for desktop\r\n\r\n vm.scrollTop = $window.pageYOffset || document.documentElement.scrollTop;\r\n vm.scrollDirection = vm.lastScrollTop < vm.scrollTop ? 'down' : 'up';\r\n\r\n if (vm.scrollDirection === 'down' && vm.scrollTop > 5 && vm.hasSentCloseEvent === false) { // iOS fix 5px\r\n $rootScope.ExpandMainMenu = false;\r\n vm.hasSentCloseEvent = true;\r\n $rootScope.$digest();\r\n }\r\n\r\n if (vm.scrollDirection === 'up') {\r\n vm.hasSentCloseEvent = false;\r\n }\r\n\r\n vm.lastScrollTop = vm.scrollTop;\r\n }\r\n\r\n function Init() {\r\n if (IsPortalSettingTrue('IsJourneyEnabled')) {\r\n vm.ShowJourneyWidget = IsPortalSettingTrue('IsJourneyMenuWidgetEnabled');\r\n }\r\n vm.ShowTipSomeone = IsPortalSettingTrue('IsShowTipSomeoneEnabled');\r\n vm.OpenIdProviderId = portalSettings[\"loginopenidp\"];\r\n\r\n if ($rootScope.mobile === false)\r\n $window.addEventListener('scroll', onScroll);\r\n }\r\n\r\n this.$onInit = vm.Init; \r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMainMenuService($http) {\r\n var servicePath = siteRootPath + 'api/menu/'; \r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizMyNotes', bizMyNotes);\r\n angular.module('bizPartEngage').controller('biz.my.notes.edit.dialog', bizMyNotesEditDialogController);\r\n\r\n bizMyNotes.$inject = [\"bizCore\", \"core.users.service\"];\r\n bizMyNotesEditDialogController.$inject = [\"$mdDialog\", \"bizMediabankService\", \"bizCoreService\", \"core.mynotes.service\", \"$q\", \"$translate\"];\r\n\r\n function bizMyNotes(bizCore, userService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n limit: '@',\r\n limitDateFrom: '=?',\r\n limitDateTo: '=?'\r\n },\r\n templateUrl: bizCore.getView('core.directives.mynotes', \"FrontEnd/Core/Directives/Views/MyNotes.html\"),\r\n bindToController: true,\r\n controller: bizMyNotesController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizMyNotesController.$inject = ['$mdDialog', 'core.mynotes.service'];\r\n\r\n function bizMyNotesController($mdDialog, myNotesService) {\r\n var vm = this;\r\n vm.Notes = [];\r\n\r\n vm.EditMyNotesDialog = EditMyNotesDialog;\r\n vm.GetMyNotes = GetMyNotes;\r\n\r\n function EditMyNotesDialog() {\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/MyNotesEditDialog.html\",\r\n controller: 'biz.my.notes.edit.dialog',\r\n controllerAs: \"vm\",\r\n bindToController: true,\r\n locals: {\r\n limit: vm.limit,\r\n fromDate: vm.limitDateFrom, \r\n toDate: vm.limitDateTo,\r\n notes: angular.copy(vm.Notes),\r\n data: angular.copy(vm.Data)\r\n }\r\n }).then(EditClose);\r\n\r\n function EditClose(data) {\r\n vm.GetMyNotes();\r\n if (data) {\r\n vm.Data = data;\r\n }\r\n }\r\n }\r\n\r\n function GetMyNotes() {\r\n \r\n var from = BizPartCoreHelpers.getDateNow().subtract(100, 'days').toDate();\r\n var to = BizPartCoreHelpers.getDateNow().add(100, 'days').toDate();\r\n\r\n if (vm.limitDateFrom) { \r\n from = moment(vm.limitDateFrom).toDate();\r\n }\r\n\r\n if (vm.limitDateTo) { \r\n to = moment(vm.limitDateTo).toDate();\r\n }\r\n\r\n var limit = 4;\r\n if (vm.limit) {\r\n limit = ~~vm.limit;\r\n } \r\n\r\n myNotesService.GetMyNotes(limit, from, to).then(GetMyNotesSuccess);\r\n function GetMyNotesSuccess(response) {\r\n vm.Notes = response.data;\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetMyNotes();\r\n userService.GetLoggedInUserSetting(\"MY_NOTES\").then(GetSettingCallback);\r\n\r\n function GetSettingCallback(response) {\r\n var data = BizPartCoreHelpers.getResponseValue(response);\r\n if (data) {\r\n vm.Data = JSON.parse(data);\r\n } else {\r\n vm.Data = {\r\n ImageUrl: \"https://qeeptest.bizpart.com/Upload/5/Mediabank/Files/39210552-2472-4021-8ac8-06b0e9b59d0f.jpg\",\r\n Color: \"#FFF\"\r\n };\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizMyNotesEditDialogController($mdDialog, bizMediabankService, bizCoreService, myNotesService, $q, $translate) {\r\n var vm = this;\r\n\r\n vm.AddNote = AddNote;\r\n vm.Save = Save;\r\n vm.Close = Close;\r\n vm.SelectImage = SelectImage; \r\n\r\n //todo: fix some general color translations\r\n vm.Colors = [\r\n {\r\n Name: 'Svart',\r\n Id: '#000'\r\n },\r\n {\r\n Name: 'Vit',\r\n Id: '#FFF'\r\n }\r\n ];\r\n\r\n function AddNote() {\r\n var note = {\r\n Id: 0,\r\n Text: \"\"\r\n };\r\n\r\n vm.notes.unshift(note);\r\n }\r\n\r\n function Save() {\r\n vm.data.ImageUrl = vm.image ? vm.image.FileUrl : undefined;\r\n vm.data.Color = vm.selectedColor.Id;\r\n $q.all([\r\n bizCoreService.UpdateUserSetting(\"MY_NOTES\", JSON.stringify(vm.data)),\r\n myNotesService.SaveMyNotes(vm.notes)\r\n ])\r\n .then(function (response) {\r\n myNotesService.ClearPromiseCache();\r\n $mdDialog.hide(vm.data);\r\n }); \r\n }\r\n\r\n function Close(data) {\r\n $mdDialog.hide(data);\r\n }\r\n\r\n function SelectImage() {\r\n bizMediabankService.ShowMediabankDialog(vm.image, null, vm.uploadSettings).then(ShowMediabankDialogCallback);\r\n\r\n function ShowMediabankDialogCallback(file) {\r\n if (!file)\r\n return;\r\n vm.image = file;\r\n }\r\n } \r\n\r\n \r\n\r\n vm.$onInit = function () { \r\n vm.selectedColor = vm.Colors.GetItemByValue('Id', vm.data.Color);\r\n vm.image = {\r\n FileUrl: vm.data.ImageUrl\r\n };\r\n\r\n vm.uploadSettings = {\r\n FileType: bizMediabankService.FileTypes.Image,\r\n FileLocation: bizMediabankService.UploadLocations.MyText,\r\n FilePattern: '',\r\n IsPrivate: true,\r\n IsInvisible: false,\r\n IsPrivateControlHidden: true,\r\n IsInvisibleControlHidden: true,\r\n IsUser: true\r\n }; \r\n\r\n $translate('BIZMYNOTES_EDIT_NOTE_HEADER').then(function (translation) { \r\n var header = translation.toString(); \r\n header = header.replace('##FROM##', moment(vm.fromDate).format('DD MMMM'));\r\n header = header.replace('##TO##', moment(vm.toDate).format('DD MMMM'));\r\n vm.header = header;\r\n });\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizMyText', bizMyText); \r\n\r\n bizMyText.$inject = [\"bizCore\", \"core.users.service\"]; \r\n\r\n function bizMyText(bizCore, userService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settingKey: '@' \r\n },\r\n templateUrl: bizCore.getView('core.directives.mytext', \"FrontEnd/Core/Directives/Views/MyText.html\"),\r\n bindToController: true,\r\n controller: bizMyTextController,\r\n controllerAs: \"vm\" \r\n }\r\n\r\n bizMyTextController.$inject = ['$mdDialog'];\r\n\r\n function bizMyTextController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.DefaultData = {\r\n ImageUrl: '~/Images/mytext-default.png',\r\n Text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras vulputate sodales consectetur. Proin gravida felis vel dolor ornare, eu cursus est maximus.',\r\n Color: '#000'\r\n }; \r\n\r\n vm.Init = Init; \r\n vm.OpenEdit = OpenEdit; \r\n\r\n function OpenEdit() {\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/MyTextEdit.html\",\r\n controller: EditDialogController,\r\n controllerAs: \"vm\", \r\n bindToController: true, \r\n locals: {\r\n settingKey: vm.settingKey,\r\n data: angular.copy(vm.Data),\r\n settingKey: vm.settingKey\r\n }\r\n }).then(EditClose);\r\n\r\n function EditClose(data) { \r\n if (data) {\r\n vm.Data = data;\r\n }\r\n }\r\n\r\n EditDialogController.$inject = [\"$mdDialog\", \"bizMediabankService\", \"bizCoreService\"];\r\n\r\n function EditDialogController($mdDialog, bizMediabankService, bizCoreService) {\r\n var vm = this;\r\n vm.Save = Save;\r\n vm.Cancel = Cancel;\r\n\r\n vm.Colors = [\r\n {\r\n Name: 'Svart',\r\n Id: '#000'\r\n },\r\n {\r\n Name: 'Vit',\r\n Id: '#FFF'\r\n }\r\n ];\r\n\r\n vm.selectedColor = vm.Colors.GetItemByValue('Id', vm.data.Color);\r\n vm.image = {\r\n FileUrl: vm.data.ImageUrl\r\n };\r\n\r\n vm.uploadSettings = {\r\n FileType: bizMediabankService.FileTypes.Image,\r\n FileLocation: bizMediabankService.UploadLocations.MyText,\r\n FilePattern: '',\r\n IsPrivate: true,\r\n IsInvisible: false,\r\n IsPrivateControlHidden: true,\r\n IsInvisibleControlHidden: true,\r\n IsUser: true\r\n };\r\n\r\n function Save() {\r\n vm.data.ImageUrl = vm.image ? vm.image.FileUrl : undefined;\r\n vm.data.Color = vm.selectedColor.Id;\r\n bizCoreService.UpdateUserSetting(vm.settingKey, JSON.stringify(vm.data)).then(function (response) {\r\n $mdDialog.hide(vm.data);\r\n }); \r\n }\r\n\r\n function Cancel() {\r\n $mdDialog.hide();\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n userService.GetLoggedInUserSetting(vm.settingKey).then(GetSettingCallback);\r\n\r\n function GetSettingCallback(response) { \r\n var data = BizPartCoreHelpers.getResponseValue(response); \r\n if (data) {\r\n vm.Data = JSON.parse(data);\r\n } else {\r\n vm.Data = vm.DefaultData;\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n \r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizNotifications', bizNotifications);\r\n angular.module('bizPartEngage').constant('notificationSettingType', {\r\n FAB: 1,\r\n STANDARD: 2,\r\n DIALOG: 3\r\n });\r\n angular.module('bizPartEngage').constant('notificationPosition', {\r\n TOPLEFT: 1,\r\n TOPRIGHT: 2,\r\n BOTTOMLEFT: 3,\r\n BOTTOMRIGHT: 4,\r\n CENTER: 5\r\n });\r\n angular.module('bizPartEngage').provider('bizNotificationProvider', bizNotificationProvider);\r\n angular.module('bizPartEngage').service('bizNotificationService', bizNotificationService);\r\n\r\n bizNotifications.$inject = [\"bizCore\", \"bizNotificationProvider\", \"notificationSettingType\", \"notificationPosition\", \"bizNotificationService\"];\r\n bizNotificationProvider.$inject = [\"notificationSettingType\"];\r\n bizNotificationService.$inject = [\"$http\", \"$mdDialog\", \"$mdToast\"];\r\n\r\n function bizNotificationProvider(notificationSettingType) {\r\n function getView() {\r\n switch (notificationSettings.Type) {\r\n case notificationSettingType.FAB:\r\n return \"FrontEnd/Core/Directives/Views/NotificationsFAB.html\";\r\n case notificationSettingType.STANDARD:\r\n return \"FrontEnd/Core/Directives/Views/Notifications.html\";\r\n case notificationSettingType.DIALOG:\r\n return \"FrontEnd/Core/Directives/Views/NotificationsDialog.html\";\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n getView: getView,\r\n $get: function () {\r\n return {\r\n getView: getView,\r\n };\r\n }\r\n };\r\n }\r\n\r\n\tfunction bizNotifications(bizCoreProvider, bizNotificationProvider, notificationSettingType, notificationPosition, bizNotificationService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.notifications', bizNotificationProvider.getView()),\r\n controller: bizNotificationsController,\r\n controllerAs: \"vm\"\r\n }\r\n\r\n bizNotificationsController.$inject = [\"$rootScope\", \"$timeout\", \"$translate\", \"bizNotificationService\", \"$state\", \"bizEffects\", \"$transitions\", \"core.engage.service\", \"bizJourneyService\", \"bizUser\"]\r\n\r\n function bizNotificationsController($rootScope, $timeout, $translate, bizNotificationService, $state, bizEffects, $transitions, coreEngageService, bizJourneyService, bizUser) {\r\n var vm = this;\r\n vm.Fade = false;\r\n vm.IsPulsating = false;\r\n vm.CanFade = true;\r\n vm.DoGroup = false;\r\n vm.ShowNotifications = false;\r\n vm.FadeTimer = 6000;\r\n vm.Notifications = [];\r\n vm.GroupedNotifications = [];\r\n vm.FirstItemOfType = [];\r\n vm.Settings = notificationSettings;\r\n vm.Settings.Mascot = mascot; \r\n vm.MaxSubItemsLength = 5; \r\n vm.SubItemsGroupWithinSecounds = 3600; \r\n vm.MaxNotificationsToShow = 1;\r\n\r\n vm.AddNotification = AddNotification;\r\n vm.StartFadeTimer = StartFadeTimer;\r\n vm.CancelFadeTimer = CancelFadeTimer;\r\n vm.GetNotifications = GetNotifications;\r\n vm.GetPositionClass = GetPositionClass;\r\n vm.SetFade = SetFade;\r\n vm.GetHighestId = GetHighestId;\r\n vm.Pulsate = Pulsate;\r\n vm.StopPulsating = StopPulsating;\r\n vm.SetProperties = SetProperties;\r\n vm.GoToItem = GoToItem;\r\n vm.IsHighlighted = IsHighlighted;\r\n vm.InitSlick = InitSlick;\r\n vm.ExistInSubitems = ExistInSubitems;\r\n vm.GroupNotifications = GroupNotifications;\r\n vm.UnHighlightAllNotifications = UnHighlightAllNotifications;\r\n vm.NavigateTo = NavigateTo;\r\n vm.SetUrlRewrite = SetUrlRewrite;\r\n\r\n //keeping this method around, useful for testing\r\n vm.FakeMessageForTesting = FakeMessageForTesting;\r\n function FakeMessageForTesting(key, msg, objectType, settings) {\r\n var content = {\r\n Key: key || 'ENGAGE_OBJECT_DONE',\r\n Message: msg || 'You have completed X',\r\n NotificationId: getRandomInt(),\r\n ObjectType: objectType || 'MediabankFile',\r\n Settings: settings,\r\n Show: true \r\n }\r\n\r\n vm.AddNotification(undefined, {\r\n Content: JSON.stringify(content)\r\n })\r\n\r\n function getRandomInt(min, max) {\r\n var min = 1000000;\r\n var max = 9999999;\r\n return Math.floor(Math.random() * (max - min) + min);\r\n }\r\n }\r\n\r\n function InitSlick() {\r\n vm.SlickLoaded = false;\r\n vm.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n }\r\n $timeout(function () {\r\n vm.SlickLoaded = true;\r\n });\r\n }\r\n\r\n // $timeout(function() {\r\n // vm.AddNotification(null, {\r\n // NotificationId: 'abc',\r\n // HubKey: \"USER_NOTIFICATION\",\r\n // Content: JSON.stringify({\r\n // Key: \"ENGAGE_OBJECT_DONE\",\r\n // Message: \"Detta är ett test meddelande...\",\r\n // Subject: \"Test subject\"\r\n // }),\r\n // Settings: JSON.stringify({\r\n\r\n // })\r\n // });\r\n // }, 2500);\r\n\r\n function AddNotification(event, not) { \r\n \tif (!not.Content)\r\n \t\treturn;\r\n \r\n var notification = JSON.parse(not.Content); \r\n\r\n //to avoid dupes and/or missing notifications (as they also arrive via ws)\r\n if (vm.Notifications.GetItemByValue('NotificationId', notification.NotificationId) || vm.ExistInSubitems(notification.NotificationId))\r\n return;\r\n \r\n if (vm.LatestNotification?.Show) { \r\n if (!vm.Queue)\r\n vm.Queue = []; \r\n vm.Queue.push(not);\r\n return;\r\n }\r\n\r\n notification.Show = true; \r\n if (notification.Settings) {\r\n notification.Settings = JSON.parse(notification.Settings);\r\n }\r\n\r\n vm.Notifications.unshift(notification);\r\n vm.GroupNotifications();\r\n\r\n vm.StartFadeTimer(notification); \r\n vm.SetFade(false);\r\n vm.Pulsate();\r\n\r\n vm.SetUrlRewrite(notification);\r\n\r\n vm.LatestNotification = angular.copy(notification);\r\n\r\n if(notification.Settings && notification.Settings.Effect) {\r\n TriggerEffect(notification.Settings.Effect);\r\n }\r\n \r\n $timeout(function() {\r\n vm.LatestNotification.Show = false;\r\n if (vm.Queue?.length > 0) {\r\n var queueNotification = vm.Queue.shift(); \r\n $timeout(() => {\r\n vm.AddNotification(undefined, queueNotification);\r\n }, 1000);\r\n }\r\n }, 8000); \r\n }\r\n\r\n function TriggerEffect(effect) {\r\n bizEffects.Show(effect);\r\n }\r\n\r\n function GetHighestId() {\r\n var id = 0;\r\n for (var i = 0; i < vm.Notifications.length; i++) {\r\n if (vm.Notifications[i].NotificationId > id) {\r\n id = vm.Notifications[i].NotificationId;\r\n }\r\n }\r\n return id;\r\n }\r\n\r\n function StartFadeTimer(notification) {\r\n \tnotification.FadeTimer = $timeout(function () {\r\n \t\tnotification.FadeTimer = undefined;\r\n \t\tnotification.Fading = $timeout(function () {\r\n notification.Fading = undefined;\r\n notification.Show = false;\r\n \t\t}, 2000);\r\n \t}, vm.FadeTimer)\r\n }\r\n\r\n function CancelFadeTimer(notification) {\r\n \tif (notification.FadeTimer) {\r\n \t\t$timeout.cancel(notification.FadeTimer);\r\n \t\tnotification.FadeTimer = undefined;\r\n \t}\r\n \tif (notification.Fading) {\r\n \t\t$timeout.cancel(notification.Fading);\r\n \t\tnotification.Fading = undefined;\r\n \t}\r\n }\r\n\r\n function ExistInSubitems(id) { \r\n \r\n for (var g = 0; g < vm.GroupedNotifications.length; g++) {\r\n if (vm.GroupedNotifications[g].Items !== undefined) {\r\n for (var gi = 0; gi < vm.GroupedNotifications[g].Items.length; gi++) {\r\n if (vm.GroupedNotifications[g].Items[gi].NotificationId == id) {\r\n return true\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function GroupNotifications() {\r\n\r\n if (!vm.DoGroup) {\r\n vm.GroupedNotifications = vm.Notifications.slice();\r\n return;\r\n }\r\n\r\n var grouped = [];\r\n \r\n for (var index = 0; index < vm.Notifications.length; index++) {\r\n \r\n var not = vm.Notifications[index];\r\n var subItems = [not]; \r\n\r\n var nextIndex;\r\n var groupNext = true;\r\n for (nextIndex = index + 1; nextIndex < vm.Notifications.length && groupNext; nextIndex++) { \r\n var nextNot = vm.Notifications[nextIndex];\r\n var sameKey = not.Key === nextNot.Key;\r\n var duration = moment.duration(moment(not.DateSent).diff(nextNot.DateSent));\r\n var seconds = duration.asSeconds();\r\n var withinTime = seconds < vm.SubItemsGroupWithinSecounds;\r\n\r\n if (sameKey && withinTime && subItems.length < vm.MaxSubItemsLength) {\r\n subItems.push(nextNot);\r\n } else if(sameKey && withinTime) {\r\n //DO NOTHING... ELSE WE GROUP THE NEXT ONES BELOW...\r\n } \r\n else {\r\n groupNext = false; \r\n }\r\n } \r\n\r\n if (subItems.length == 1) {\r\n grouped.push(subItems[0]);\r\n } else {\r\n grouped.push({\r\n \"NotificationId\": not.NotificationId,\r\n \"Items\": subItems\r\n });\r\n var extraItemsAddedInMainLoop = subItems.length - 1;\r\n index = index + extraItemsAddedInMainLoop;\r\n }\r\n }\r\n vm.GroupedNotifications = grouped;\r\n console.log(vm.GroupedNotifications);\r\n\r\n vm.InitSlick();\r\n }\r\n\r\n function GetNotifications() {\r\n if (IsPortalSettingTrue('IsUserNotificationsEnabled') && bizUser.IsLoggedIn())\r\n bizNotificationService.GetLoggedInUserNotifications(10, 1).then(GetLoggedInUserNotificationsSuccess);\r\n\r\n function GetLoggedInUserNotificationsSuccess(response) {\r\n var notificationsFromServer = response.data; \r\n if (vm.Notifications.length > 0) {\r\n //to avoid dupes and/or missing notifications (as they also arrive via signalr)\r\n for (var i = 0; i < notificationsFromServer.length; i++) {\r\n if (!vm.Notifications.GetItemByValue('NotificationId', notificationsFromServer[i].NotificationId)) {\r\n vm.Notifications.push(notificationsFromServer[i]);\r\n }\r\n }\r\n } else {\r\n vm.Notifications = response.data;\r\n } \r\n\r\n vm.GroupNotifications();\r\n \r\n vm.SetProperties();\r\n vm.SetUrlRewrite();\r\n }\r\n }\r\n\r\n function GetPositionClass() {\r\n switch(vm.Settings.Position) {\r\n case notificationPosition.TOPLEFT:\r\n return \"top-left\";\r\n case notificationPosition.TOPRIGHT:\r\n return \"top-right\";\r\n case notificationPosition.BOTTOMLEFT:\r\n return \"bottom-left\";\r\n case notificationPosition.BOTTOMRIGHT:\r\n return \"bottom-right\";\r\n case notificationPosition.CENTER:\r\n return \"center\";\r\n }\r\n }\r\n\r\n function SetFade(val) {\r\n if(val === true && vm.CanFade === true && vm.ShowNotifications === false && vm.IsPulsating === false) {\r\n vm.Fade = true;\r\n }\r\n else {\r\n vm.Fade = false;\r\n $timeout(function(vm) {\r\n vm.SetFade(true);\r\n }, vm.FadeTimer, true, vm);\r\n }\r\n }\r\n\r\n function Pulsate(time) {\r\n vm.IsPulsating = true;\r\n\r\n if(~~time > 0) {\r\n $timeout(function(vm) {\r\n vm.StopPulsating();\r\n }, time, true, vm);\r\n }\r\n }\r\n\r\n function StopPulsating() {\r\n vm.IsPulsating = false;\r\n }\r\n\r\n function SetProperties() {\r\n for(var i = 0; i < vm.Notifications.length; i++) {\r\n if (vm.Notifications[i].ConfirmRead == false || moment(vm.Notifications[i].DateSent).isAfter(moment().subtract(1, 'minutes'))) {\r\n vm.Pulsate();\r\n } \r\n }\r\n }\r\n\r\n function SetUrlRewrite(item) {\r\n var engageObjectList = [];\r\n for (var i = 0; i < vm.Notifications.length; i++) {\r\n if ((!item || (item.ObjectType === vm.Notifications[i].ObjectType && item.ObjectId === vm.Notifications[i].ObjectId)) && coreEngageService.IsEngageObject(vm.Notifications[i].ObjectType)) {\r\n engageObjectList.push({\r\n Id: vm.Notifications[i].ObjectId,\r\n EngageObjectType: vm.Notifications[i].ObjectType\r\n });\r\n } \r\n }\r\n \r\n coreEngageService.GetEngageObjectsByObjectIdAndType(engageObjectList).then(GetEngageObjectsCallback);\r\n\r\n function GetEngageObjectsCallback(response) { \r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n for (var i = 0; i < result.length; i++) {\r\n if (result[i].UrlRewrite) {\r\n for (var j = 0; j < vm.Notifications.length; j++) {\r\n if (vm.Notifications[j].ObjectId === result[i].Id && coreEngageService.GetEngageObjectTypeId(vm.Notifications[j].ObjectType) === result[i].EngageObjectType) {\r\n vm.Notifications[j].ObjectUrlRewrite = result[i].UrlRewrite;\r\n if (vm.LatestNotification && vm.Notifications[j].NotificationId === vm.LatestNotification.NotificationId) {\r\n vm.LatestNotification.ObjectUrlRewrite = result[i].UrlRewrite;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function GoToItem(item) { \r\n\r\n //The types that should be clickable for any user (as long as they have access, which should be fixed on backend)\r\n if (coreEngageService.IsEngageObject(item.ObjectType)) { \r\n if (item.ObjectUrlRewrite) {\r\n coreEngageService.RedirectToEngageObject(item.ObjectType, item.ObjectUrlRewrite);\r\n } else {\r\n coreEngageService.RedirectToEngageObject(item.ObjectType, item.ObjectId);\r\n } \r\n return;\r\n } \r\n\r\n //The types that only should be clickable for the users own items\r\n if ((item.Settings && ~~item.Settings.ObjectOwnerUserId > 0 && item.Settings.ObjectOwnerUserId === $rootScope.LoggedInUser.Id)) { \r\n switch (item.ObjectType) {\r\n case 'GOAL':\r\n vm.NavigateTo(\"base.modules.goals.onegoal\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'TODO':\r\n vm.NavigateTo(\"base.modules.goals.onetask\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITY':\r\n vm.NavigateTo(\"base.modules.goals.activity\", { id: ~~item.ObjectId > 0 ? ~~item.ObjectId : 'new' });\r\n break;\r\n case 'ACTIVITYFORGOAL':\r\n vm.NavigateTo(\"base.modules.goals.activityforgoal\", { goalId: ~~item.ObjectId }); \r\n break;\r\n }\r\n }\r\n\r\n if (item.Key === \"JOURNEY_COMPLETED\") {\r\n if (item.Settings && item.Settings.Data && !item.Settings.Data.FeedbackLink) return;\r\n bizJourneyService.GetJourneySettings().then(GetJourneySettingsCallback);\r\n function GetJourneySettingsCallback(response) {\r\n var journeySettings = response.data;\r\n var feedbackPage = journeySettings.FeedbackPage;\r\n if (feedbackPage) {\r\n vm.NavigateTo(\"base.modules.cms\", { id: feedbackPage, params: { objectKey: 'JOURNEY', objectId: ~~item.ObjectId} });\r\n } \r\n } \r\n }\r\n }\r\n\r\n function NavigateTo(state, params) { \r\n $state.go(state, params);\r\n //vm.ShowNotifications = false;\r\n //if(vm.LatestNotification) {\r\n // vm.LatestNotification.Show = false; \r\n //}\r\n }\r\n\r\n function UnHighlightAllNotifications() {\r\n for (var i = 0; i < vm.SortedNotifications.length; i++) {\r\n vm.SortedNotifications[i].NoHighlight = true;\r\n }\r\n }\r\n\r\n function IsHighlighted(index) {\r\n if (vm.MaxNotificationsToShow <= 1) {\r\n return false;\r\n }\r\n\r\n if (vm.SortedNotifications) {\r\n if (vm.SortedNotifications[index].NoHighlight) {\r\n return false;\r\n }\r\n\r\n if (index == 0) \r\n return true;\r\n\r\n if (index > 0 && vm.SortedNotifications[index].Key !== undefined) { \r\n var duration = moment.duration(moment(vm.SortedNotifications[0].DateSent).diff(vm.SortedNotifications[index].DateSent));\r\n var seconds = duration.asSeconds(); \r\n\r\n if (seconds < 120) \r\n return true;\r\n }\r\n \r\n }\r\n\r\n return false;\r\n }\r\n\r\n function Init() {\r\n $rootScope.$on(\"HUB_USER_NOTIFICATION\", vm.AddNotification);\r\n\r\n vm.GetNotifications();\r\n\r\n $timeout(function (vm) {\r\n vm.SetFade(true);\r\n }, 3000, true, vm);\r\n\r\n //$timeout(function (vm) {\r\n // vm.SetFade(true);\r\n //}, vm.FadeTimer, true, vm);\r\n\r\n //$timeout(() => {\r\n // var settings = {\r\n // EmojiIcon: '🥳'\r\n // };\r\n // vm.FakeMessageForTesting(undefined, undefined, undefined, JSON.stringify(settings));\r\n //}, 2000);\r\n\r\n //$timeout(() => {\r\n // vm.FakeMessageForTesting(undefined, \"Another new message\");\r\n //}, 5000);\r\n }\r\n\r\n vm.$onInit = Init;\r\n\r\n //hide notifications when going to another page\r\n $transitions.onStart({}, function () { \r\n vm.ShowNotifications = false; \r\n if(vm.LatestNotification) {\r\n vm.LatestNotification.Show = false; \r\n }\r\n }); \r\n }\r\n\r\n return directive;\r\n\t}\r\n\r\n\tfunction bizNotificationService($http, $mdDialog, $mdToast) {\r\n\r\n this.GetLoggedInUserNotifications = function(max, page) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserNotifications?' + $.param({ max: max, page: page }));\r\n };\r\n\r\n\t\tthis.CustomNotificationHandlers = {\r\n\t\t\t\"POPUP\": {\r\n\t\t\t\tEnabled: true,\r\n\t\t\t\tHandler: PopupNotificationHandler\r\n\t\t\t},\r\n\t\t\t\"CUSTOM\": {\r\n\t\t\t\tEnabled: true,\r\n\t\t\t\tHandler: CustomNotificationHandler\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction CustomNotificationHandler(notification) {\r\n\t\t\tvar template = '' + notification.Message + '';\r\n\t\t\t$mdToast.show({\r\n\t\t\t\tposition: 'top center',\r\n\t\t\t\tparent: angular.element(document.body),\r\n\t\t\t\thideDelay: 20000,\r\n\t\t\t\ttemplate: template,\r\n\t\t\t\tautoWrap: true,\r\n\t\t\t\tcontrollerAs: 'vm',\r\n\t\t\t\tcontroller: function ($mdToast) {\r\n\t\t\t\t\tvar vm = this;\r\n\t\t\t\t\tvm.close = function () {\r\n\t\t\t\t\t\t$mdToast.hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction PopupNotificationHandler(notification) {\r\n\t\t\t$mdDialog.show({\r\n\t\t\t\tparent: angular.element(document.body),\r\n\t\t\t\tclickOutsideToClose: true,\r\n\t\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/PopupNotification.html\",\r\n\t\t\t\tcontrollerAs: \"vm\",\r\n\t\t\t\tbindToController: true,\r\n\t\t\t\tmultiple: true,\r\n\t\t\t\tskipHide: true,\r\n\t\t\t\tcontroller: PopupNotificationController,\r\n\t\t\t\tlocals: {\r\n\t\t\t\t\tNotification: notification\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tfunction PopupNotificationController() {\r\n\t\t\t\tvar vm = this;\r\n\r\n\t\t\t\tvm.Close = Close;\r\n\r\n\t\t\t\tfunction Close() {\r\n\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizOpenLoginBtns', bizOpenLoginBtnsDirective);\r\n\r\n bizOpenLoginBtnsDirective.$inject = [\"bizCore\", \"$filter\", \"loginService\"];\r\n\r\n function bizOpenLoginBtnsDirective(bizCore, $filter, loginService) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n openIdOnly: \"@?\"\r\n },\r\n templateUrl: bizCore.getView('core.directives.openidloginbtns', \"FrontEnd/Core/Directives/Views/OpenIdLoginBtns.html\"),\r\n bindToController: true,\r\n controller: bizOpenLoginBtnsController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n function bizOpenLoginBtnsController() {\r\n var vm = this;\r\n\r\n \r\n vm.GoToOpenIdLogin = GoToOpenIdLogin; \r\n\r\n function GoToOpenIdLogin(provider) {\r\n window.location.href = $filter('siteroot')('~/OpenIdLogin/' + provider.Id);\r\n }\r\n\r\n vm.$onInit = function () { \r\n loginService.GetActiveOpenIdProviders().then(GetActiveOpenIdProvidersSuccess);\r\n\r\n function GetActiveOpenIdProvidersSuccess(response) {\r\n vm.Providers = response.data;\r\n } \r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizProfileMenu', bizProfileMenuDirective);\r\n\r\n bizProfileMenuDirective.$inject = [\"bizCore\"];\r\n\r\n function bizProfileMenuDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: true,\r\n templateUrl: bizCoreProvider.getView('core.directives.profilemenu', \"FrontEnd/Core/Directives/Views/ProfileMenu.html\"),\r\n controller: bizCoreProvider.getController('core.directives.profilemenu', bizProfileMenuController),\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizProfileMenuController.$inject = [\"$rootScope\"];\r\n\r\n function bizProfileMenuController($rootScope) {\r\n \tvar vm = this;\r\n\t\t\tvm.IsActive = IsActive;\r\n\r\n\t\t\tfunction IsActive(m) {\r\n\t\t\t\tif(m.State === $rootScope.CurrentState.name || m.State === $rootScope.CurrentState.data?.parentState)\r\n\t\t\t\t\treturn true;\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n \t$rootScope.Initialized.then(function () {\r\n \t\tvm.States = [{\r\n \t\t\tPhrase: \"CORE.MYPAGE\",\r\n \t\t\tState: \"base.core.profile.home\",\r\n \t\t\tIcon: \"fa fa-user\"\r\n \t\t}, {\r\n \t\t\tPhrase: \"CORE.LEADERBOARDS\",\r\n \t\t\tState: \"base.core.profile.leaderboards\",\r\n \t\t\tIcon: \"fa fa-bar-chart\",\r\n \t\t\tEnabled: $rootScope.HasModuleAccess('LEVEL_SYSTEM', $rootScope.AccessTypeRight.Read),\r\n \t\t\tPortalSettingForEnable: \"IsLevelSystemEnabled\"\r\n \t\t}, {\r\n \t\t\tPhrase: \"CORE.MYCOLLEAGUES\",\r\n \t\t\tState: \"base.core.profile.colleagues\",\r\n \t\t\tIcon: \"fa fa-users\",\r\n \t\t\tEnabled: $rootScope.HasModuleAccess('UNITS', $rootScope.AccessTypeRight.Read),\r\n \t\t\tPortalSettingForEnable: \"IsUnitEnabled\"\r\n \t\t}, {\r\n Phrase: \"CORE.WELCOMEPAGE\",\r\n \t\t\tState: \"base.core.welcome\",\r\n \t\t\tIcon: \"fas fa-door-open\"\r\n }, {\r\n Phrase: \"CORE.MYSETTINGS\",\r\n State: \"base.core.profile.settings\",\r\n Icon: \"fa fa-cog\"\r\n }];\r\n \t})\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizSearch', bizSearchDirective);\r\n\tangular.module('bizPartEngage').service('bizSearchService', bizSearchService);\r\n\r\n\tbizSearchDirective.$inject = [\"bizCore\"];\r\n\tbizSearchService.$inject = [\"$state\"];\r\n\r\n function bizSearchDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n \tReferrerType: \"@referrerType\",\r\n\t\t\t\tReferrerId: \"@referrerId\",\r\n Expand: \"=?expand\",\r\n ExplicitIndexList: \"@explicitIndexList\",\r\n Source: \"@source\",\r\n },\r\n templateUrl: function (element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return bizCoreProvider.getView('core.directives.search', \"FrontEnd/Core/Directives/Views/Search.html\")\r\n }\r\n },\r\n controller: bizSearchController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n }\r\n\r\n bizSearchController.$inject = [\"core.users.service\", \"bizCoreService\", \"bizSearchService\", \"$state\", \"$rootScope\"];\r\n\r\n function bizSearchController(userService, bizCoreService, bizSearchService, $state, $rootScope) {\r\n \t var vm = this;\r\n\t\t vm.MaxHits = 20;\r\n vm.CanSearch = true;\r\n\r\n \t vm.Search = Search; \t\r\n \t vm.GoToResult = GoToResult;\r\n vm.GoToResults = GoToResults;\r\n vm.ClearForm = ClearForm;\r\n vm.GoToResults = GoToResults;\r\n vm.GetCustomValue = GetCustomValue;\r\n\r\n vm.HitsIncement = 4;\r\n\r\n function ClearForm() {\r\n vm.SearchText = '';\r\n vm.Expand = false;\r\n vm.Results = null;\r\n }\r\n\r\n \t function GoToResults() {\r\n \t\t vm.Expand = false;\r\n\r\n \t\t if (!vm.SearchText)\r\n \t\t\t return;\r\n\r\n \t\t $state.go('base.modules.search', { query: vm.SearchText});\r\n \t }\r\n\r\n function Search() {\r\n if (!vm.SearchText || vm.SearchText.length < bizSearchService.MinSearchTermLength || !vm.CanSearch)\r\n \t\t return;\r\n\r\n vm.SearchIndexList = null;\r\n\r\n \t\t vm.SearchIndexList = [\r\n { Index: 2, SearchIndexExternalName: \"Page\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 3, SearchIndexExternalName: \"Blog\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 4, SearchIndexExternalName: \"Dictionary\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 5, SearchIndexExternalName: \"Video\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n { Index: 6, SearchIndexExternalName: \"Educations\", TotalHits: vm.HitsIncement, CustomFilters: [] },\r\n ];\r\n\t\t\t\t\r\n\t\t\t\tvm.CanSearch = false;\r\n\t\t\t\tsetTimeout(function(vm) {\r\n\t\t\t\t\tvm.CanSearch = true;\r\n }, 500, vm);\r\n\r\n return bizCoreService.Search(vm.SearchText, vm.MaxHits, vm.ReferrerType, vm.ReferrerId, [], vm.SearchInIndexes).then(SearchCallback);\r\n\r\n \tfunction SearchCallback(response) {\r\n \t\tvar results = BizPartCoreHelpers.getResponseValue(response, {});\r\n\r\n \t\tfor (var i = 0; i < results.IndexList.length; i++) {\r\n \t\t results.IndexList[i].Items = results.ResultItems.GetItemsByValue('Index', results.IndexList[i].Index);\r\n \t\t}\r\n\r\n if (vm.ExplicitIndexNumbers && vm.ExplicitIndexNumbers.length > 0)\r\n results.IndexList = results.IndexList.filter(r => vm.ExplicitIndexNumbers.includes(r.Index))\r\n\r\n if (typeof GetSearchResultCallbackFn === 'function') {\r\n results = GetSearchResultCallbackFn(results, vm.Source, $rootScope);\r\n }\r\n\r\n vm.Results = results;\r\n \t\tvm.Expand = true;\r\n \t}\r\n \t}\r\n\r\n function GetCustomValue(item, key) {\r\n var customValue = item.CustomValues.GetItemsByValue('Key', key);\r\n\r\n if (customValue != null && customValue.length == 1) {\r\n return customValue[0].Value;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n function GoToResult(item) {\r\n vm.Expand = false;\r\n bizCoreService.LogSearch(item);\r\n const itemUrl = bizSearchService.GetItemUrl(item);\r\n\r\n if (itemUrl)\r\n window.location.assign(itemUrl);\r\n }\r\n\r\n function Init() {\r\n vm.SearchIndexList = [\r\n { Index: 2, SearchIndexExternalName: \"Page\", TotalHits: vm.HitsIncement },\r\n { Index: 3, SearchIndexExternalName: \"Blog\", TotalHits: vm.HitsIncement },\r\n { Index: 4, SearchIndexExternalName: \"Dictionary\", TotalHits: vm.HitsIncement },\r\n { Index: 5, SearchIndexExternalName: \"Video\", TotalHits: vm.HitsIncement },\r\n { Index: 6, SearchIndexExternalName: \"Educations\", TotalHits: vm.HitsIncement },\r\n ];\r\n\r\n vm.SearchInIndexes = vm.SearchIndexList;\r\n if (vm.ExplicitIndexList) {\r\n vm.ExplicitIndexNumbers = vm.ExplicitIndexList.split(',').map(s => parseInt(s.trim(), 10));\r\n vm.SearchInIndexes = vm.SearchIndexList.filter(si => vm.SearchIndexList.some(e => vm.ExplicitIndexNumbers.includes(si.Index)));\r\n }\r\n }\r\n\t\t\t\r\n\t\t\tthis.$onInit = Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizSearchService($state) {\r\n this.MinSearchTermLength = 3;\r\n this.CustomIndexUrls = {};\r\n\r\n this.GetItemUrl = function (item) {\r\n if (typeof GetSearchResultItemUrlFn === 'function') {\r\n return GetSearchResultItemUrlFn(item, $state);\r\n }\r\n\r\n if (item.State == 'base.modules.educations') {\r\n // temphack for scorm\r\n return url = $state.href(item.State);\r\n }\r\n\r\n \t\t var url = $state.href(item.State, JSON.parse(item.StateParameters));\r\n\r\n \t\t if (!this.CustomIndexUrls[item.SearchIndexExternalName])\r\n \t\t\t return url;\r\n\r\n \t\t for (var i = 0; i < this.CustomIndexUrls[item.SearchIndexExternalName].length; i++) {\r\n \t\t\t if (this.CustomIndexUrls[item.SearchIndexExternalName][i].ItemIds.indexOf(item.ItemId) > -1) {\r\n \t\t\t\t return $state.href(this.CustomIndexUrls[item.SearchIndexExternalName][i].State, this.CustomIndexUrls[item.SearchIndexExternalName][i].StateParams)\r\n\t\t\t\t\t\t + this.CustomIndexUrls[item.SearchIndexExternalName][i].Query.replace(\"#ITEMID#\", item.ItemId);\r\n \t\t\t }\r\n \t\t }\r\n\r\n \t\t return url;\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizSimulateUser', bizSimulateUser);\r\n angular.module('bizPartEngage').service('bizSimulateUserService', bizSimulateUserService);\r\n\r\n bizSimulateUser.$inject = [];\r\n bizSimulateUserService.$inject = [\"$http\"];\r\n\r\n function bizSimulateUser() {\r\n return {\r\n restrict: \"E\",\r\n templateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/SimulateUser.html\",\r\n controllerAs: \"vm\",\r\n controller: bizSimulateUserController,\r\n bindToController: true,\r\n scope: {\r\n simulating: \"=?\",\r\n isAllowedToSimulate: \"=?\"\r\n }\r\n }\r\n }\r\n\r\n bizSimulateUserController.$inject = [\"$rootScope\", \"$window\", \"$filter\", \"bizSimulateUserService\"];\r\n\r\n function bizSimulateUserController($rootScope, $window, $filter, bizSimulateUserService) {\r\n var vm = this;\r\n\r\n vm.Init = Init; \r\n vm.CancelSimulation = CancelSimulation;\r\n vm.SimulateShadowUser = SimulateShadowUser; \r\n\r\n function CancelSimulation() {\r\n vm.Preparing = true;\r\n bizSimulateUserService.CancelSimulation().then(CancelSimulationCallback);\r\n\r\n function CancelSimulationCallback(response) {\r\n var simulation = response.data;\r\n deleteCookie(\"BizPartAuthToken\");\r\n setBizPartAuthToken(simulation.SimulatedByUserToken, simulation.SimulatedByUserId, true);\r\n deleteSessionStorage(\"SimulateDate\");\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n\r\n function SimulateShadowUser(key) {\r\n vm.Preparing = true;\r\n bizSimulateUserService.SimulateShadowUser(key).then(SimulateUserCallback);\r\n\r\n function SimulateUserCallback(response) {\r\n\r\n var userSession = response.data;\r\n if (!userSession)\r\n return;\r\n\r\n setBizPartAuthToken(userSession.Token, userSession.UserId);\r\n deleteLocalStorage('HasShownWelcomeGuide');\r\n $window.location.href = $filter('siteroot')('/');\r\n }\r\n }\r\n \r\n function Init() {\r\n if ($rootScope.HasModuleAccess('SHADOW_USER_SIMULATION', '10') || isSimulatingShadowUser) {\r\n bizSimulateUserService.GetShadowUserSimulationInfo().then(GetShadowUserSimulationInfoCallback);\r\n\r\n function GetShadowUserSimulationInfoCallback(response) {\r\n vm.ShadowUserSimulationInfo = response.data;\r\n }\r\n }\r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n\r\n function bizSimulateUserService($http) {\r\n return {\r\n GetShadowUserSimulationInfo: GetShadowUserSimulationInfo,\r\n SimulateShadowUser: SimulateShadowUser,\r\n CancelSimulation: CancelSimulation\r\n };\r\n\r\n function GetShadowUserSimulationInfo() {\r\n return $http.get(siteRootPath + 'api/UserSimulation/GetShadowUserSimulationInfo', {});\r\n }\r\n\r\n function SimulateShadowUser(key) {\r\n return $http.post(siteRootPath + 'api/UserSimulation/SimulateUser', {\r\n ShadowUserConfigKey: key\r\n });\r\n }\r\n\r\n function CancelSimulation() {\r\n return $http.post(siteRootPath + 'api/User/CancelUserSimulation');\r\n } \r\n }\r\n})(window.angular);","(function (angular) {\r\n\tangular.module('bizPartEngage').directive('bizSocialShare', bizSocialShareDirective);\r\n\tangular.module('bizPartEngage').service('bizSocialShareService', bizSocialShareService);\r\n\r\n\tbizSocialShareDirective.$inject = [\"bizCore\", \"Socialshare\"];\r\n\tbizSocialShareService.$inject = [\"$http\"];\r\n\r\n\tfunction bizSocialShareDirective(bizCoreProvider, Socialshare) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tobjectId: \"@\",\r\n\t\t\t\tobjectType: \"@\",\r\n\t\t\t\tobjectName: \"@\",\r\n\t\t\t\tuiStateName: \"@\",\r\n\t\t\t\tuiStateParams: \"=\",\r\n\t\t\t\tobject: \"=?\",\r\n\t\t\t\tdisabledProviders: \"=?\",\r\n\t\t\t\tlikeActions: \"@\",\r\n likeActionObjectType: \"@\",\r\n useMenu: '=?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: function (element, attr) {\r\n\t\t\t\tif (attr.templateurl) {\r\n\t\t\t\t\treturn siteRootPath + attr.templateurl;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn bizCoreProvider.getView('core.directives.socialshare', \"FrontEnd/Core/Directives/Views/SocialShare.html\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbindToController: true,\r\n\t\t\tcontroller: bizSocialShareController,\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t};\r\n\r\n bizSocialShareController.$inject = [\"$rootScope\", \"$scope\", \"$state\", \"bizSocialShareService\", \"$mdToast\"];\r\n\r\n function bizSocialShareController($rootScope, $scope, $state, bizSocialShareService, $mdToast) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Providers = [{\r\n\t\t\t\tName: \"Twitter\",\r\n Value: \"twitter\",\r\n Icon: \"fab fa-twitter-square\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Facebook\",\r\n Value: \"facebook\",\r\n Icon: \"fab fa-facebook-square\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Linkedin\",\r\n Value: \"linkedin\",\r\n Icon: \"fab fa-linkedin\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Email\",\r\n Value: \"email\",\r\n Icon: \"fas fa-envelope-square\"\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Messenger\",\r\n Value: \"facebook-messenger\",\r\n Icon: \"fab fa-facebook-messenger\",\r\n\t\t\t\tMobileOnly: true\r\n\t\t\t}, {\r\n\t\t\t\tName: \"Whatsapp\",\r\n Value: \"whatsapp\",\r\n Icon: \"fab fa-whatsapp-square\",\r\n\t\t\t\tMobileOnly: true\r\n\t\t\t}\r\n\t\t\t];\r\n\r\n\t\t\tvm.Share = Share;\r\n\t\t\tvm.SetUrl = SetUrl;\r\n\t\t\tvm.GetShareUrl = GetShareUrl;\r\n\t\t\tvm.ShowShare = false;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.OnCopySuccess = OnCopySuccess;\r\n\r\n function OnCopySuccess(e) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Länk kopierad') \r\n );\r\n }\r\n\r\n\t\t\tfunction GetShareUrl() {\r\n\t\t\t\treturn vm.Url + '?s=' + vm.TrackingId;\r\n\t\t\t}\r\n\r\n\t\t\tfunction SetUrl() {\r\n\t\t\t\tvar state = vm.uiStateName || $state.current.name;\r\n\t\t\t\tvar params = vm.uiStateParams || $state.params;\r\n\r\n\t\t\t\tvm.Url = $state.href(state, params, { absolute: true });\r\n\t\t\t}\r\n\r\n\t\t\tfunction Share(provider) {\r\n\t\t\t\tvm.Sharing = true;\r\n\r\n\t\t\t\tvar share = {\r\n\t\t\t\t\tTrackingId: vm.TrackingId,\r\n\t\t\t\t\tProvider: provider.Value,\r\n\t\t\t\t\tObjectId: vm.objectId,\r\n\t\t\t\t\tObjectType: vm.objectType,\r\n\t\t\t\t\tUrl: vm.Url\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbizSocialShareService.AddSocialShare(share).then(AddSocialShareCallback);\r\n\r\n\t\t\t\tfunction AddSocialShareCallback() {\r\n\t\t\t\t\tvm.Sharing = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.TrackingId = Math.random().toString(36).substr(2, 10);\r\n\t\t\t}\r\n\r\n\t\t\tfunction PerformLikeAction(action) {\r\n\t\t\t if (!action.LikeActionPerformedByUser) {\r\n\t\t\t var LikeActionModel =\r\n {\r\n LikedUserId: vm.object.CreatedByUsr,\r\n LikeKey: vm.likeActionObjectType,\r\n ObjectId: vm.object.Id,\r\n ActionId: action.Action.Id,\r\n Comment: \"Like action performed from social share directive.\"\r\n\t\t\t }\r\n\t\t\t bizSocialShareService.PerformLikeAction(LikeActionModel);\r\n\t\t\t action.LikeActionPerformedByUser = true;\r\n\t\t\t action.Count++;\r\n\t\t\t }\r\n\t\t\t}\r\n\r\n\t\t\tvm.$onInit = function () {\r\n\t\t\t\tvm.TrackingId = Math.random().toString(36).substr(2, 10);\r\n\t\t\t\tvm.SetUrl();\r\n\t\t\t\tif (!vm.object && bizSocialShareService.loadedObject) {\r\n\t\t\t\t console.log(bizSocialShareService.loadedObject);\r\n\t\t\t\t vm.object = bizSocialShareService.loadedObject;\r\n\t\t\t\t vm.likeActionObjectType = \"BLOGENTRY\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.disabledProviders) {\r\n\t\t\t\t\tvm.Providers = vm.Providers.Where(function (provider) {\r\n\t\t\t\t\t\treturn vm.disabledProviders.indexOf(provider.Value) == -1;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizSocialShareService($http) {\r\n\r\n\t this.loadedObject = {};\r\n\r\n\t var controllerPath = siteRootPath + \"api/SocialShareUser/\";\r\n\t var likeActionPath = siteRootPath + \"api/LikeAction/\";\r\n\r\n\t\tthis.AddSocialShare = function (share) {\r\n\t\t\treturn $http.post(controllerPath + \"AddSocialShare\", share, {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.AddSocialShareClick = function (click) {\r\n\t\t\treturn $http.post(controllerPath + \"AddSocialShareClick\", click, {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.PerformLikeAction = function (LikeActionModel) {\r\n\t\t return $http.post(likeActionPath + \"PerformLikeAction\", LikeActionModel, {\r\n\t\t headers: {\r\n\t\t IgnoreLoader: true\r\n\t\t }\r\n\t\t });\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module(\"bizPartEngage\").directive(\"bizTipSomeone\", bizTipSomeone);\r\n\r\n\tbizTipSomeone.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizTipSomeone(bizCore) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {\r\n\t\t\t\tfromMobileMenu: '@?'\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCore.getView('core.directives.tipsomeone', \"FrontEnd/Core/Directives/Views/tip-someone.html\"),\r\n\t\t\tbindToController: true,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tcontroller: bizTipSomeoneController\r\n\t\t};\r\n\r\n\t\tbizTipSomeoneController.$inject = [\"$rootScope\", \"$http\", \"$mdDialog\", \"$timeout\"];\r\n\r\n\t\tfunction bizTipSomeoneController($rootScope, $http, $mdDialog, $timeout) {\r\n\t\t\tvar vm = this;\r\n\r\n\t\t\tvm.Initialize = Initialize;\r\n\t\t\tvm.OpenPanel = OpenPanel;\r\n\t\t\t\r\n\r\n\t\t\tfunction OpenPanel() {\r\n\t\t\t\t$mdDialog.show({\r\n\t\t\t\t\tparent: angular.element(document.body),\r\n\t\t\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Core/Directives/Views/tip-someone-popup.html\",\r\n\t\t\t\t\tclickOutsideToClose: true,\r\n\t\t\t\t\tescapeToClose: true,\r\n\t\t\t\t\tcontroller: popupController,\r\n\t\t\t\t\tcontrollerAs: \"vm\",\r\n\t\t\t\t\tlocals: {\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbindToController: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\tpopupController.$inject = [\"$mdDialog\"];\r\n\t\t\t\tfunction popupController($mdDialog) {\r\n\t\t\t\t\tvar vm = this;\r\n\t\t\t\t\tvm.OnBtnClick = OnBtnClick;\r\n\t\t\t\t\tvm.Close = Close;\r\n\t\t\t\t\tvm.Init = Init;\r\n\r\n\t\t\t\t\tfunction Init() {\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction Close() {\r\n\t\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\r\n\t\t\t\t\tfunction OnBtnClick() {\r\n\t\t\t\t\t\tif (!vm.Email) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvm.Clicked = true;\r\n\t\t\t\t\t\tvm.Error = '';\r\n\t\t\t\t\t\t$http.get(siteRootPath + 'api/User/TipSomeone', {\r\n\t\t\t\t\t\t\tparams: {\r\n\t\t\t\t\t\t\t\temail: vm.Email,\r\n\t\t\t\t\t\t\t\tmessage: vm.Message || ''\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}).then(function (response) {\r\n\t\t\t\t\t\t\tvar result = BizPartCoreHelpers.getResponseValue(response);\r\n\t\t\t\t\t\t\tif (result.Success) {\r\n\t\t\t\t\t\t\t\tvm.Sent = true;\r\n\t\t\t\t\t\t\t\t$timeout(() => {\r\n\t\t\t\t\t\t\t\t\tvm.Clicked = false;\r\n\t\t\t\t\t\t\t\t\tvm.Sent = false;\r\n\t\t\t\t\t\t\t\t\tvm.Email = '';\r\n\t\t\t\t\t\t\t\t\tvm.Message = '';\r\n\t\t\t\t\t\t\t\t}, 2000);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvm.Clicked = false;\r\n\t\t\t\t\t\t\t\tvm.Error = result.Message;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tInit();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.fromMobileMenu) {\r\n\t\t\t\t\t$rootScope.ExpandMainMenu = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\r\n\r\n\t\t\tfunction Initialize() {\r\n\r\n\t\t\t}\r\n\r\n\t\t\t$rootScope.Initialized.then(vm.Initialize);\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').directive('bizUnsubscribe', bizUnsubscribeDirective);\r\n angular.module('bizPartEngage').service('bizUnsubscribeService', bizUnsubscribeService);\r\n\r\n bizUnsubscribeDirective.$inject = [\"bizCore\"];\r\n bizUnsubscribeService.$inject = [\"$http\"]\r\n\r\n function bizUnsubscribeDirective(bizCore) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n },\r\n templateUrl: bizCore.getView('core.directives.unsubscribe', \"FrontEnd/Core/Directives/Views/Unsubscribe.html\"),\r\n bindToController: true,\r\n controller: bizUnsubscribeController,\r\n controllerAs: \"vm\"\r\n };\r\n\r\n bizUnsubscribeController.$inject = [\"bizUnsubscribeService\"];\r\n\r\n function bizUnsubscribeController(bizUnsubscribeService) {\r\n var vm = this;\r\n\r\n vm.Logo = portalSettings['logo']; \r\n\r\n vm.Init = Init;\r\n vm.GetEncodedQS = GetEncodedQS;\r\n vm.GetCategoriesByCode = GetCategoriesByCode;\r\n vm.ConfirmCategories = ConfirmCategories;\r\n vm.GetCategoryIdsToLink = GetCategoryIdsToLink;\r\n vm.IsCategoryOptIn = IsCategoryOptIn;\r\n\r\n function IsCategoryOptIn(category) {\r\n return category.CategoryType === 1;\r\n }\r\n\r\n function GetCategoryIdsToLink() {\r\n var catIds = [];\r\n for (var i = 0; i < vm.Categories.length; i++) {\r\n var cat = vm.Categories[i];\r\n var isChecked = cat.Checked;\r\n var isOptIn = IsCategoryOptIn(cat);\r\n\r\n //the user selects which categories they are NOT interested in\r\n if (isOptIn && !isChecked) {\r\n //if category is opt in, they should be added if they have not checked\r\n catIds.push(cat.Id);\r\n } else if (!isOptIn && isChecked) {\r\n //if category is opt out, they should be added if they have checked\r\n catIds.push(cat.Id);\r\n }\r\n }\r\n return catIds;\r\n }\r\n\r\n function ConfirmCategories() {\r\n vm.Result = false;\r\n var catIds = vm.GetCategoryIdsToLink();\r\n\r\n if (vm.Code) {\r\n bizUnsubscribeService.SaveCategoriesByCode(vm.Code, catIds).then((response) => {\r\n console.log(\"SaveCategoriesByCode\", response);\r\n vm.Result = true;\r\n var result = BizPartCoreHelpers.getResponseValue(response);\r\n if (result.Success) {\r\n vm.Success = true;\r\n } else {\r\n vm.Success = false;\r\n } \r\n });\r\n } else {\r\n console.log(\"not implemented yet\");\r\n } \r\n };\r\n\r\n function GetEncodedQS() {\r\n return getParameterByNameFromUrl('c', location.href);\r\n }\r\n\r\n function GetCategoriesByCode(code) {\r\n bizUnsubscribeService.GetCategoriesByCode(code).then((response) => {\r\n var categories = BizPartCoreHelpers.getResponseValue(response, []);\r\n for (var i = 0; i < categories.length; i++) {\r\n var cat = categories[i];\r\n var isOptIn = vm.IsCategoryOptIn(cat);\r\n if (isOptIn) {\r\n //inverse opt in, as the user selects what they are NOT interested in.\r\n cat.Checked = !cat.Checked;\r\n }\r\n }\r\n vm.Categories = categories;\r\n console.log(\"categories\", vm.Categories);\r\n });\r\n }\r\n\r\n function Init() {\r\n vm.Code = vm.GetEncodedQS();\r\n console.log(\"code\", vm.Code);\r\n\r\n if (vm.Code) {\r\n GetCategoriesByCode(vm.Code);\r\n }\r\n }\r\n\r\n vm.$onInit = function () {\r\n vm.Init();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizUnsubscribeService($http) {\r\n var servicepath = siteRootPath + \"api/genericsendcategory/\";\r\n\r\n this.GetCategoriesByCode = function (code) {\r\n return $http.get(servicepath + \"GetCategoriesForUserByCode\", {\r\n params: {\r\n code: code\r\n }\r\n });\r\n }\r\n\r\n this.SaveCategoriesByCode = function (code, catIds) {\r\n return $http.post(servicepath + \"LinkCategoriesToUserByCode\", {\r\n Code: code, CategoryIds: catIds\r\n });\r\n }\r\n }\r\n\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').service('core.completeregisterService', completeRegisterService);\r\n\r\n completeRegisterService.$inject = [\"$http\"];\r\n\r\n function completeRegisterService($http) {\r\n this.GetUserByActionGuid = function (guid) {\r\n return $http.get(siteRootPath + 'api/user/GetUserByActionGuid', { params: { guid } });\r\n };\r\n\r\n this.GetGuidInfo = function (guid) {\r\n return $http.get(siteRootPath + 'api/user/GetGuidInfo', { params: { guid } });\r\n }\r\n\r\n this.CompleteRegistration = function (guid, user, password, extCustomFields, code) {\r\n return $http.post(siteRootPath + 'api/user/CompleteRegistration', { Guid: guid, User: user, Password: password || '', ExtCustomFields: extCustomFields, Code: code || '' });\r\n };\r\n\r\n this.SendVerificationCode = function (guid, email) {\r\n return $http.post(siteRootPath + 'api/user/SendVerificationForCreateUserForUnit', { Guid: guid, Email: email });\r\n };\r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').service('core.engage.service', engageService);\r\n\r\n engageService.$inject = [\"$http\", \"$q\", \"$state\"];\r\n\r\n function engageService($http, $q, $state) {\r\n \tvar apiPath = siteRootPath + \"api/engage/\";\r\n \tvar settingsPromise;\r\n \tvar engageJourneyPromise;\r\n\r\n \treturn {\r\n \t\tClearPromiseCache: ClearPromiseCache,\r\n \t\tGetSettings: GetSettings,\r\n\t\t\tSaveSettings: SaveSettings,\r\n \t\tGetSuggestions: GetSuggestions,\r\n \t\tGetEngageJourneys: GetEngageJourneys,\r\n \t\tGetEngageJourneysByFavoriteTags: GetEngageJourneysByFavoriteTags,\r\n GetEngageJourneysForUser: GetEngageJourneysForUser,\r\n HandleEngageObjectCancelled: HandleEngageObjectCancelled,\r\n RedirectToEngageObject: RedirectToEngageObject,\r\n IsEngageObject: IsEngageObject,\r\n GetEngageObjectsByObjectIdAndType: GetEngageObjectsByObjectIdAndType,\r\n GetEngageObjectTypeId: GetEngageObjectTypeId,\r\n GetEngageObjectTypeById: GetEngageObjectTypeById \r\n };\r\n\r\n function GetEngageObjectTypeId(objectTypeName) {\r\n var ot = objectTypeName.toLowerCase();\r\n switch (ot) {\r\n case 'html5':\r\n return 1; \r\n case 'mediabankfile':\r\n return 3; \r\n case 'blog':\r\n return 2; \r\n case 'scorm':\r\n return 4;\r\n case 'speedquiz':\r\n return 5;\r\n case 'certification':\r\n return 6;\r\n case 'mission':\r\n return 7;\r\n default:\r\n return 0;\r\n } \r\n }\r\n\r\n function GetEngageObjectTypeById(objectTypeId) {\r\n switch (objectTypeId) {\r\n case 1:\r\n return 'html5';\r\n case 3:\r\n return 'mediabankfile';\r\n case 2:\r\n return 'blog';\r\n case 4:\r\n return 'scorm';\r\n case 5:\r\n return 'speedquiz';\r\n case 6:\r\n return 'certification';\r\n case 7:\r\n return 'mission';\r\n default:\r\n return 'None';\r\n } \r\n }\r\n\r\n function IsEngageObject(objectType) {\r\n var engageObjectTypes = ['html5', 'mediabankfile', 'blog', 'scorm']; \r\n return engageObjectTypes.indexOf(objectType.toLowerCase()) >= 0; \r\n }\r\n\r\n function RedirectToEngageObject(objectType, objectId) {\r\n var ot = objectType.toLowerCase();\r\n switch (ot) {\r\n case 'html5':\r\n $state.go(\"base.modules.html5education\", { id: objectId });\r\n break;\r\n case 'mediabankfile':\r\n $state.go(\"base.modules.mediafile\", { id: objectId });\r\n break;\r\n case 'blog':\r\n $state.go(\"base.modules.blogtitle\", { title: objectId });\r\n break;\r\n case 'scorm':\r\n location.href = siteRootPath + \"SCORM/\" + objectId;\r\n break;\r\n } \r\n } \r\n\r\n \tfunction ClearPromiseCache() {\r\n \t\tsettingsPromise = null;\r\n \t\tengageJourneyPromise = null;\r\n \t}\r\n\r\n \tfunction SaveSettings(settings) {\r\n \t\treturn $http.post(apiPath + 'SaveEngageSettingsForUser', settings);\r\n \t}\r\n\r\n \tfunction GetSettings(force) {\r\n \t\tif (!force && settingsPromise) return settingsPromise;\r\n\r\n \t\tsettingsPromise = $http.get(apiPath + 'GetEngageSettingsForUser');\r\n \t\treturn settingsPromise;\r\n \t}\r\n\r\n \tfunction GetEngageJourneysForUser(force) {\r\n \t\t// if (!force && engageJourneyPromise) return engageJourneyPromise;\r\n\r\n \t\tvar deferrer = $q.defer();\r\n \t\tengageJourneyPromise = deferrer.promise;\r\n\r\n \t\t$q.all([GetEngageJourneys(false),\r\n\t\t\t\t\tGetEngageJourneysByFavoriteTags(false)])\r\n\t\t\t\t.then(function (responses) {\r\n \t\t\t\tdeferrer.resolve({\r\n \t\t\t\t\tGeneral: responses[0].data,\r\n \t\t\t\t\tCustom: responses[1].data\r\n \t\t\t\t});\r\n \t\t\t});\r\n\r\n \t\treturn engageJourneyPromise;\r\n \t}\r\n\r\n \tfunction GetEngageJourneysByFavoriteTags(deepload) {\r\n \t\treturn $http.get(apiPath + \"GetEngageJourneysByFavoriteTags\", {\r\n \t\t\tparams: {\r\n \t\t\t\tdeepload: deepload\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tfunction GetEngageJourneys(deepload) {\r\n \t\treturn $http.get(apiPath + \"GetEngageJourneys\", {\r\n \t\t\tparams: {\r\n\t\t\t\t\tdeepload: deepload\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tfunction GetSuggestions (max, page) {\r\n \t\treturn $http.get(apiPath + \"GetSuggestions\", {\r\n \t\tparams: {\r\n \t\t\tmax: max,\r\n \t\t\tpage: page\r\n \t\t}\r\n \t});\r\n }\r\n\r\n function HandleEngageObjectCancelled(objectId, objectType) { \r\n\r\n var params = {\r\n objectId: objectId,\r\n objectType: objectType \r\n };\r\n\r\n $http.post(apiPath + 'HandleEngageObjectCancelled', {}, {\r\n params: params,\r\n headers: {\r\n IgnoreLoader: true\r\n }\r\n });\r\n }\r\n\r\n function GetEngageObjectsByObjectIdAndType(objects) { \r\n\r\n return $http.post(apiPath + 'GetEngageObjectsByObjectIdAndType', objects, { \r\n headers: {\r\n IgnoreLoader: true\r\n }\r\n });\r\n }\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.event.statistics.service', eventStatisticsService);\r\n\r\n eventStatisticsService.$inject = [\"$http\"];\r\n\r\n function eventStatisticsService($http) {\r\n this.GetAllEventStatisticsForUser = function(page, limit) {\r\n return $http.get(siteRootPath + 'api/eventstatistics/GetAllEventStatisticsForUser?' + $.param({page: page, limit: limit}));\r\n }\r\n }\r\n //GetAllEventStatisticsForUser\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('core.services.favorite', favoriteService);\r\n\r\n\tfavoriteService.$inject = [\"$http\"];\r\n\r\n\tfunction favoriteService($http) {\r\n\t\tvar apiPath = siteRootPath + 'api/favorites/';\r\n\r\n\t\treturn {\r\n\t\t\tIsFavorite: IsFavorite,\r\n\t\t\tAddFavorite: AddFavorite,\r\n\t\t\tRemoveFavorite: RemoveFavorite,\r\n\t\t\tGetFavorites: GetFavorites\r\n\t\t};\r\n\r\n\t\tfunction IsFavorite(objectType, objectId) {\r\n\t\t\treturn $http.get(apiPath + 'IsFavorite', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tobjectType: objectType,\r\n\t\t\t\t\tobjectId: objectId\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction AddFavorite(objectType, objectId) {\r\n\t\t\treturn $http.post(apiPath + 'AddFavorite', {}, {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tobjectType: objectType,\r\n\t\t\t\t\tobjectId: objectId\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction RemoveFavorite(objectType, objectId) {\r\n\t\t\treturn $http.delete(apiPath + 'RemoveFavorite', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tobjectType: objectType,\r\n\t\t\t\t\tobjectId: objectId\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction GetFavorites(deepload, objectType) {\r\n\t\t\tvar params = {\r\n\t\t\t\tdeepload: deepload\r\n\t\t\t};\r\n\r\n\t\t\tif (objectType)\r\n\t\t\t\tparams.objectType = objectType;\r\n\r\n\t\t\treturn $http.get(apiPath + 'GetFavorites', {\r\n\t\t\t\tparams: params\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('core.forgotpasswordService', forgotpasswordService);\r\n\r\n\tforgotpasswordService.$inject = [\"$http\", \"$rootScope\", \"bizCoreService\"];\r\n\r\n\tfunction forgotpasswordService($http, $rootScope, bizCoreService) {\r\n\t\tthis.IsResetPasswordGuidValid = function (guid) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/user/IsResetPasswordGuidValid', { params: { guid: guid } });\r\n\t\t}\r\n\r\n\t\tthis.SendPasswordRecoveryEmail = function (email) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/user/SendPasswordRecoveryEmail', { params: { email: email } });\r\n\t\t};\r\n\r\n\t\tthis.UpdatePassword = function (guid, newPassword) {\r\n\t\t\treturn $http.post(siteRootPath + 'api/user/UpdatePasswordFromGuid', { guid: guid, newPassword: newPassword });\r\n\t\t};\r\n\r\n\t\tthis.GetBackgroundImage = function () {\r\n\t\t\treturn bizCoreService.GetPortalsetting(\"LoginBackgroundImages\").then(function (response) {\r\n\t\t\t\tvar res = response.data;\r\n\t\t\t\tvar backgroundImages = [];\r\n\r\n\t\t\t\timages = res.replace(/^(,)+|(,)+$/g, '');\r\n\r\n\t\t\t\tif (images.length > 0) {\r\n\t\t\t\t\tif (images.indexOf(',') === -1) {\r\n\t\t\t\t\t\tbackgroundImages.push(images);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tbackgroundImages = images.split(',');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (backgroundImages.length > 0)\r\n\t\t\t\t\t\treturn backgroundImages[$rootScope.RandomBetween(0, backgroundImages.length - 1)];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn '';\t\t\t\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.leaderboard.service', leaderboardService);\r\n\r\n leaderboardService.$inject = [\"$http\"];\r\n\r\n function leaderboardService($http) {\r\n \tvar servicePath = siteRootPath + \"api/Leaderboards/\";\r\n\r\n \tthis.GetGlobalLeaderboard = function (limit, startTime, endTime) {\r\n \t\tvar method = (startTime && endTime) ? \"GetGlobalLeaderboardBetweenDates\" : \"GetGlobalLeaderboard\";\r\n \t\treturn $http.get(servicePath + method, {\r\n \t\t\tparams: {\r\n \t\t\t\tlimit: limit,\r\n \t\t\t\tstartTime: startTime,\r\n \t\t\t\tendTime: endTime\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tthis.GetCountryLeaderboard = function (limit, startTime, endTime) {\r\n \t\tvar method = (startTime && endTime) ? \"GetCountryLeaderboardBetweenDates\" : \"GetCountryLeaderboard\";\r\n \t\treturn $http.get(servicePath + method, {\r\n \t\t\tparams: {\r\n \t\t\t\tlimit: limit,\r\n \t\t\t\tstartTime: startTime,\r\n \t\t\t\tendTime: endTime\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n this.GetMainUnitLeaderboard = function (limit) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetMainUnitLeaderboard?' + $.param({ limit: limit }));\r\n };\r\n\r\n this.GetMainUnitLeaderboardBetweenDates = function (limit, startTime, endTime) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetMainUnitLeaderboardBetweenDates?' + $.param({ limit: limit, startTime: startTime, endTime: endTime }));\r\n };\r\n\r\n this.GetUnitLeaderboard = function (limit) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetUnitLeaderboard?' + $.param({ limit: limit }));\r\n };\r\n\r\n this.GetUnitLeaderboardBetweenDates = function (limit, startTime, endTime) {\r\n return $http.get(siteRootPath + 'api/Leaderboards/GetUnitLeaderboardBetweenDates?' + $.param({ limit: limit, startTime: startTime, endTime: endTime }));\r\n };\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.level.serivce', levelService);\r\n\r\n levelService.$inject = [\"$http\"];\r\n\r\n function levelService($http) {\r\n this.GetLoggedInUserExperiencePointHistory = function(max, page) {\r\n return $http.get(siteRootPath + 'api/level/GetLoggedInUserExperiencePointHistory?' + $.param({max: max, page:page}));\r\n };\r\n\r\n this.GetExperienceValueFromLastCheck = function() {\r\n return $http.get(siteRootPath + 'api/level/GetExperienceValueFromLastCheck');\r\n };\r\n\r\n this.CheckForLevelUp = function() {\r\n return $http.get(siteRootPath + 'api/level/CheckForLevelUp');\r\n };\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.mynotes.service', myNotesService);\r\n\r\n myNotesService.$inject = [\"$http\"];\r\n\r\n function myNotesService($http) {\r\n \tvar apiPath = siteRootPath + \"api/mynotes/\";\r\n \tvar settingsPromise = [];\r\n\r\n \treturn {\r\n \t\tClearPromiseCache: ClearPromiseCache,\r\n GetMyNotes: GetMyNotes,\r\n SaveMyNotes: SaveMyNotes,\r\n SaveMyNote: SaveMyNote\r\n };\r\n\r\n \tfunction ClearPromiseCache() {\r\n \t\tsettingsPromise = [];\r\n \t}\r\n\r\n\r\n \tfunction GetMyNotes(limit, startTime, endTime, force) {\r\n var key = \"MY_NOTES\";\r\n \t\tif (!force && settingsPromise[key]) return settingsPromise[key];\r\n\r\n \t\tsettingsPromise[key] = $http.get(apiPath + 'GetMyNotes?' + $.param({limit: limit, startTime: moment(startTime).format(), endTime: moment(endTime).format()}));\r\n \t\treturn settingsPromise[key];\r\n }\r\n \r\n function SaveMyNotes(notes) {\r\n return $http.post(apiPath + \"SaveMyNotes\", notes);\r\n }\r\n\r\n function SaveMyNote(note) {\r\n return $http.post(apiPath + \"SaveMyNote\", note);\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.portal.service', portalService);\r\n\r\n portalService.$inject = [\"$http\", \"$q\", \"$state\"];\r\n\r\n function portalService($http, $q, $state) {\r\n \tvar apiPath = siteRootPath + \"api/portal/\";\r\n \tvar settingsPromise = [];\r\n\r\n \treturn {\r\n \t\tClearPromiseCache: ClearPromiseCache,\r\n \t\tGetPortalSetting: GetPortalSetting,\r\n };\r\n\r\n \tfunction ClearPromiseCache() {\r\n \t\tsettingsPromise = null;\r\n \t}\r\n\r\n\r\n \tfunction GetPortalSetting(key, force) {\r\n \t\tif (!force && settingsPromise[key]) return settingsPromise[key];\r\n\r\n \t\tsettingsPromise[key] = $http.get(apiPath + 'GetPortalSettingValue?' + $.param({key: key}));\r\n \t\treturn settingsPromise[key];\r\n \t}\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.registerService', registerService);\r\n\r\n registerService.$inject = [\"$http\"];\r\n\r\n function registerService($http) {\r\n this.CreateUser = function (user) {\r\n return $http.post(siteRootPath + 'api/user/CreateUser', { user: user });\r\n }; \r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('core.session.service', sessionService);\r\n\r\n sessionService.$inject = [\"$mdDialog\", \"$interval\", \"core.users.service\", \"$q\", \"$translate\"];\r\n\r\n function sessionService($mdDialog, $interval, userService, $q, $translate) {\r\n this.SessionTime; \r\n this.SessionTimeEnd; \r\n this.ShowingWarning; \r\n this.Timer;\r\n\r\n this.Initialize = function(time) {\r\n this.SessionTime = time;\r\n this.ShowingWarning = false;\r\n this.Refresh();\r\n localStorage.setItem('BIZEXTPAGE_SESSION_TIMEOUT', time);\r\n };\r\n\r\n this.Start = function() {\r\n Timer = $interval(Tick, 5000, 0, false, this);\r\n };\r\n\r\n this.Stop = function() {\r\n $interval.cancel(Timer);\r\n };\r\n\r\n this.Refresh = function(updateBackend) {\r\n this.SessionTimeEnd = moment().add(this.SessionTime, 's');\r\n\r\n if(updateBackend) {\r\n userService.UpdateUserSession().then(function() {\r\n console.log('Session timer refreshed!');\r\n });\r\n }\r\n };\r\n\r\n this.TimeToShowWarning = function() {\r\n return moment().add(1, 'm') > this.SessionTimeEnd;\r\n };\r\n\r\n this.TimeOut = function() {\r\n return moment() > this.SessionTimeEnd;\r\n };\r\n\r\n function Tick(sessionTimer) {\r\n if (sessionTimer.TimeToShowWarning()) {\r\n if (sessionTimer.ShowingWarning == false) {\r\n $mdDialog.show($mdDialog.alert({\r\n title: $translate.instant(\"CORE.Session.Warning.Title\"),\r\n textContent: $translate.instant(\"CORE.Session.Warning.Content\"),\r\n ok: \"Ok\"\r\n })).then(function() {\r\n sessionTimer.Refresh(true);\r\n sessionTimer.ShowingWarning = false;\r\n });\r\n \r\n sessionTimer.ShowingWarning = true;\r\n }\r\n \r\n if (sessionTimer.TimeOut()) {\r\n sessionTimer.Stop(); \r\n userService.Logout();\r\n }\r\n }\r\n }\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.sso.serivce', ssoService);\r\n\r\n ssoService.$inject = [\"$http\"];\r\n\r\n function ssoService($http) {\r\n this.SSOCheckIfUserExists = function(ssoKey, ssoToken) {\r\n return $http.post(siteRootPath + 'api/loginapi/SSOCheckIfUserExists', {SSOKey: ssoKey, SSOToken: ssoToken});\r\n };\r\n\r\n this.Login = function(ssoKey, ssoToken) {\r\n return $http.post(siteRootPath + 'api/loginapi/SSO', {SSOKey: ssoKey, SSOToken: ssoToken});\r\n };\r\n\r\n this.RegisterSSOUser = function(ssoKey, ssoToken, userName, firstName, lastName, email, countryIsoCode) {\r\n return $http.post(siteRootPath + 'api/loginapi/RegisterSSOUser', \r\n {\r\n SSOKey: ssoKey, \r\n SSOToken: ssoToken,\r\n UserName: userName,\r\n FirstName: firstName,\r\n LastName: lastName,\r\n Email: email,\r\n CountryIsoCode: countryIsoCode\r\n });\r\n };\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('core.terms.service', termsService);\r\n\r\n\ttermsService.$inject = [\"$http\"];\r\n\r\n\tfunction termsService($http) {\r\n\t\tthis.GetSystemTerms = function (unitId) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/Terms/GetSystemTerms', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tincludeAccepted: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n})(window.angular);\r\n","(function(angular){\r\n angular.module('bizPartEngage').service('core.unit.service', unitService);\r\n\r\n unitService.$inject = [\"$http\"];\r\n\r\n function unitService($http) {\r\n this.GetUsersInUnit = function(unitId) {\r\n return $http.get(siteRootPath + 'api/Unit/GetUsersInUnit?' + $.param({unitId: unitId}));\r\n };\r\n\r\n this.GetUnitsByParent = function(parentId) {\r\n return $http.get(siteRootPath + 'api/Unit/GetUnitsByParent?' + $.param({ parentId: parentId }));\r\n };\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').service('core.users.service', userService);\r\n\r\n userService.$inject = [\"$http\", \"$window\", \"$rootScope\"];\r\n\r\n function userService($http, $window, $rootScope) {\r\n this.Logout = function() {\r\n $http.post(siteRootPath + \"api/user/logout\", {}).then(function(response) {\r\n deleteStorage(\"BizPartAuthToken\");\r\n if ($rootScope.MiniSettings[\"Logout\"][\"CustomLogoutFn\"]) {\r\n $rootScope.MiniSettings[\"Logout\"][\"CustomLogoutFn\"]();\r\n }\r\n if (response.data) {\r\n window.location.href = response.data;\r\n } else {\r\n window.location.href = siteRootPath;\r\n }\r\n \r\n //$window.location.reload();\r\n }, function() {\r\n //PROBABLY ALREADY LOGGED OUT...\r\n \twindow.location.href = siteRootPath;\r\n //$window.location.reload();\r\n });\r\n };\r\n\r\n this.AddUserActivity = function (url, refererUrl, activityGroup) {\r\n return $http.post(siteRootPath + 'api/user/AddUserActivity', {url: url,refererUrl: refererUrl,activityGroup: activityGroup});\r\n };\r\n\r\n this.GetLoggedInUserDefaultLevelProgress = function() {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserDefaultLevelProgress');\r\n };\r\n\r\n this.GetLoggedInUserNotifications = function(max, page) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserNotifications?' + $.param({ max: max, page: page }));\r\n };\r\n\r\n this.SaveMyProfile = function(user) {\r\n return $http.post(siteRootPath + 'api/user/SaveMyProfile', user);\r\n };\r\n\r\n this.GetUserGenericCustomFields = function (user) {\r\n return $http.get(siteRootPath + 'api/user/GetUserGenericCustomFields');\r\n };\r\n\r\n this.GetCustomFieldValue = function (customFieldId, objectId) {\r\n return $http.get(siteRootPath + 'api/user/GetCustomFieldValue?' + $.param({ customFieldId: customFieldId, objectId: objectId }));\r\n };\r\n\r\n this.UpdateCustomFieldValue = function (customFieldId, objectId, value) {\r\n \treturn $http.get(siteRootPath + 'api/user/UpdateCustomFieldValue?' + $.param({ customFieldId: customFieldId, objectId: objectId, value: value }));\r\n };\r\n\r\n this.UpdateMyPassword = function(password, oldPassword) {\r\n \treturn $http.post(siteRootPath + 'api/user/UpdateMyPassword', {password: password, oldPassword: oldPassword });\r\n };\r\n\r\n this.DeleteMe = function() {\r\n return $http.delete(siteRootPath + 'api/user/DeleteMe');\r\n }\r\n\r\n this.UpdateAllowSMSForLoggedInUser = function(allowSms) {\r\n return $http.post(siteRootPath + 'api/user/UpdateAllowSMSForLoggedInUser', allowSms);\r\n };\r\n\r\n this.GetLoggedInUserSetting = function(key) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserSetting?' + $.param({key: key}));\r\n };\r\n\r\n this.GetLoggedInUserSettingAsBoolean = function(key) {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUserSettingAsBoolean?' + $.param({ key: key }));\r\n };\r\n\r\n this.GetLoggedInUser = function () {\r\n return $http.get(siteRootPath + 'api/user/GetLoggedInUser');\r\n };\r\n\r\n this.GetLoggedInUserFromDB = function () {\r\n return $http.get(siteRootPath + 'api/user/GetUser');\r\n };\r\n\r\n this.GetProfile = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetProfile');\r\n };\r\n\r\n this.GetProfileRestrictedFields = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetRestrictedFields');\r\n };\r\n\r\n this.GetProfile = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetProfile');\r\n };\r\n\r\n this.GetRelationTypes = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetRelationTypes');\r\n }\r\n\r\n this.GetRelatedUsers = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetRelatedUsers');\r\n }\r\n\r\n this.GetProfileAllowedUnitsToEdit = function () {\r\n return $http.get(siteRootPath + 'api/profile/GetAllowedUnitsToEdit');\r\n }\r\n\r\n this.UpdateRelatedUsers = function (relatedUsers) {\r\n return $http.post(siteRootPath + 'api/profile/UpdateRelatedUsers', relatedUsers);\r\n };\r\n\r\n this.SaveBasicProfile = function(user) {\r\n \treturn $http.post(siteRootPath + 'api/profile/SaveBasicProfile', user);\r\n };\r\n\r\n this.SaveCustomProfileData = function(user) {\r\n \treturn $http.post(siteRootPath + 'api/profile/SaveCustomProfileData', user);\r\n };\r\n\r\n this.UpdateUserSession = function() {\r\n return $http.get(siteRootPath + \"api/user/UpdateUserSession\");\r\n };\r\n \r\n this.GetUserLogStats = function () {\r\n return $http.get(siteRootPath + 'api/EngageObjectStatistics/GetUserLogStats');\r\n };\r\n this.GetUserTypes = function () {\r\n return $http.get(siteRootPath + 'api/usertype/GetUserTypes');\r\n }\r\n this.SubscribeToNewsletter = function (key, email) {\r\n return $http.get(siteRootPath + 'api/user/SubscribeToNewsletter?' + $.param({ key: key, email: email }));\r\n };\r\n this.GetGenders = function () {\r\n return $http.get(siteRootPath + 'api/user/GetGenders');\r\n };\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').config(configCoreFunction);\r\n configCoreFunction.$inject = [\"$stateProvider\", \"bizUserProvider\", \"bizCoreProvider\", \"$translatePartialLoaderProvider\"];\r\n function configCoreFunction($stateProvider, bizUserProvider, bizCoreProvider, $translatePartialLoaderProvider) {\r\n\r\n $stateProvider\r\n .state('base.core', {\r\n template: '
'\r\n })\r\n .state('base.core.profile', {\r\n url: \"/profile\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile', 'FrontEnd/Core/Views/profile.html')\r\n })\r\n .state('base.core.cleanprofile', {\r\n url: \"/cprofile\",\r\n template: \"
\"\r\n })\r\n .state('base.core.profile.home', {\r\n url: \"/home\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.home', 'FrontEnd/Core/Views/mypage.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.home', 'core.mypage'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.profile.settings', {\r\n url: \"/settings\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.settings', 'FrontEnd/Core/Views/mysettings.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.settings', 'core.mysettings'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.profile.security', {\r\n url: \"/security\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.security', 'FrontEnd/Core/Views/mysecurity.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.security', 'core.mysecurity'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile.settings\"\r\n }\r\n })\r\n .state('base.core.profile.myrelatedusers', {\r\n url: \"/my-related-users\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.myrelatedusers', 'FrontEnd/Core/Views/myrelatedusers.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.myrelatedusers', 'core.myrelatedusers'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile.settings\"\r\n }\r\n })\r\n .state('base.core.cleanprofile.myrelatedusers', {\r\n url: \"/my-related-users\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.myrelatedusers', 'FrontEnd/Core/Views/myrelatedusers.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.myrelatedusers', 'core.myrelatedusers'),\r\n controllerAs: \"vm\",\r\n params: {\r\n clean: true\r\n },\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); } \r\n }\r\n })\r\n .state('base.core.profile.customsettings', {\r\n url: \"/customsettings\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.customsettings', 'FrontEnd/Core/Views/mycustomsettings.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.customsettings', 'core.mycustomsettings'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile.settings\"\r\n }\r\n })\r\n .state('base.core.profile.leaderboards', {\r\n url: \"/leaderboards\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.leaderboards', 'FrontEnd/Core/Views/myleaderboards.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.leaderboards', 'core.myleaderboards'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.profile.colleagues', {\r\n url: \"/colleagues\",\r\n templateUrl: bizCoreProvider.getView('base.core.profile.colleagues', 'FrontEnd/Core/Views/mycolleagues.html'),\r\n controller: bizCoreProvider.getController('base.core.profile.colleagues', 'core.mycolleagues'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('UNITS', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.core.profile\"\r\n }\r\n })\r\n .state('base.core.register', {\r\n url: \"/register\",\r\n templateUrl: bizCoreProvider.getView('core.register', 'FrontEnd/Core/Views/register.html'),\r\n controller: bizCoreProvider.getController('core.register', 'core.register'),\r\n controllerAs: \"vm\",\r\n data: {\r\n isPublic: IsPortalSettingTrue('IsCreateUserPublic')\r\n }\r\n })\r\n .state('base.core.showterms', {\r\n url: \"/terms\",\r\n templateUrl: bizCoreProvider.getView('base.core.showterms', 'FrontEnd/Core/Views/showterms.html'),\r\n controller: \"core.terms.show\",//bizCoreProvider.getController('core.terms.show', 'core.terms'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('base.core.privacypolicy', {\r\n url: \"/privacy-policy\",\r\n templateUrl: bizCoreProvider.getView('base.core.privacypolicy', 'FrontEnd/Core/Views/privacypolicy.html'),\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); }\r\n }\r\n })\r\n .state('cleanbase.privacypolicy', {\r\n url: \"/public-privacy-policy\",\r\n templateUrl: bizCoreProvider.getView('cleanbase.privacypolicy', 'FrontEnd/Core/Views/privacypolicy.html'),\r\n data: {\r\n isPublic: true\r\n }\r\n })\r\n .state('base.core.welcome', {\r\n url: \"/welcome\",\r\n templateUrl: bizCoreProvider.getView('base.core.welcome', 'FrontEnd/Core/Views/welcome.html'),\r\n controller: bizCoreProvider.getController('base.core.welcome', 'core.welcome'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('base.core.themestest', {\r\n url: \"/themestest\",\r\n templateUrl: bizCoreProvider.getView('base.core.themestest', 'FrontEnd/Core/Views/themestest.html'),\r\n controller: bizCoreProvider.getController('base.core.themestest', 'core.themestest'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('base.core.notifications', {\r\n url: \"/notifications\",\r\n templateUrl: bizCoreProvider.getView('base.core.notifications', 'FrontEnd/Core/Views/notifications.html'),\r\n controller: bizCoreProvider.getController('base.core.notifications', 'core.notifications'),\r\n controllerAs: \"vm\"\r\n })\r\n .state('cleanbase.exthome', {\r\n url: \"/exthome\",\r\n params: {\r\n extmode: true\r\n },\r\n templateUrl: bizCoreProvider.getView('cleanbase.exthome', 'FrontEnd/Core/Views/exthome.html'),\r\n controller: \"cleanbase.exthome\",\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn(); }\r\n }\r\n })\r\n .state('cleanbase.unsubscribe', {\r\n url: \"/unsubscribe\",\r\n templateUrl: bizCoreProvider.getView('cleanbase.unsubscribe', 'FrontEnd/Core/Views/unsubscribe.html'),\r\n controller: \"cleanbase.unsubscribe\",\r\n controllerAs: \"vm\",\r\n data: {\r\n isPublic: true\r\n }\r\n })\r\n .state('cleanbase.completeregister', {\r\n url: \"/complete-registration/:guid\",\r\n templateUrl: bizCoreProvider.getView('cleanbase.completeregister', 'FrontEnd/Core/Views/completeregister.html'),\r\n controller: \"cleanbase.completeregister\",\r\n controllerAs: \"vm\",\r\n data: {\r\n isPublic: true,\r\n onlyLoggedOut: true,\r\n }\r\n });\r\n }\r\n\r\n}(window.angular));","(function (angular) {\r\n angular.module('bizPartEngage').provider('bizEffects', effectsProvider);\r\n\r\n effectsProvider.$inject = ['fireworksProvider'];\r\n\r\n function effectsProvider(fireworks) {\r\n\r\n function Show(effectSystemName) {\r\n if (effectSystemName === 'CONFETTI') {\r\n confetti();\r\n } else if (effectSystemName === 'FIREWORKS') {\r\n fireworks.showFireworks();\r\n }\r\n } \r\n \r\n return {\r\n Show: Show, \r\n $get: function () {\r\n return {\r\n Show: Show\r\n };\r\n }\r\n }\r\n }\r\n})(window.angular);","(function (angular) {\r\n\tvar SCREEN_WIDTH = window.innerWidth;\r\n\tvar SCREEN_HEIGHT = window.innerHeight;\r\n\tvar DEFAULT_FIREWORKS_TIMEOUT = 10000;\r\n\tvar particles = [];\r\n\tvar rockets = [];\r\n\tvar MAX_PARTICLES = 400;\r\n\tvar mousePos = {\r\n\t\tx: 400,\r\n\t\ty: 300\r\n\t};\r\n\r\n\tvar canvas = document.createElement('canvas');\r\n\tvar context = canvas.getContext('2d');\r\n\r\n\tvar launchInterval;\r\n\tvar loopInterval;\r\n\r\n\tangular.module('bizPartEngage').provider('fireworks', fireworksProvider);\r\n\r\n\tfunction fireworksProvider() {\r\n\t\tvar showingFireworks = false;\r\n\t\tfunction showFireworks(timeout) {\r\n\t\t\tif(!showingFireworks) {\r\n\t\t\t\tangular.element(document.body).append('
');\r\n\t\t\t\tangular.element(\".fireworks\").append(canvas);\r\n\t\r\n\t\t\t\tcanvas.width = SCREEN_WIDTH;\r\n\t\t\t\tcanvas.height = SCREEN_HEIGHT;\r\n\t\r\n\t\t\t\tlaunchInterval = setInterval(launch, 250);\r\n\t\t\t\tloopInterval = setInterval(loop, 1000 / 50);\r\n\t\t\t\tshowingFireworks = true;\r\n\t\t\t\tsetTimeout(hideFireworks, timeout || DEFAULT_FIREWORKS_TIMEOUT);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction hideFireworks() {\r\n\t\t\tangular.element(\".fireworks\").addClass(\"fade\");\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tclearInterval(launchInterval);\r\n\t\t\t\tclearInterval(loopInterval);\r\n\t\t\t\tangular.element(\".fireworks\").remove();\r\n\t\t\t\tshowingFireworks = false;\r\n\t\t\t}, 1500)\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tshowFireworks: showFireworks,\r\n\t\t\thideFireworks: hideFireworks,\r\n\t\t\t$get: function () {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tshow: showFireworks,\r\n\t\t\t\t\thide: hideFireworks\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t//FUNCTIONS\r\n\tfunction launch() {\r\n\t\tlaunchFrom(Math.random() * SCREEN_WIDTH);\r\n\t}\r\n\r\n\tfunction launchFrom(x) {\r\n\t\tif (rockets.length < 10) {\r\n\t\t\tvar rocket = new Rocket(x);\r\n\t\t\trocket.explosionColor = Math.floor(Math.random() * 360 / 10) * 10;\r\n\t\t\trocket.vel.y = Math.random() * -3 - 4;\r\n\t\t\trocket.vel.x = Math.random() * 6 - 3;\r\n\t\t\trocket.size = 8;\r\n\t\t\trocket.shrink = 0.999;\r\n\t\t\trocket.gravity = 0.01;\r\n\t\t\trockets.push(rocket);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction loop() {\r\n\t\t// update screen size\r\n\t\tif (SCREEN_WIDTH != window.innerWidth) {\r\n\t\t\tcanvas.width = SCREEN_WIDTH = window.innerWidth;\r\n\t\t}\r\n\t\tif (SCREEN_HEIGHT != window.innerHeight) {\r\n\t\t\tcanvas.height = SCREEN_HEIGHT = window.innerHeight;\r\n\t\t}\r\n\r\n\t\t// clear canvas\r\n\t\tcontext.fillStyle = \"rgba(0, 0, 0, 0.05)\";\r\n\t\tcontext.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\r\n\r\n\t\tvar existingRockets = [];\r\n\r\n\t\tfor (var i = 0; i < rockets.length; i++) {\r\n\t\t\t// update and render\r\n\t\t\trockets[i].update();\r\n\t\t\trockets[i].render(context);\r\n\r\n\t\t\t// calculate distance with Pythagoras\r\n\t\t\tvar distance = Math.sqrt(Math.pow(mousePos.x - rockets[i].pos.x, 2) + Math.pow(mousePos.y - rockets[i].pos.y, 2));\r\n\r\n\t\t\t// random chance of 1% if rockets is above the middle\r\n\t\t\tvar randomChance = rockets[i].pos.y < (SCREEN_HEIGHT * 2 / 3) ? (Math.random() * 100 <= 1) : false;\r\n\r\n\t\t\t/* Explosion rules\r\n - 80% of screen\r\n - going down\r\n - close to the mouse\r\n - 1% chance of random explosion\r\n */\r\n\t\t\tif (rockets[i].pos.y < SCREEN_HEIGHT / 5 || rockets[i].vel.y >= 0 || distance < 50 || randomChance) {\r\n\t\t\t\trockets[i].explode();\r\n\t\t\t} else {\r\n\t\t\t\texistingRockets.push(rockets[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\trockets = existingRockets;\r\n\r\n\t\tvar existingParticles = [];\r\n\r\n\t\tfor (var i = 0; i < particles.length; i++) {\r\n\t\t\tparticles[i].update();\r\n\r\n\t\t\t// render and save particles that can be rendered\r\n\t\t\tif (particles[i].exists()) {\r\n\t\t\t\tparticles[i].render(context);\r\n\t\t\t\texistingParticles.push(particles[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// update array with existing particles - old particles should be garbage collected\r\n\t\tparticles = existingParticles;\r\n\r\n\t\twhile (particles.length > MAX_PARTICLES) {\r\n\t\t\tparticles.shift();\r\n\t\t}\r\n\t}\r\n\r\n\t//FIREWORKS CLASSES\r\n\tfunction Particle(pos) {\r\n\t\tthis.pos = {\r\n\t\t\tx: pos ? pos.x : 0,\r\n\t\t\ty: pos ? pos.y : 0\r\n\t\t};\r\n\t\tthis.vel = {\r\n\t\t\tx: 0,\r\n\t\t\ty: 0\r\n\t\t};\r\n\t\tthis.shrink = .97;\r\n\t\tthis.size = 2;\r\n\r\n\t\tthis.resistance = 1;\r\n\t\tthis.gravity = 0;\r\n\r\n\t\tthis.flick = false;\r\n\r\n\t\tthis.alpha = 1;\r\n\t\tthis.fade = 0;\r\n\t\tthis.color = 0;\r\n\t}\r\n\r\n\tParticle.prototype.update = function () {\r\n\t\t// apply resistance\r\n\t\tthis.vel.x *= this.resistance;\r\n\t\tthis.vel.y *= this.resistance;\r\n\r\n\t\t// gravity down\r\n\t\tthis.vel.y += this.gravity;\r\n\r\n\t\t// update position based on speed\r\n\t\tthis.pos.x += this.vel.x;\r\n\t\tthis.pos.y += this.vel.y;\r\n\r\n\t\t// shrink\r\n\t\tthis.size *= this.shrink;\r\n\r\n\t\t// fade out\r\n\t\tthis.alpha -= this.fade;\r\n\t};\r\n\r\n\tParticle.prototype.render = function (c) {\r\n\t\tif (!this.exists()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tc.save();\r\n\r\n\t\tc.globalCompositeOperation = 'lighter';\r\n\r\n\t\tvar x = this.pos.x,\r\n y = this.pos.y,\r\n r = this.size / 2;\r\n\r\n\t\tvar gradient = c.createRadialGradient(x, y, 0.1, x, y, r);\r\n\t\tgradient.addColorStop(0.1, \"rgba(255,255,255,\" + this.alpha + \")\");\r\n\t\tgradient.addColorStop(0.8, \"hsla(\" + this.color + \", 100%, 50%, \" + this.alpha + \")\");\r\n\t\tgradient.addColorStop(1, \"hsla(\" + this.color + \", 100%, 50%, 0.1)\");\r\n\r\n\t\tc.fillStyle = gradient;\r\n\r\n\t\tc.beginPath();\r\n\t\tc.arc(this.pos.x, this.pos.y, this.flick ? Math.random() * this.size : this.size, 0, Math.PI * 2, true);\r\n\t\tc.closePath();\r\n\t\tc.fill();\r\n\r\n\t\tc.restore();\r\n\t};\r\n\r\n\tParticle.prototype.exists = function () {\r\n\t\treturn this.alpha >= 0.1 && this.size >= 1;\r\n\t};\r\n\r\n\tfunction Rocket(x) {\r\n\t\tParticle.apply(this, [{\r\n\t\t\tx: x,\r\n\t\t\ty: SCREEN_HEIGHT\r\n\t\t}]);\r\n\r\n\t\tthis.explosionColor = 0;\r\n\t}\r\n\r\n\tRocket.prototype = new Particle();\r\n\tRocket.prototype.constructor = Rocket;\r\n\r\n\tRocket.prototype.explode = function () {\r\n\t\tvar count = Math.random() * 10 + 80;\r\n\r\n\t\tfor (var i = 0; i < count; i++) {\r\n\t\t\tvar particle = new Particle(this.pos);\r\n\t\t\tvar angle = Math.random() * Math.PI * 2;\r\n\r\n\t\t\t// emulate 3D effect by using cosine and put more particles in the middle\r\n\t\t\tvar speed = Math.cos(Math.random() * Math.PI / 2) * 15;\r\n\r\n\t\t\tparticle.vel.x = Math.cos(angle) * speed;\r\n\t\t\tparticle.vel.y = Math.sin(angle) * speed;\r\n\r\n\t\t\tparticle.size = 10;\r\n\r\n\t\t\tparticle.gravity = 0.2;\r\n\t\t\tparticle.resistance = 0.92;\r\n\t\t\tparticle.shrink = Math.random() * 0.05 + 0.93;\r\n\r\n\t\t\tparticle.flick = true;\r\n\t\t\tparticle.color = this.explosionColor;\r\n\r\n\t\t\tparticles.push(particle);\r\n\t\t}\r\n\t};\r\n\r\n\tRocket.prototype.render = function (c) {\r\n\t\tif (!this.exists()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tc.save();\r\n\r\n\t\tc.globalCompositeOperation = 'lighter';\r\n\r\n\t\tvar x = this.pos.x,\r\n y = this.pos.y,\r\n r = this.size / 2;\r\n\r\n\t\tvar gradient = c.createRadialGradient(x, y, 0.1, x, y, r);\r\n\t\tgradient.addColorStop(0.1, \"rgba(255, 255, 255 ,\" + this.alpha + \")\");\r\n\t\tgradient.addColorStop(1, \"rgba(0, 0, 0, \" + this.alpha + \")\");\r\n\r\n\t\tc.fillStyle = gradient;\r\n\r\n\t\tc.beginPath();\r\n\t\tc.arc(this.pos.x, this.pos.y, this.flick ? Math.random() * this.size / 2 + this.size / 2 : this.size, 0, Math.PI * 2, true);\r\n\t\tc.closePath();\r\n\t\tc.fill();\r\n\r\n\t\tc.restore();\r\n\t};\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').provider('pageTitleNotification', pageTitleNotificationProvider);\r\n\r\n function pageTitleNotificationProvider() {\r\n var Vars = {\r\n OriginalTitle: document.title,\r\n Interval: null\r\n };\r\n\r\n function On(notification, intervalSpeed) {\r\n Vars.Interval = setInterval(function () {\r\n document.title = (Vars.OriginalTitle == document.title)\r\n ? notification\r\n : Vars.OriginalTitle;\r\n }, (intervalSpeed) ? intervalSpeed : 1000);\r\n }\r\n\r\n function Off() {\r\n clearInterval(Vars.Interval);\r\n document.title = Vars.OriginalTitle;\r\n }\r\n\r\n return {\r\n On: On,\r\n Off: Off,\r\n $get: function() {\r\n return {\r\n On: On,\r\n Off: Off,\r\n };\r\n }\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.blogs.list', blogsListController);\r\n angular.module('bizPartEngage').controller('modules.blogs.show', blogsShowController);\r\n angular.module('bizPartEngage').controller('modules.blogs.showbytag', blogsShowByTagController);\r\n\r\n blogsListController.$inject = [\"modules.blog.service\", \"$translate\", \"MetadataService\", \"$filter\", \"bizCoreService\", \"container\", \"bizEngageService\"];\r\n blogsShowController.$inject = [\"$rootScope\", \"modules.blog.service\", \"$stateParams\", \"MetadataService\", \"container\",\r\n \"bizContainerSettings\", \"bizEngageService\", \"bizCoreService\", \"$filter\"];\r\n blogsShowByTagController.$inject = [\"$rootScope\", \"modules.blog.service\", \"$stateParams\", \"MetadataService\", \"container\", \"bizEngageService\", \"$filter\"];\r\n\r\n function blogsListController(blogService, $translate, MetadataService, $filter, bizCoreService, container, bizEngageService) {\r\n var vm = this;\r\n\r\n vm.BlogItems = [];\r\n vm.GUISettings = {};\r\n\r\n vm.GetBlogEntries = GetBlogEntries;\r\n vm.GetSettings = GetSettings;\r\n\r\n vm.SortMostCommented = SortMostCommented;\r\n vm.SortMostLiked = SortMostLiked;\r\n\r\n function SortMostCommented() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsCommented = items.sort(function (a, b) { return b.Comments.length - a.Comments.length }).slice(0, 6);\r\n }\r\n\r\n function SortMostLiked() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsLiked = items.sort(function (a, b) { return b.LikeValue - a.LikeValue }).slice(0, 6);\r\n }\r\n\r\n function GetBlogEntries(ignoreLoader) { \r\n var bsMethod = blogService.GetNewestBlogEntries; \r\n if (journeySettings?.UseJourneyOrderInLists?.GetItemByValue('Key', 2)?.Value) {\r\n bsMethod = blogService.GetBlogEntriesByJourneyOrder;\r\n } \r\n bsMethod(0, true, ignoreLoader, undefined, -1).then(GetBlogEntriesSuccess);\r\n function GetBlogEntriesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.BlogItems = response.data;\r\n vm.SortMostLiked();\r\n vm.SortMostCommented();\r\n\r\n //Populate Images and description\r\n HandleBlogData();\r\n }\r\n }\r\n\r\n function HandleBlogData() {\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n if (vm.BlogItems[i].ContainerId > 0) {\r\n vm.BlogItems[i].Container = new container(vm.BlogItems[i].Container);\r\n var modules = vm.BlogItems[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (vm.BlogItems[i].ImageUrl)\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n vm.BlogItems[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n\r\n if (vm.BlogItems[i].Description == null || vm.BlogItems[i].Description == \"\") {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Text\");\r\n if (modules != null && modules.length > 0) {\r\n vm.BlogItems[i].Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n }\r\n //vm.InitSlick(vm.BlogItems[i], 2);\r\n vm.BlogItems[i].DisplayDates = FormatCreatedUpdatedDateDisplay(vm.BlogItems[i].Created, vm.BlogItems[i].Updated);\r\n }\r\n }\r\n\r\n function GetSettings() {\r\n bizCoreService.Admin.GetGenericSetting(\"BLOG\", \"GUI_SETTINGS\", 0).then(GetSettingsSuccess);\r\n\r\n function GetSettingsSuccess(response) {\r\n if (response.data && response.data.Value) {\r\n vm.GUISettings = JSON.parse(response.data.Value);\r\n\r\n if (vm.GUISettings.RelatedSettings && vm.SelectedItem) {\r\n vm.GUISettings.RelatedSettings.RelatedId = vm.SelectedItem.Id;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetBlogEntries();\r\n vm.GetSettings();\r\n\r\n $translate(['BLOG.META.TITLE', 'BLOG.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['BLOG.META.TITLE'],\r\n description: translations['BLOG.META.DESCRIPTION']\r\n })\r\n });\r\n\r\n bizEngageService.GetMiniJourneySetting('Blog').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n function blogsShowController($rootScope, blogService, $stateParams, MetadataService, container,\r\n bizContainerSettings, bizEngageService, bizCoreService, $filter) {\r\n var vm = this;\r\n vm.SelectedItem = {};\r\n vm.EventSource = \"BLOG\";\r\n bizContainerSettings.ContainerRefererType = \"BLOG\";\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n vm.Preview = getParameterByNameFromUrl('preview', window.location.href) === 'true';\r\n\r\n vm.EntryTitle = $stateParams.title;\r\n\r\n vm.GetOneBlogEntry = GetOneBlogEntry;\r\n vm.GetDate = GetDate;\r\n\r\n function GetDate(date) {\r\n var momentDate = moment(date);\r\n if (momentDate.isValid() && (momentDate.hours() > 0 || momentDate.minutes() > 0))\r\n return moment(date).format('dddd D MMM YYYY HH:mm');\r\n else\r\n return moment(date).format('dddd D MMM YYYY');\r\n }\r\n\r\n function GetOneBlogEntry() {\r\n vm.AllItemsFetched = true;\r\n\r\n //handle if we give it the ID instead of the urlRewrite.\r\n if (~~vm.EntryTitle > 0) { \r\n blogService.GetOneBlogEntry(~~vm.EntryTitle, vm.Preview).then(GetOneBlogEntrySuccess, GetOneBlogEntryError);\r\n } else {\r\n blogService.GetOneBlogEntryByTitle(vm.EntryTitle).then(GetOneBlogEntrySuccess, GetOneBlogEntryError);\r\n }\r\n\r\n function GetOneBlogEntryError(err) {\r\n if (err.status == 401 || err.status == 404 || err.status == 500)\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetOneBlogEntrySuccess(response) {\r\n var blogItem = response.data;\r\n vm.EntryId = blogItem.Id;\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n bizContainerSettings.ContainerRefererCreatedByUserId = blogItem.UserId;\r\n vm.ItemsFetched = true\r\n vm.GettingMoreItems = false;\r\n\r\n blogItem.DisplayDates = FormatCreatedUpdatedDateDisplay(blogItem.Created, blogItem.Updated);\r\n blogItem.Container = new container(blogItem.Container);\r\n bizEngageService.HandleContainer(blogItem.Container, blogItem.Id, bizEngageService.Types.Blog, 7, vm.EventSource); \r\n\r\n vm.SelectedItem = blogItem;\r\n\r\n HandleMetaData();\r\n GetSettings(); \r\n }\r\n }\r\n\r\n function HandleMetaData() {\r\n var imageModules = vm.SelectedItem.Container.getModules(\"IMAGE\");\r\n var imageUrl = \"\";\r\n if (imageModules.length > 0 && imageModules[0].Content.ImageUrl.length > 0) {\r\n imageUrl = imageModules[0].Content.ImageUrl;\r\n }\r\n\r\n var videoModules = vm.SelectedItem.Container.getModules(\"VIDEO\");\r\n var videoUrl = \"\";\r\n if (videoModules.length > 0) {\r\n videoUrl = videoModules[0].Content.VideoUrl;\r\n }\r\n\r\n MetadataService.setMetaTags({\r\n title: vm.SelectedItem.Title,\r\n description: vm.SelectedItem.Description,\r\n img: imageUrl,\r\n video: videoUrl\r\n });\r\n }\r\n\r\n function GetSettings() {\r\n bizCoreService.Admin.GetGenericSetting(\"BLOG\", \"GUI_SETTINGS\", 0).then(GetSettingsSuccess);\r\n\r\n function GetSettingsSuccess(response) {\r\n if (response.data && response.data.Value) {\r\n vm.GUISettings = JSON.parse(response.data.Value);\r\n\r\n if (vm.GUISettings.RelatedSettings) {\r\n vm.GUISettings.RelatedSettings.RelatedId = vm.SelectedItem.Id;\r\n }\r\n }\r\n }\r\n } \r\n\r\n function Init() {\r\n vm.GetOneBlogEntry();\r\n\r\n bizEngageService.GetMiniJourneySetting('Blog').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n function blogsShowByTagController($rootScope, blogService, $stateParams, MetadataService, container, bizEngageService, $filter) {\r\n var vm = this;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n vm.BlogPostUrlRewrite = $stateParams.blogPostUrlRewrite;\r\n\r\n vm.SelectedItem = null;\r\n vm.EntriesPerPage = 10;\r\n\r\n vm.GetTag = GetTag;\r\n vm.PopulateContainer = PopulateContainer;\r\n vm.SetSelectedItem = SetSelectedItem;\r\n\r\n function GetTag(callback) {\r\n if (vm.TagSystemName) {\r\n blogService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else {\r\n blogService.GetTag(vm.TagId).then(GetTagSuccess);\r\n }\r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag ? vm.SelectedTag.Id : undefined;\r\n vm.Tag = response.data || response.data[0];\r\n\r\n if (vm.Tag.length > 0) {\r\n MetadataService.setMetaTags({\r\n title: vm.Tag.Name,\r\n description: vm.Tag.Description\r\n });\r\n }\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n function GetBlogEntries(ignoreLoader) {\r\n var tagIds = vm.TagId ? [vm.TagId] : undefined;\r\n var categoryIds = [];\r\n\r\n if (typeof CustomBlogTagFilter === 'function') {\r\n tagIds = CustomBlogTagFilter($rootScope.CurrentState, tagIds);\r\n }\r\n\r\n if (typeof CustomBlogCategoryFilterFn === 'function') {\r\n categoryIds = CustomBlogCategoryFilterFn($rootScope.CurrentState);\r\n }\r\n\r\n blogService.GetNewestBlogEntries(0, true, ignoreLoader, tagIds, -1, categoryIds).then(GetBlogEntriesSuccess);\r\n function GetBlogEntriesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.BlogItems = response.data;\r\n vm.GettingMoreItems = false;\r\n vm.BlogItemsToShow = vm.BlogItems.slice(0, vm.EntriesPerPage);\r\n vm.AllItemsFetched = vm.TotalEntries > vm.BlogItems.length;\r\n\r\n HandleBlogPosts();\r\n }\r\n }\r\n\r\n function SetSelectedItem(entry) {\r\n vm.BlogItems.map((e) => { e.Selected = false; });\r\n entry.Selected = true;\r\n\r\n vm.SelectedItem = entry;\r\n }\r\n\r\n function PopulateContainer(entry) {\r\n /*console.log(entry);*/\r\n if (entry.Container == null || entry.Container.Id === -1) {\r\n blogService.GetOneBlogEntry(entry.Id).then((response) => {\r\n var blogItem = response.data;\r\n entry.Container = new container(blogItem.Container);\r\n\r\n entry.Expanded = !entry.Expanded;\r\n });\r\n }\r\n else {\r\n entry.Expanded = !entry.Expanded;\r\n }\r\n\r\n vm.SetSelectedItem(entry);\r\n }\r\n\r\n function HandleBlogPosts() {\r\n //Populate Images and description\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n if (vm.BlogItems[i].ContainerId > 0) {\r\n vm.BlogItems[i].Container = new container(vm.BlogItems[i].Container);\r\n var modules = vm.BlogItems[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (vm.BlogItems[i].ImageUrl)\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n vm.BlogItems[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n\r\n if (vm.BlogItems[i].Description == null || vm.BlogItems[i].Description == \"\") {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Text\");\r\n if (modules != null && modules.length > 0) {\r\n vm.BlogItems[i].Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n }\r\n\r\n vm.BlogItems[i].DisplayDates = FormatCreatedUpdatedDateDisplay(vm.BlogItems[i].Created, vm.BlogItems[i].Updated);\r\n }\r\n\r\n if (typeof CustomHandleBlogPostsFn === 'function') {\r\n vm.BlogItems = CustomHandleBlogPostsFn($rootScope.CurrentState, $stateParams, vm.BlogItems, PopulateContainer);\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetTag(GetBlogEntries);\r\n\r\n bizEngageService.GetMiniJourneySetting('Blog').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n $rootScope.$on('selected-tag-changed', function (event, args) {\r\n if (args.tag && args.tag.Id > -1 && vm.TagSystemName != args.tag.SystemName) {\r\n vm.TagSystemName = args.tag.SystemName;\r\n vm.TagId = args.tag.Id;\r\n\r\n GetBlogEntries();\r\n }\r\n else if (args && args.tag === null) {\r\n vm.TagSystemName = '';\r\n vm.TagId = undefined;\r\n\r\n GetBlogEntries();\r\n }\r\n })\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n //DEPRECATED\r\n angular.module('bizPartEngage').controller('modules.blog', blogController);\r\n blogController.$inject = [\"modules.blog.service\", \"$stateParams\", \"$sce\", \"container\", \"$timeout\", \"$mdDialog\",\r\n \"MetadataService\", \"$filter\", \"$translate\", \"$rootScope\", \"bizContainerSettings\", \"bizSocialShareService\",\r\n \"$state\", \"bizEngageService\", \"bizCoreService\"];\r\n function blogController(blogService, $stateParams, $sce, container, $timeout, $mdDialog,\r\n MetadataService, $filter, $translate, $rootScope, bizContainerSettings, bizSocialShareService,\r\n $state, bizEngageService, bizCoreService) {\r\n\r\n var vm = this;\r\n vm.BlogItems = [];\r\n vm.EntryId = ~~$stateParams.id;\r\n vm.EntryTitle = $stateParams.title;\r\n vm.TagId = ~~$stateParams.tagId;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n vm.GUISettings = {};\r\n\r\n vm.GetBlogEntries = GetBlogEntries;\r\n vm.TotalLikeActions = TotalLikeActions;\r\n vm.GetLikeActionsByValue = GetLikeActionsByValue;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.ExpandItem = ExpandItem;\r\n vm.GetImageUrl = GetImageUrl;\r\n vm.GetDate = GetDate;\r\n vm.InitSlick = InitSlick;\r\n vm.GetMoreItems = GetMoreItems;\r\n vm.GetOneBlogEntry = GetOneBlogEntry;\r\n vm.GetTimeTo = GetTimeTo;\r\n vm.StartEducation = StartEducation;\r\n vm.IsUnpublished = IsUnpublished;\r\n vm.NavigateToBlogEntry = NavigateToBlogEntry;\r\n vm.RedirectToUrlRewrite = RedirectToUrlRewrite;\r\n\r\n vm.GetRelatedBlogEntries = GetRelatedBlogEntries;\r\n vm.GetTag = GetTag;\r\n\r\n bizContainerSettings.ContainerRefererType = \"BLOG\";\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n\r\n vm.EntriesPerPage = 10;\r\n vm.TotalEntries = vm.EntriesPerPage;\r\n\r\n vm.AddBlogComment = AddBlogComment;\r\n\r\n vm.NotVisible = NotVisible;\r\n\r\n vm.GetSettings = GetSettings;\r\n\r\n function GetSettings() {\r\n bizCoreService.Admin.GetGenericSetting(\"BLOG\", \"GUI_SETTINGS\", 0).then(GetSettingsSuccess);\r\n\r\n function GetSettingsSuccess(response) {\r\n if (response.data && response.data.Value) {\r\n vm.GUISettings = JSON.parse(response.data.Value);\r\n\r\n if (vm.GUISettings.RelatedSettings) {\r\n vm.GUISettings.RelatedSettings.RelatedId = vm.SelectedItem.Id;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function NotVisible(item) {\r\n var now = moment();\r\n var expire = moment(item.ExpireDate);\r\n var publish = moment(item.PublishDate);\r\n\r\n if (publish > now || (moment(expire).isValid() && expire < now))\r\n return true;\r\n }\r\n\r\n function GetTag(callback) {\r\n if (vm.TagSystemName) {\r\n blogService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else {\r\n blogService.GetTag(vm.TagId).then(GetTagSuccess);\r\n }\r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag.Id;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n function AddBlogComment(item) {\r\n if (item && $root.LoggedInUser.Id > 0)\r\n blogService.AddBlogComment(vm.NewComment, item.Id).then(AddBlogCommentSuccess);\r\n if (!item.Comments)\r\n item.Comments = [];\r\n\r\n function AddBlogCommentSuccess(response) {\r\n item.Comments.push(response.data);\r\n vm.NewComment = undefined;\r\n }\r\n }\r\n\r\n function StartEducation(education) {\r\n window.open(education.Url, '_blank');\r\n }\r\n\r\n function GetTimeTo(date) {\r\n var now = moment();\r\n var then = moment(date);\r\n var hours = moment.duration(then.diff(now)).asHours();\r\n return Math.round(hours);\r\n }\r\n\r\n function GetMoreItems() {\r\n vm.GettingMoreItems = true;\r\n vm.TotalEntries += vm.EntriesPerPage;\r\n vm.BlogItemsToShow = vm.BlogItems.slice(0, vm.TotalEntries)\r\n vm.AllItemsFetched = vm.TotalEntries > vm.BlogItems.length;\r\n vm.GettingMoreItems = false;\r\n }\r\n\r\n function GetDate(date) { \r\n return moment(date).format('dddd D MMM YYYY HH:mm');\r\n }\r\n\r\n function PerformLikeAction(item, action) {\r\n if (!action.LikeActionPerformedByUser) {\r\n blogService.AddLikeActionToBlogEntry(item.Id, action.Action.Id).then(AddLikeActionToBlogEntrySuccess);\r\n }\r\n\r\n function AddLikeActionToBlogEntrySuccess(response) {\r\n action.LikeActionPerformedByUser = true; // changed from item\r\n action.Count++;\r\n\r\n var totalCount = 0;\r\n var totalValue = 0;\r\n\r\n for (var i = 0; i < item.LikeActions.length; i++) {\r\n totalCount += item.LikeActions[i].Count;\r\n totalValue += item.LikeActions[i].Action.Value * item.LikeActions[i].Count;\r\n }\r\n\r\n item.AverageLikeValue = totalValue / totalCount;\r\n }\r\n }\r\n\r\n function IsUnpublished(entry) {\r\n if (entry && entry.PublishDate) {\r\n return moment(entry.PublishDate).isAfter(moment());\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function GetImageUrl(url) {\r\n if (url) {\r\n if (url.startsWith('/'))\r\n url = url.substr(1, url.length - 1);\r\n\r\n return siteRootPath + url.replace('~', '');\r\n }\r\n }\r\n\r\n function NavigateToBlogEntry(entry) {\r\n return $state.go(\"base.modules.blogtitle\", { title: entry.UrlRewrite }); // || entry.Id\r\n }\r\n\r\n function InitSlick(entry, overrideSlides) {\r\n entry.SlickLoaded = false;\r\n entry.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: overrideSlides || 4,\r\n slidesToScroll: overrideSlides || 4,\r\n customPaging: function () {\r\n return '';\r\n },\r\n responsive: [{\r\n breakpoint: 960,\r\n settings: {\r\n slidesToShow: vm.SlickOverrideResponsiveSlides || 2,\r\n slidesToScroll: vm.SlickOverrideResponsiveSlides || 2\r\n }\r\n }]\r\n }\r\n $timeout(function () {\r\n entry.SlickLoaded = true;\r\n });\r\n }\r\n\r\n function GetLikeActionsByValue(entry, positive) {\r\n var result = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n if ((positive && entry.LikeActions[i].Action.Value > 0) || (!positive && entry.LikeActions[i].Action.Value < 0)) {\r\n result += entry.LikeActions[i].Count;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function TotalLikeActions(entry) {\r\n var count = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n count += entry.LikeActions[i].Count;\r\n }\r\n return count;\r\n }\r\n\r\n function ExpandItem(item) {\r\n vm.GetRelatedBlogEntries(item);\r\n\r\n if (item.Expanded)\r\n return;\r\n\r\n if (vm.ExpandedItem)\r\n vm.ExpandedItem.Expanded = false;\r\n\r\n vm.ExpandedItem = item;\r\n vm.ExpandedItem.Expanded = true;\r\n window.scrollTo(0, 0);\r\n\r\n bizSocialShareService.loadedObject = item;\r\n }\r\n\r\n function GetRelatedBlogEntries(item) {\r\n if (!item.RelatedEntries) {\r\n blogService.GetRelatedBlogPosts(item.Id).then(GetRelatedBlogPostsSuccess);\r\n }\r\n\r\n function GetRelatedBlogPostsSuccess(response) {\r\n item.RelatedEntries = response.data;\r\n\r\n //Populate Images...\r\n for (var i = 0; i < item.RelatedEntries.length; i++) {\r\n if (item.RelatedEntries[i].ContainerId > 0) {\r\n item.RelatedEntries[i].Container = new container(item.RelatedEntries[i].Container);\r\n var modules = item.RelatedEntries[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n item.RelatedEntries[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = item.RelatedEntries[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (item.RelatedEntries[i].ImageUrl)\r\n item.RelatedEntries[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n item.RelatedEntries[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.InitSlick(item);\r\n }\r\n }\r\n\r\n\r\n function GetOneBlogEntry(entryId, entryTitle) {\r\n vm.AllItemsFetched = true;\r\n\r\n if (entryId > 0) {\r\n blogService.GetOneBlogEntry(entryId, false).then(GetOneBlogEntrySuccess);\r\n } else if (entryTitle) {\r\n blogService.GetOneBlogEntryByTitle(entryTitle, false).then(GetOneBlogEntrySuccess, GetOneBlogEntryError);\r\n }\r\n\r\n function GetOneBlogEntryError(err) {\r\n if (err.status == 401 || err.status == 404 || err.status == 500)\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetOneBlogEntrySuccess(response) {\r\n var blogItem = response.data;\r\n vm.EntryId = blogItem.Id;\r\n bizContainerSettings.ContainerRefererObjectId = vm.EntryId;\r\n bizContainerSettings.ContainerRefererCreatedByUserId = blogItem.UserId;\r\n vm.BlogItems.push(blogItem);\r\n vm.ItemsFetched = true\r\n vm.GettingMoreItems = false;\r\n\r\n blogItem.Container = new container(blogItem.Container);\r\n bizEngageService.HandleContainer(blogItem.Container, blogItem.Id, bizEngageService.Types.Blog);\r\n\r\n vm.SelectedItem = blogItem;\r\n vm.ExpandItem(blogItem);\r\n\r\n var imageModules = vm.BlogItems[0].Container.getModules(\"IMAGE\");\r\n var imageUrl = \"\";\r\n if (imageModules.length > 0 && imageModules[0].Content.ImageUrl.length > 0) {\r\n imageUrl = imageModules[0].Content.ImageUrl;\r\n }\r\n\r\n var videoModules = vm.BlogItems[0].Container.getModules(\"VIDEO\");\r\n var videoUrl = \"\";\r\n if (videoModules.length > 0) {\r\n videoUrl = videoModules[0].Content.VideoUrl;\r\n }\r\n\r\n MetadataService.setMetaTags({\r\n title: blogItem.Title,\r\n description: blogItem.Description,\r\n img: imageUrl,\r\n video: videoUrl\r\n });\r\n\r\n vm.GetBlogEntries(true);\r\n\r\n vm.GetSettings();\r\n }\r\n }\r\n\r\n function GetBlogEntries(ignoreLoader) {\r\n if (vm.TagSystemName) {\r\n GetTag(GetBlogEntriesLocal);\r\n } else {\r\n GetBlogEntriesLocal(ignoreLoader);\r\n }\r\n\r\n vm.SortMostCommented = SortMostCommented;\r\n vm.SortMostLiked = SortMostLiked;\r\n\r\n function SortMostCommented() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsCommented = items.sort(function (a, b) { return b.Comments.length - a.Comments.length }).slice(0, 6);\r\n }\r\n\r\n function SortMostLiked() {\r\n var items = angular.copy(vm.BlogItems);\r\n vm.BlogItemsLiked = items.sort(function (a, b) { return b.LikeValue - a.LikeValue }).slice(0, 6);\r\n }\r\n\r\n function GetBlogEntriesLocal(ignoreLoader) {\r\n var tagIds = vm.TagId ? [vm.TagId] : undefined;\r\n blogService.GetNewestBlogEntries(0, true, ignoreLoader, tagIds, -1).then(GetBlogEntriesSuccess);\r\n function GetBlogEntriesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.BlogItems = response.data;\r\n vm.SortMostLiked();\r\n vm.SortMostCommented();\r\n vm.GettingMoreItems = false;\r\n vm.BlogItemsToShow = vm.BlogItems.slice(0, vm.EntriesPerPage);\r\n console.log(vm.BlogItemsToShow);\r\n vm.AllItemsFetched = vm.TotalEntries > vm.BlogItems.length;\r\n\r\n //Populate Images and description\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n if (vm.BlogItems[i].ContainerId > 0) {\r\n vm.BlogItems[i].Container = new container(vm.BlogItems[i].Container);\r\n var modules = vm.BlogItems[i].Container.getModules(\"Image\");\r\n if (modules && modules.length > 0) {\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.ImageUrl;\r\n }\r\n else {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Video\");\r\n if (modules && modules.length > 0) {\r\n if (vm.BlogItems[i].ImageUrl)\r\n vm.BlogItems[i].ImageUrl = modules[0].Content.VideoUrl.replace('~/', \"\") + \".jpg\";\r\n else\r\n vm.BlogItems[i].ImageUrl = \"https://img.youtube.com/vi/\" + modules[0].Content.YoutubeId + \"/0.jpg\";\r\n }\r\n }\r\n\r\n if (vm.BlogItems[i].Description == null || vm.BlogItems[i].Description == \"\") {\r\n var modules = vm.BlogItems[i].Container.getModules(\"Text\");\r\n if (modules != null && modules.length > 0) {\r\n vm.BlogItems[i].Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n }\r\n vm.InitSlick(vm.BlogItems[i], 2);\r\n }\r\n if (!vm.ExpandedItem && (vm.EntryId > 0 || vm.EntryTitle)) {\r\n var entry;\r\n if (vm.EntryId > 0) {\r\n entry = vm.BlogItems.GetItemByValue('Id', vm.EntryId);\r\n } else if (vm.EntryTitle) {\r\n entry = vm.BlogItems.GetItemByValue('UrlRewrite', vm.EntryTitle);\r\n }\r\n if (!entry)\r\n vm.GetOneBlogEntry(vm.EntryId, vm.EntryTitle);\r\n else {\r\n vm.EntryId = entry.Id;\r\n vm.SelectedItem = entry;\r\n vm.ExpandItem(entry);\r\n }\r\n }\r\n else if (vm.TagId > 0 || vm.TagSystemName) {\r\n GetTag();\r\n }\r\n else if (!vm.SelectedItem) {\r\n vm.SelectedItem = vm.BlogItems[0];\r\n }\r\n }\r\n }\r\n }\r\n\r\n function RedirectToUrlRewrite(id) {\r\n blogService.GetEntryUrlRewriteById(id).then(GetEntryUrlRewriteByIdCallback);\r\n\r\n function GetEntryUrlRewriteByIdCallback(response) {\r\n var urlRewrite = BizPartCoreHelpers.getResponseValue(response);\r\n $state.go(\"base.modules.blogtitle\", { title: urlRewrite })\r\n }\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n var id = ~~$stateParams.id;\r\n if (id > 0) {\r\n\r\n vm.RedirectToUrlRewrite(id);\r\n return;\r\n }\r\n\r\n if (vm.EntryTitle) {\r\n GetOneBlogEntry(vm.EntryId, vm.EntryTitle);\r\n }\r\n else {\r\n vm.GetBlogEntries();\r\n }\r\n\r\n $translate(['BLOG.META.TITLE', 'BLOG.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['BLOG.META.TITLE'],\r\n description: translations['BLOG.META.DESCRIPTION']\r\n })\r\n });\r\n });\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizModuleBlogList', bizModuleBlogListDirective);\r\n\r\n bizModuleBlogListDirective.$inject = [];\r\n\r\n function bizModuleBlogListDirective() {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=\"\r\n },\r\n templateUrl: function(element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return siteRootPath + \"FrontEnd/Modules/Blog/Views/blog-list.html\"\r\n }\r\n },\r\n controller: bizModuleBlogListController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n };\r\n\r\n bizModuleBlogListController.$inject = [\"$rootScope\", \"modules.blog.service\", \"$timeout\", \"$sce\", \"core.services.favorite\"];\r\n\r\n function bizModuleBlogListController($rootScope, blogService, $timeout, $sce, favoritesService) {\r\n var vm = this;\r\n vm.BlogItems = [];\r\n\r\n vm.Init = Init;\r\n\r\n function InitObjectMiniList() {\r\n\r\n console.log(\"bloglist settings\", vm.settings);\r\n vm.BlogItemsForMiniObjectList = [];\r\n\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n var blogItem = vm.BlogItems[i];\r\n\r\n var miniObject = {\r\n Id: blogItem.Id,\r\n Name: blogItem.Title,\r\n Description: blogItem.Description,\r\n ImageUrl: blogItem.ImageUrl,\r\n EngageObjects: [],\r\n Url: { state: 'base.modules.blogtitle', params: { title: blogItem.UrlRewrite } }\r\n };\r\n\r\n vm.BlogItemsForMiniObjectList.push(miniObject);\r\n }\r\n }\r\n\r\n function Init() {\r\n var ids = [];\r\n\r\n if(!vm.settings) {\r\n console.warn('No settings provided...');\r\n return;\r\n }\r\n \r\n if(!vm.settings.Filter && vm.settings.SelectedFilter) vm.settings.Filter = vm.settings.SelectedFilter.Value;\r\n if(!vm.settings.Limit && vm.settings.SelectedLimit) vm.settings.Limit = vm.settings.SelectedLimit.Value;\r\n\r\n if (vm.settings.Filter == 'newest') {\r\n const categoryIds = vm.settings.CategoryIds !== undefined ? JSON.parse(vm.settings.CategoryIds) ?? null : null;\r\n const tagIds = vm.settings.TagIds !== undefined ? JSON.parse(vm.settings.TagIds) ?? null : null;\r\n blogService.GetNewestBlogEntries(0, true, true, tagIds, vm.settings.Limit + 1, categoryIds).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'journey') {\r\n blogService.GetBlogEntriesByJourneyOrder(0, true, true, $rootScope.FavoriteTagIds, vm.settings.Limit + 1).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'related') {\r\n blogService.GetRelatedBlogPosts(vm.settings.RelatedId).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'mostcommented') {\r\n blogService.GetMostCommentedPosts(vm.settings.Limit).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'mostliked') {\r\n blogService.GetMostLikedPosts(vm.settings.Limit).then(GetBlogPostsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'featured') {\r\n\r\n for(var i = 0; i < vm.settings.Limit; i++) {\r\n ids.push(vm.settings.SelectedBlogs[i].Id);\r\n }\r\n \r\n blogService.GetBlogPosts(ids).then(GetBlogPostsSuccess);\r\n }\r\n\r\n function GetBlogPostsSuccess(response) {\r\n if(vm.settings.Filter == 'featured') {\r\n vm.BlogItems = [];\r\n\r\n for(var i = 0; i < ids.length; i++) {\r\n vm.BlogItems.push(response.data.GetItemByValue('Id', ids[i]));\r\n }\r\n }\r\n else {\r\n vm.BlogItems = response.data;\r\n }\r\n\r\n HandleItems();\r\n }\r\n\r\n function HandleItems() {\r\n for (var i = 0; i < vm.BlogItems.length; i++) {\r\n vm.BlogItems[i].DisplayDates = FormatCreatedUpdatedDateDisplay(vm.BlogItems[i].Created, vm.BlogItems[i].Updated);\r\n }\r\n\r\n InitObjectMiniList();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n vm.$onInit();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.blog.service', blogService);\r\n\r\n blogService.$inject = [\"$http\"];\r\n\r\n function blogService($http) {\r\n \tthis.GetBlogEntries = function () {\r\n \t\treturn $http.get(siteRootPath + \"api/BlogUser/GetBlogPostsForUser\");\r\n \t};\r\n\r\n\t\tthis.GetRelatedBlogPosts = function (relatedToId) {\r\n\t\t\treturn $http.get(siteRootPath + \"api/BlogUser/GetRelatedBlogPosts\", {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\trelatedToId: relatedToId\r\n\t\t\t\t},\r\n\t\t\t\tignoreLoadingBar: true\r\n\t\t\t}, {\r\n \t\t\theaders: {\r\n \t\t\t\tIgnoreLoader: true\r\n \t\t\t}\r\n \t\t});\r\n };\r\n\r\n this.GetEntryUrlRewriteById = function (id) {\r\n return $http.get(siteRootPath + \"api/BlogUser/GetEntryUrlRewriteById\", {\r\n params: {\r\n id: id\r\n }\r\n });\r\n }\r\n\r\n \tthis.GetOneBlogEntry = function (id, preview) {\r\n \t\treturn $http.get(siteRootPath + \"api/BlogUser/GetBlogPost\", {\r\n \t\t\tparams: {\r\n id: id,\r\n preview: preview || false\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tthis.GetOneBlogEntryByTitle = function (title) {\r\n \t\treturn $http.get(siteRootPath + \"api/BlogUser/GetBlogPostByTitle\", {\r\n \t\t\tparams: {\r\n \t\t\t\ttitle: title\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tthis.AddLikeActionToBlogEntry = function (entryId, actionId) {\r\n\t\t\treturn $http.post(siteRootPath + 'api/BlogUser/AddLikeActionToBlogEntry', { objectId: entryId, actionId: actionId }, { ignoreLoadingBar: true });\r\n \t}\r\n\r\n \tthis.AddBlogComment = function (comment, entryId, parentId) {\r\n \t return $http.post(siteRootPath + 'api/BlogUser/AddBlogComment', {Comment: comment, ObjectId: entryId});\r\n \t}\r\n\r\n \t//this.DeleteBlogComment = function (commentId) {\r\n \t// return $http.get(siteRootPath + 'api/BlogAdmin/DeleteBlogComment', {\r\n \t// params: {\r\n \t// commentId: commentId\r\n \t// }\r\n \t// });\r\n \t//};\r\n\r\n \tthis.GetRelatedEntries = function (entryId, pageSize, pageIndex, overrideCache) {\r\n \t\treturn $http.post(servicePath + 'GetBlogPostsByRelatedEntryLoggedInUser', {\r\n \t\t\tentryId: entryId,\r\n \t\t\tpageSize: pageSize,\r\n \t\t\tpageIndex: pageIndex,\r\n \t\t\toverrideCache: overrideCache\r\n \t\t}, {\r\n \t\t\theaders: {\r\n \t\t\t\tIgnoreLoader: true\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n \tthis.GetEntriesByTags = function (tagIds, pageIndex, pageSize, overrideCache, ignoreLoader) {\r\n \t\treturn $http.post(servicePath + 'GetBlogPostsByTagsForLoggedInUser', {\r\n \t\t\ttagIds: tagIds,\r\n \t\t\tpageIndex: pageIndex,\r\n \t\t\tpageSize: pageSize,\r\n \t\t\toverrideCache: overrideCache\r\n \t\t}, {\r\n \t\t\theaders: {\r\n \t\t\t\tIgnoreLoader: ignoreLoader || false\r\n \t\t\t}\r\n \t\t});\r\n }\r\n\r\n const GetBlogEntriesByOrder = (pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, order, categoryIds) => {\r\n var parameters = {\r\n tagIds: tagIds,\r\n order: order,\r\n pageIndex: pageIndex,\r\n overrideCache: overrideCache,\r\n updateLatest: true,\r\n pageSize: pageSize,\r\n categoryIds: categoryIds\r\n }\r\n return $http.post('api/BlogUser/GetBlogPostsInOrderForLoggedInUser', parameters, {\r\n headers: {\r\n IgnoreLoader: ignoreLoader || false\r\n }\r\n });\r\n }\r\n\r\n \tthis.GetNewestBlogEntries = function (pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, categoryIds) {\r\n return GetBlogEntriesByOrder(pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, 0, categoryIds)\r\n }\r\n\r\n this.GetBlogEntriesByJourneyOrder = function (pageIndex, overrideCache, ignoreLoader, tagIds, pageSize) {\r\n return GetBlogEntriesByOrder(pageIndex, overrideCache, ignoreLoader, tagIds, pageSize, 5)\r\n } \r\n\r\n \tthis.GetTag = function (id) {\r\n \t\treturn $http.get(siteRootPath + \"api/generictag/getTags?\" + $.param({ tagIds: id }));\r\n \t}\r\n\r\n \tthis.GetTagBySystemName = function (systemName) {\r\n \t\treturn $http.get(siteRootPath + \"api/generictag/getTagBySystemName?\" + $.param({ tagSystemName: systemName }));\r\n\t\t};\r\n\t\t\r\n\t\tthis.GetBlogPosts = function(ids) {\r\n\t\t\treturn $http.post(siteRootPath + \"api/BlogUser/GetBlogPosts\", {\r\n \t\t\tSpecificIds: ids\r\n \t\t});\r\n\t\t};\r\n\r\n\t\tthis.GetMostCommentedPosts = function(limit) {\r\n\t\t\treturn $http.post(siteRootPath + \"api/BlogUser/GetBlogPosts\", {\r\n\t\t\t\tOrder: 4,\r\n\t\t\t\tPageSize: limit,\r\n\t\t\t\tPageIndex: 0,\r\n\t\t\t\tUseComments: true\r\n \t\t});\r\n\t\t};\r\n\r\n\t\tthis.GetMostLikedPosts = function(limit) {\r\n\t\t\treturn $http.post(siteRootPath + \"api/BlogUser/GetBlogPosts\", {\r\n\t\t\t\tOrder: 2,\r\n\t\t\t\tPageSize: limit,\r\n\t\t\t\tPageIndex: 0,\r\n \t\t});\r\n\t\t};\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n\tangular.module('bizPartEngage').controller('modules.cms.page', pageController);\r\n pageController.$inject = [\"$rootScope\", \"modules.cms.service\", \"$stateParams\", \"container\", \"bizContainerService\", \"bizContainerUrls\", \"bizContainerSettings\", \"MetadataService\", \"$filter\"];\r\n\r\n function pageController($rootScope, cmsService, $stateParams, container, bizContainerService, bizContainerUrls, bizContainerSettings, MetadataService, $filter) {\r\n var vm = this;\r\n vm.PageIdentifier = $stateParams.id;\r\n\r\n vm.GetCMSPage = GetCMSPage;\r\n\r\n bizContainerSettings.ContainerRefererType = \"CMS\";\r\n\r\n vm.uiOnParamsChanged = function (changedParams, transition) {\r\n \t$rootScope.$broadcast('DYNAMIC_PARAMS_CHANGED', changedParams);\r\n }\r\n\r\n function GetCMSPage() {\r\n \tvm.GettingCMSPage = true;\r\n\r\n cmsService.GetCMSPage(vm.PageIdentifier).then(GetCmsPageSuccess, GetCmsPageReject);\r\n\r\n function GetCmsPageReject(response) {\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetCmsPageSuccess(response) {\r\n \t\tvm.Page = response.data;\r\n \t\tvm.Page.Container = new container(vm.Page.Container);\r\n \r\n \t\t$rootScope.DisableMainMenuSticky = !$rootScope.menuSettings.IsSticky;\r\n \t\tvm.GettingCMSPage = false;\r\n\r\n \t\tif (vm.Page.Container.hasStickyNavigation())\r\n \t\t\t$rootScope.DisableMainMenuSticky = true;\r\n\r\n var imageModules = vm.Page.Container.getModules(\"IMAGE\");\r\n var imageUrl = \"\";\r\n if (imageModules.length > 0 && imageModules[0].Content.ImageUrl.length > 0) {\r\n imageUrl = imageModules[0].Content.ImageUrl;\r\n }\r\n \r\n MetadataService.setMetaTags({\r\n title: vm.Page.Title,\r\n description: vm.Page.Description,\r\n keywords: vm.Page.Keywords,\r\n img: imageUrl\r\n });\r\n }\r\n }\r\n\r\n vm.$onInit = function() {\r\n \tvm.GetCMSPage();\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.cms.service', cmsService);\r\n\r\n\tcmsService.$inject = [\"$http\"];\r\n\r\n\tfunction cmsService($http) {\r\n var basePath = siteRootPath + \"api/cmsuser/\";\r\n\r\n this.GetCMSPage = function (urlRewrite) {\r\n return $http.get(basePath + \"GetCMSPage\", {\r\n \tparams: {\r\n \t\turlRewrite: urlRewrite\r\n \t},\r\n ignoreLoadingBar: true\r\n });\r\n }\r\n\r\n this.HasCMSPage = function (urlRewrite) {\r\n return $http.get(basePath + \"HasCMSPage\", {\r\n params: {\r\n urlRewrite: urlRewrite\r\n },\r\n ignoreLoadingBar: true\r\n });\r\n }\r\n\r\n this.GetCMSPageById = function (id) {\r\n return $http.get(basePath + \"GetCMSPageById\", {\r\n params: {\r\n id: id\r\n },\r\n ignoreLoadingBar: true\r\n });\r\n }\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.campaign', campaignController);\r\n\tangular.module('bizPartEngage').controller('modules.campaign.page', campaignPageController);\r\n\r\n\tcampaignController.$inject = [\"BizCampaignService\", \"$stateParams\", \"$rootScope\", \"$state\",\r\n\t\t\"bizContainerSettings\", \"bizCoreService\"];\r\n\tcampaignPageController.$inject = [\"BizCampaignService\", \"$stateParams\", \"$rootScope\", \"$state\", \"$window\",\r\n\t\t\"bizContainerService\", \"container\", \"$scope\"];\r\n\r\n\tfunction campaignController(campaignService, $stateParams, $rootScope, $state, bizContainerSettings, bizCoreService) {\r\n var vm = this;\r\n\r\n vm.GetCampaign = GetCampaign;\r\n vm.GoToCampaignStart = GoToCampaignStart;\r\n\r\n function GetCampaign() {\r\n \tcampaignService.GettingCampaign = campaignService.GetCampaign($stateParams.urlRewrite);\r\n \tcampaignService.GettingCampaign.then(GetCampaignCallback);\r\n\r\n \tfunction GetCampaignCallback(response) {\r\n \t\tvm.Campaign = response.data;\r\n \t\tcampaignService.Campaign = vm.Campaign;\r\n\r\n \t\tbizContainerSettings.ContainerRefererType = \"CAMPAIGN\";\r\n \t\tbizContainerSettings.ContainerRefererObjectId = vm.Campaign.Id;\r\n\r\n \t\tif ($stateParams.referer)\r\n \t\t\tbizCoreService.LogGenericObjectVisit(\"CAMPAIGN\", vm.Campaign.Id, $stateParams.referer);\r\n\r\n \t\tif (!$stateParams.pageUrlRewrite)\r\n \t\t\tvm.GoToCampaignStart();\r\n \t}\r\n }\r\n\r\n function GoToCampaignStart() {\r\n \tvar startPage = vm.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 1);\r\n \tif (!startPage || $rootScope.LoggedInUser.Id > 0) {\r\n \t\tstartPage = vm.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 2);\r\n \t\tif (!startPage) {\r\n \t\t\tfor (var i = 0; i < vm.Campaign.CampaignPages.length; i++) {\r\n \t\t\t\tif (vm.Campaign.CampaignPages[i].CampaignPageTypeId > 1) {\r\n \t\t\t\t\tstartPage = vm.Campaign.CampaignPages[i];\r\n \t\t\t\t\tbreak;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n \t\r\n \tif (startPage)\r\n \t\t$state.go($rootScope.CurrentState.name + \".page\", { pageUrlRewrite: startPage.UrlRewrite });\r\n \telse\r\n \t\tconsole.warn(\"No access to campaign pages\");\r\n }\r\n\r\n $rootScope.Initialized.then(vm.GetCampaign);\r\n }\r\n\r\n\tfunction campaignPageController(campaignService, $stateParams, $rootScope, $state, $window, bizContainerService, container, $scope) {\r\n \tvar vm = this;\r\n\r\n \tvm.GoToStart = GoToStart;\r\n \tvm.GetCampaignPage = GetCampaignPage;\r\n \tcampaignService.ChangePage = ChangePage;\r\n\r\n \tfunction ChangePage(pageId) {\r\n \t\tif ($rootScope.LoggedInUser.Id > 0) {\r\n \t\t\tvar page = campaignService.Campaign.CampaignPages.GetItemByValue('Id', pageId);\r\n \t\t\tif (page)\r\n \t\t\t\t$state.go($rootScope.CurrentState.name, { pageUrlRewrite: page.UrlRewrite });\r\n \t\t}\r\n \t\telse\r\n \t\t\t$window.location.reload();\r\n \t}\r\n\r\n \tfunction GoToStart() {\r\n \t\tvar startPage = campaignService.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 1);\r\n \t\tif (!startPage || $rootScope.LoggedInUser.Id > 0) {\r\n \t\t\tstartPage = campaignService.Campaign.CampaignPages.GetItemByValue('CampaignPageTypeId', 2);\r\n \t\t\tif (!startPage) {\r\n \t\t\t\tfor (var i = 0; i < campaignService.Campaign.CampaignPages.length; i++) {\r\n \t\t\t\t\tif (campaignService.Campaign.CampaignPages[i].CampaignPageTypeId > 1) {\r\n \t\t\t\t\t\tstartPage = campaignService.Campaign.CampaignPages[i];\r\n \t\t\t\t\t\tbreak;\r\n \t\t\t\t\t}\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (startPage)\r\n \t\t\t$state.go($rootScope.CurrentState.name, { pageUrlRewrite: startPage.UrlRewrite });\r\n \t}\r\n\r\n \tfunction GetCampaignPage() {\r\n \t\tvm.GettingCampaignPage = true;\r\n\r\n \t\tcampaignService.GettingCampaign.then(PerformGetCampaignPage);\r\n\r\n \t\tfunction PerformGetCampaignPage() {\r\n \t\t\tif (!campaignService.Campaign)\r\n \t\t\t\treturn;\r\n\r\n \t\t\tvar page = campaignService.Campaign.CampaignPages.GetItemByValue(\"UrlRewrite\", $stateParams.pageUrlRewrite);\r\n \t\t\tif (!page) {\r\n \t\t\t\tvm.GoToStart();\r\n \t\t\t\treturn;\r\n \t\t\t}\r\n\r\n \t\t\tcampaignService.GetCampaignPage(page.Id).then(GetCampaignPageCallback);\r\n\r\n \t\t\tfunction GetCampaignPageCallback(response) {\r\n \t\t\t\tvar page = response.data;\r\n \t\t\t\tif (page && page.Container) {\r\n \t\t\t\t\tpage.Container = new container(page.Container);\r\n \t\t\t\t\tvm.CampaignPage = page;\r\n \t\t\t\t}\r\n\r\n \t\t\t\tvm.GettingCampaignPage = false;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \tvar destroyOnModuleFinish = $rootScope.$on('MODULE_FINISH', function (e, module) {\r\n \t\tif (module.UseSettings) {\r\n \t\t\tbizContainerService.SetContainerModuleInstanceFinished(module.Id).then(ModuleInstanceFinishedSuccess);\r\n \t\t}\r\n \t});\r\n\r\n \t$scope.$on(\"$destroy\", destroyOnModuleFinish);\r\n\r\n \t$rootScope.Initialized.then(vm.GetCampaignPage);\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('BizCampaignService', campaignService);\r\n\r\n\tcampaignService.$inject = [\"$http\"];\r\n\r\n function campaignService($http) {\r\n \tvar controllerPath = siteRootPath + \"api/CampaignUser/\";\r\n\r\n \treturn {\r\n \t\tGetCampaign: GetCampaign,\r\n \t\tGetCampaignPage: GetCampaignPage\r\n \t};\r\n\r\n \tfunction GetCampaign(urlRewrite) {\r\n \t\treturn $http.get(controllerPath + \"GetCampaign\", {\r\n \t\t\tparams: {\r\n \t\t\t\turlRewrite: urlRewrite\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n\r\n \tfunction GetCampaignPage(pageId) {\r\n \t\treturn $http.get(controllerPath + \"GetCampaignPage\", {\r\n \t\t\tparams: {\r\n \t\t\t\tid: pageId\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.certifications', indexController);\r\n\r\n indexController.$inject = [\"$stateParams\", \"$state\", \"modules.certifications.service\", \"$rootScope\"];\r\n\r\n function indexController($stateParams, $state, certService, $rootScope) {\r\n var vm = this;\r\n\r\n vm.AuthToken = $rootScope.AuthToken;\r\n vm.CertList = [];\r\n vm.NoImageUrl = 'Images/Common/no_img.svg';\r\n\r\n vm.Init = Init;\r\n vm.GetCertifications = GetCertifications; \r\n\r\n function GetCertifications() {\r\n certService.GetCertificationsForUser().then(GetCertificationsForUserSuccess);\r\n\r\n function GetCertificationsForUserSuccess(response) { \r\n vm.CertList = BizPartCoreHelpers.getResponseValue(response, []);\r\n for (var i = 0; i < vm.CertList.length; i++) { \r\n \r\n var totalXp = 0;\r\n for (var j = 0; j < vm.CertList[i].Items.length; j++) { \r\n totalXp = totalXp + vm.CertList[i].Items[j].Item.ExperienceGive; \r\n }\r\n vm.CertList[i].ExperienceGive = totalXp;\r\n } \r\n }\r\n }\r\n\r\n function Init() { \r\n vm.GetCertifications();\r\n }\r\n\r\n this.$onInit = vm.Init;\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.certifications.service', certificationsService);\r\n\r\n certificationsService.$inject = [\"$http\"];\r\n\r\n function certificationsService($http) {\r\n\r\n var servicePath = siteRootPath + 'api/certificationsuser/';\r\n\r\n this.GetCertificationsForUser = function () {\r\n return $http.get(servicePath + 'GetCertificatesForUser');\r\n }; \r\n }\r\n})(window.angular);","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.dictionary', indexController);\r\n\r\n indexController.$inject = [\"modules.dictionary.service\", \"$stateParams\"];\r\n\r\n function indexController(dictionaryService, $stateParams) {\r\n\t\tvar vm = this;\r\n vm.SelectedItemId = ~~$stateParams.id;\r\n\r\n\t\tvm.Dictionary = [];\r\n\t\tvm.LettersWithWords = [];\r\n vm.GetDictionary = GetDictionary;\r\n\r\n\t\tfunction GetDictionary() {\r\n\t\t\tdictionaryService.GetAllEntries(-1).then(GetDictionarySuccess);\r\n\r\n\t\t\tfunction GetDictionarySuccess(response) {\r\n\t\t\t\tvar dictionary = (response.data.d || response.data);\r\n\r\n\t\t\t\tfor (var i = 0; i < dictionary.length; i++) {\r\n\t\t\t\t\tvar fl = dictionary[i].Word.substring(0, 1);\r\n\t\t\t\t\tdictionary[i].FirstLetter = fl;\r\n\t\t\t\t\tif (vm.LettersWithWords.indexOf(fl) < 1) {\r\n\t\t\t\t\t\tvm.LettersWithWords.push(fl);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.Dictionary = dictionary;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\tvm.GetDictionary();\r\n\t\t}\r\n\t}\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.dictionary.service', dictionaryService);\r\n\r\n\tdictionaryService.$inject = [\"$http\"];\r\n\r\n\tfunction dictionaryService($http) {\r\n\t\tthis.GetAllEntries = function (id) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/dictionary/GetAllEntries?' + $.param({ cultureId: id }));\r\n\t\t};\r\n\t\tthis.GetAllEntriesWCategories = function (categories = '') {\r\n\t\t\treturn $http.get(siteRootPath + 'api/dictionary/GetAllEntriesWCategories?' + $.param({ categoriesCommaSep: categories }));\r\n\t\t};\r\n\r\n\t}\r\n\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.educations', indexController);\r\n angular.module('bizPartEngage').controller('modules.educations.html5', html5Controller);\r\n\r\n indexController.$inject = [\"modules.education.service\", \"$state\", \"$stateParams\", \"container\", \"$filter\", \"$translate\", \"MetadataService\", \"bizEngageService\"];\r\n html5Controller.$inject = [\"$rootScope\", \"$scope\", \"$q\", \"modules.education.service\", \"BizOnlineEducationReplyService\", \"$stateParams\", \"container\", \r\n \"bizContainerSettings\", \"$translate\", \"MetadataService\", \"bizEngageService\", \"core.engage.service\"];\r\n\r\n function indexController(educationService, $state, $stateParams, container, $filter, $translate, MetadataService, bizEngageService) {\r\n var vm = this;\r\n vm.TagId = ~~$stateParams.tagId;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n\r\n function GetTag() {\r\n if (vm.TagSystemName) {\r\n educationService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else if (vm.TagId) {\r\n educationService.GetTag(vm.TagId).then(GetTagSuccess);\r\n } \r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag.Id;\r\n }\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['EDUCATION.META.TITLE', 'EDUCATION.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['EDUCATION.META.TITLE'],\r\n description: translations['EDUCATION.META.DESCRIPTION']\r\n })\r\n });\r\n });\r\n\r\n vm.$onInit = function () {\r\n GetTag();\r\n bizEngageService.GetMiniJourneySetting('HTML5').then(function (response) { \r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n }\r\n\r\n function html5Controller($rootScope, $scope, $q, educationService, replyService, $stateParams, container, \r\n bizContainerSettings, $translate, MetadataService, bizEngageService, engageService) {\r\n var vm = this;\r\n vm.OnlineEducation = undefined;\r\n vm.ShowOnlineEducation = false;\r\n vm.ModulesRequiringFinish = [];\r\n vm.OnlineEducationId = ~~$stateParams.id;\r\n vm.OnlineEducationFinished = false;\r\n\r\n bizContainerSettings.ContainerRefererType = \"HTML5\";\r\n bizContainerSettings.ContainerRefererObjectId = vm.OnlineEducationId; \r\n\r\n vm.GetOnlineEducation = GetOnlineEducation;\r\n\r\n function GetOnlineEducation() {\r\n if (vm.OnlineEducationId > 0) {\r\n $q.all([\r\n educationService.GetHTML5Education(vm.OnlineEducationId),\r\n educationService.GetHTML5EducationReply(vm.OnlineEducationId)\r\n ]).then(GetOnlineEducationSuccess, GetOnlineEducationError);\r\n }\r\n else {\r\n vm.OnlineEducationId = $stateParams.id;\r\n\r\n educationService.GetHTML5EducationByUrlRewrite(vm.OnlineEducationId).then(function(response) {\r\n vm.OnlineEducation = response.data; \r\n bizContainerSettings.ContainerRefererCreatedByUserId = vm.OnlineEducation.CreatedByUserId;\r\n\r\n vm.OnlineEducation.Container = new container(vm.OnlineEducation.Container);\r\n vm.OnlineEducation.Container.setModuleFinishHandler(ModuleFinishHandler);\r\n\r\n var modulesWithSettings = vm.OnlineEducation.Container.getModulesWithSettings();\r\n\r\n bizEngageService.HandleContainer(vm.OnlineEducation.Container, vm.OnlineEducation.Id, bizEngageService.Types.HTML5);\r\n \r\n educationService.GetHTML5EducationReply(vm.OnlineEducation.Id).then(function(reply) {\r\n replyService.OnlineEducationReply = reply.data;\r\n replyService.UserStatus = vm.OnlineEducation.UserStatus;\r\n\r\n if(replyService.UserStatus) {\r\n for (var i = 0; i < replyService.UserStatus.length; i++) {\r\n if (replyService.UserStatus[i].IsFinished === true) {\r\n var mod = modulesWithSettings.GetItemByValue('Id', replyService.UserStatus[i].ContainerModuleInstanceId);\r\n if (mod) {\r\n mod.IsFinished = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.ShowOnlineEducation = true;\r\n });\r\n });\r\n }\r\n\r\n function GetOnlineEducationError(err) {\r\n if(err.status == 401)\r\n vm.NoAccess = true;\r\n }\r\n\r\n function GetOnlineEducationSuccess(response) {\r\n vm.OnlineEducation = response[0].data; \r\n bizContainerSettings.ContainerRefererCreatedByUserId = vm.OnlineEducation.CreatedByUserId;\r\n\r\n replyService.OnlineEducationReply = response[1].data;\r\n replyService.UserStatus = vm.OnlineEducation.UserStatus;\r\n\r\n vm.OnlineEducation.Container = new container(vm.OnlineEducation.Container);\r\n vm.OnlineEducation.Container.setModuleFinishHandler(ModuleFinishHandler);\r\n\r\n var modulesWithSettings = vm.OnlineEducation.Container.getModulesWithSettings();\r\n for (var i = 0; i < replyService.UserStatus.length; i++) {\r\n if (replyService.UserStatus[i].IsFinished === true) {\r\n var mod = modulesWithSettings.GetItemByValue('Id', replyService.UserStatus[i].ContainerModuleInstanceId);\r\n if (mod) {\r\n mod.IsFinished = true;\r\n }\r\n\r\n }\r\n }\r\n\r\n vm.ShowOnlineEducation = true;\r\n\r\n bizEngageService.HandleContainer(vm.OnlineEducation.Container, vm.OnlineEducation.Id, bizEngageService.Types.HTML5);\r\n }\r\n }\r\n\r\n function ModuleFinishHandler(module) {\r\n educationService.HTML5ModuleInstanceFinished(replyService.OnlineEducationReply.Id, module.Id).then(ModuleInstanceFinishedSuccess);\r\n\r\n function ModuleInstanceFinishedSuccess(response) {\r\n \t$rootScope.$broadcast('QUESTION_MODULE_RESULT', { module: module, result: response.data });\r\n \tvar modules = vm.OnlineEducation.Container.getModulesWithSettings();\r\n \tvar unfinished = modules.GetItemsByValue(\"IsFinished\", false);\r\n if (unfinished.length == 0 && !vm.IsSubmitted) {\r\n educationService.SubmitHTML5Education(replyService.OnlineEducationReply.Id).then(SubmitEducationSuccess);\r\n vm.IsSubmitted = true;//prevent double submission when last module is within a segment, because both the last module and segment will trigger finish events\r\n }\r\n\r\n function SubmitEducationSuccess(response) {\r\n $rootScope.$broadcast('EDUCATION_FINISHED', response.data);\r\n if (response.data.Success) {\r\n $rootScope.$broadcast('EDUCATION_FINISHED_SUCCESS', response.data);\r\n vm.OnlineEducationFinished = true;\r\n //$timeout(vm.ShowForm, 2500);\r\n }\r\n else {\r\n $rootScope.$broadcast('EDUCATION_FINISHED_FAILED', response.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = function() {\r\n vm.GetOnlineEducation();\r\n\r\n bizEngageService.GetMiniJourneySetting('HTML5').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['EDUCATION.META.TITLE', 'EDUCATION.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['EDUCATION.META.TITLE'],\r\n description: translations['EDUCATION.META.DESCRIPTION']\r\n })\r\n });\r\n }); \r\n }\r\n\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.educationsList', bizEducationsListController);\r\n angular.module('bizPartEngage').controller('modules.educationsListModule', bizEducationsListModuleController);\r\n angular.module('bizPartEngage').directive('bizModuleEducationList', bizModuleEducationListDirective);\r\n angular.module('bizPartEngage').directive('bizEducationsList', bizEducationsListDirective);\r\n \r\n bizEducationsListDirective.$inject = [\"bizCore\"];\r\n bizModuleEducationListDirective.$inject = [\"bizCore\"];\r\n bizEducationsListController.$inject = [\"modules.education.service\", \"$state\", \"$stateParams\", \"container\", \"$filter\", \"$translate\", \"MetadataService\"];\r\n\r\n bizEducationsListModuleController.$inject = [\"$rootScope\", \"modules.education.service\", \"$translate\"];\r\n\r\n function bizEducationsListDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=?\"\r\n },\r\n templateUrl: bizCoreProvider.getView('core.directives.educationlist', 'FrontEnd/Modules/Education/Views/educationslistdirective.html'),\r\n controller: bizCoreProvider.getController('base.modules.educationsList', 'modules.educationsList'),\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n }\r\n\r\n function bizModuleEducationListDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=?\"\r\n },\r\n templateUrl: function (element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return bizCoreProvider.getView('core.directives.educationlist', 'FrontEnd/Modules/Education/Views/education-list.html');\r\n }\r\n },\r\n controller: bizCoreProvider.getController('base.modules.educationsListModule', 'modules.educationsListModule'),\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n }\r\n\r\n function bizEducationsListController(educationService, $state, $stateParams, container, $filter, $translate, MetadataService) {\r\n var vm = this;\r\n\r\n vm.DataLoaded = false;\r\n\r\n vm.TagId = ~~$stateParams.tagId;\r\n vm.TagSystemName = $stateParams.tagSystemName;\r\n\r\n vm.useJourneyOrder = journeySettings?.UseJourneyOrderInLists?.GetItemByValue('Key', 1)?.Value || false;\r\n\r\n \tvm.SCORMUserStatus = {\r\n \t\tNotStarted: 0,\r\n \t\tStarted: 1,\r\n \t\tPassed: 2,\r\n \t\tFailed: 3\r\n \t};\r\n\r\n var skipLoadContainer = true;\r\n\r\n\t\t//todo merge, same list?\r\n vm.HTML5Educations = [];\r\n vm.SCORMEducations = []; \r\n\r\n vm.GetAllEducationTypes = GetAllEducationTypes;\r\n vm.GetHTML5EducationsForLoggedInUser = GetHTML5EducationsForLoggedInUser;\r\n vm.GetSCORMEducations = GetSCORMEducations;\r\n vm.OpenHTML5Education = OpenHTML5Education;\r\n vm.HandleCategoryForEduction = HandleCategoryForEduction;\r\n\r\n vm.TagFilter = TagFilter;\r\n vm.GetTag = GetTag;\r\n\r\n function GetHTML5EducationsForLoggedInUser() {\r\n var tagIds = vm.TagId ? [vm.TagId] : undefined;\r\n\r\n if (tagIds !== undefined) {\r\n educationService.GetHTML5EducationsForLoggedInUserByTagId(tagIds, vm.useJourneyOrder).then(GetHTML5EducationsForLoggedInUserSuccess);\r\n }\r\n else {\r\n educationService.GetHTML5EducationsForLoggedInUser(skipLoadContainer, vm.useJourneyOrder).then(GetHTML5EducationsForLoggedInUserSuccess);\r\n }\r\n \r\n\r\n function GetHTML5EducationsForLoggedInUserSuccess(response) {\r\n var list = response.data;\r\n vm.Tags = [];\r\n vm.Categories = [];\r\n vm.HTML5Educations = [];\r\n\r\n for (var i = 0; i < list.length; i++) {\r\n var edu = list[i];\r\n if ((edu.Description == null || edu.Description == \"\") && skipLoadContainer == false) {\r\n edu.Container = new container(edu.Container);\r\n var modules = edu.Container.getModules(\"Text\");\r\n\r\n if (modules == null || modules.length <= 0) {\r\n modules = edu.Container.getModules(\"ImageText\");\r\n }\r\n\r\n if (modules != null && modules.length > 0) {\r\n edu.Description = $filter('bizPlaceholders')(modules[0].Content.Text);\r\n }\r\n }\r\n\r\n if (vm.HandleCategoryForEduction(edu)) {\r\n \r\n } else {\r\n vm.HTML5Educations.push(edu);\r\n }\r\n\r\n if (!edu.Tags || !edu.Tags.length)\r\n continue;\r\n\r\n for (var j = 0; j < edu.Tags.length; j++) {\r\n if (!vm.Tags.GetItemByValue(\"Id\", edu.Tags[j].Id))\r\n vm.Tags.push(edu.Tags[j]);\r\n }\r\n } \r\n\r\n vm.DataLoaded = true;\r\n }\r\n }\r\n\r\n function HandleCategoryForEduction(edu) {\r\n if (!edu.GenericCategories || !edu.GenericCategories.length)\r\n return false;\r\n\r\n for (var i = 0; i < edu.GenericCategories.length; i++) {\r\n var category = vm.Categories.GetItemByValue('Id', edu.GenericCategories[i].Id);\r\n if (!category) {\r\n category = edu.GenericCategories[i];\r\n category.Entries = [];\r\n category.Selected = edu;\r\n category.IsCategory = true;\r\n vm.Categories.push(category);\r\n vm.HTML5Educations.push(category);\r\n }\r\n category.Entries.push(edu);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function GetTag(callback) {\r\n if (vm.TagSystemName || vm.TagId) {\r\n if (vm.TagSystemName) {\r\n educationService.GetTagBySystemName(vm.TagSystemName).then(GetTagSuccess);\r\n } else {\r\n educationService.GetTag(vm.TagId).then(GetTagSuccess);\r\n }\r\n\r\n function GetTagSuccess(response) {\r\n vm.SelectedTag = vm.TagSystemName ? response.data : response.data[0];\r\n vm.TagId = vm.SelectedTag.Id;\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n else {\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n function TagFilter(tagId) {\r\n \treturn function (item) {\r\n \t\treturn item.Tags && item.Tags.GetItemByValue('Id', tagId);\r\n \t}\r\n }\r\n\r\n function GetSCORMEducations() {\r\n \teducationService.GetSCORMEducations().then(GetSCORMEducationsSuccess);\r\n\r\n \tfunction GetSCORMEducationsSuccess(response) {\r\n \t\tvm.SCORMEducations = BizPartCoreHelpers.getResponseValue(response, []);\r\n \t\tfor (var i = 0; i < vm.SCORMEducations.length; i++) {\r\n \t\t\tvar edu = vm.SCORMEducations[i];\r\n edu.UserHasPassed = edu.Status == vm.SCORMUserStatus.Passed;\r\n \t\t\tedu.Url = siteRootPath + 'scorm/' + edu.Id;\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function OpenHTML5Education(education) {\r\n $state.go('base.modules.html5education', {id: education.Id});\r\n }\r\n\r\n function GetAllEducationTypes() {\r\n vm.GetHTML5EducationsForLoggedInUser();\r\n vm.GetSCORMEducations(); \r\n }\r\n\r\n vm.$onInit = function () {\r\n vm.GetTag(GetAllEducationTypes);\r\n }\r\n }\r\n\r\n function bizEducationsListModuleController($rootScope, educationService, $translate) {\r\n var vm = this;\r\n vm.HTML5Educations = [];\r\n \r\n\r\n vm.Init = Init;\r\n\r\n function Init() {\r\n if(!vm.settings.Filter && vm.settings.SelectedFilter) vm.settings.Filter = vm.settings.SelectedFilter.Value;\r\n if(!vm.settings.Limit && vm.settings.SelectedLimit) vm.settings.Limit = vm.settings.SelectedLimit.Value;\r\n\r\n if(vm.settings.Filter == 'newest') {\r\n educationService.GetHTML5EducationsForLoggedInUser().then(GetEducationsSuccess);\r\n }\r\n else if(vm.settings.Filter == 'journey') {\r\n if($rootScope.FavoriteTagIds.length > 0) {\r\n educationService.GetHTML5EducationsForLoggedInUserByTagId($rootScope.FavoriteTagIds, true).then(GetEducationsSuccess);\r\n }\r\n else {\r\n educationService.GetHTML5EducationsForLoggedInUser(false, true).then(GetEducationsSuccess);\r\n }\r\n }\r\n\r\n function GetEducationsSuccess(response) {\r\n vm.HTML5Educations = response.data;\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n vm.$onInit();\r\n }\r\n }\r\n\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').service('modules.education.service', educationService);\r\n //THIS FOR BACKWORDS COMPABILITY\r\n angular.module('bizPartEngage').service('BizOnlineEducationReplyService', educationService);\r\n //angular.module('bizPartEngage').service('modules.education.service.reply', [replyService]);\r\n //THIS FOR BACKWORDS COMPABILITY\r\n angular.module('bizPartEngage').service('BizOnlineEducationReplyService', [replyService]);\r\n\r\n educationService.$inject = [\"$http\"];\r\n\r\n function educationService($http) {\r\n this.GetCompletedCount = function() {\r\n return $http.get(siteRootPath + 'api/education/GetCompletedCount');\r\n };\r\n\r\n this.GetHTML5EducationsForLoggedInUser = function (skipLoadContainer, journeyOrder) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5EducationsForLoggedInUser?' + $.param({ skipLoadContainer: skipLoadContainer === undefined ? false : true, journeyOrder: journeyOrder || false }));\r\n };\r\n\r\n this.GetHTML5EducationsForLoggedInUserByTagId = function (id, journeyOrder) {\r\n return $http.get(siteRootPath + \"api/education/GetHTML5EducationsForLoggedInUserByTagId?\" + $.param({ tagIds: id, journeyOrder: journeyOrder || false }));\r\n }\r\n\r\n this.GetSCORMEducations = function () {\r\n \treturn $http.get(siteRootPath + 'api/scormuser/GetEducations');\r\n };\r\n\r\n this.GetHTML5Education = function(id) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5Education?' + $.param({ id: id }));\r\n };\r\n\r\n this.GetHTML5EducationByUrlRewrite = function(urlRewrite) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5EducationByUrlRewrite?' + $.param({ urlRewrite: urlRewrite }));\r\n };\r\n\r\n this.GetHTML5EducationReply = function(educationId) {\r\n return $http.get(siteRootPath + 'api/education/GetHTML5EducationReply?' + $.param({ educationId: educationId }));\r\n };\r\n\r\n this.HTML5ModuleInstanceFinished = function (replyId, containerModuleInstanceId) {\r\n return $http.post(siteRootPath + 'api/education/HTML5ModuleInstanceFinished?' + $.param({ containerModuleInstanceId: containerModuleInstanceId}), replyId);\r\n };\r\n\r\n this.SubmitHTML5Education = function (replyId) {\r\n return $http.post(siteRootPath + 'api/education/SubmitHTML5Education', replyId);\r\n };\r\n\r\n this.GetTag = function (id) {\r\n return $http.get(siteRootPath + \"api/generictag/getTags?\" + $.param({ tagIds: id }));\r\n }\r\n\r\n this.GetTagBySystemName = function (systemName) {\r\n return $http.get(siteRootPath + \"api/generictag/getTagBySystemName?\" + $.param({ tagSystemName: systemName }));\r\n }\r\n }\r\n\r\n function replyService() {\r\n this.OnlineEducationReply = {};\r\n }\r\n})(window.angular);\r\n","(function () { \r\n angular.module('bizPartEngage').directive('bizDeactivateGoal', bizDeactivateGoalDirective);\r\n \r\n bizDeactivateGoalDirective.$inject = [\"bizCore\"];\r\n\r\n function bizDeactivateGoalDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n goal: '=',\r\n cancel: '&?',\r\n postInactivateAction: '&?',\r\n deleteMode: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/deactivateGoal.html'),\r\n bindToController: true,\r\n controller: bizDeactivateGoalController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizDeactivateGoalController.$inject = [\"modules.goals.service\"];\r\n\r\n return directive;\r\n\r\n function bizDeactivateGoalController(engagementGoalsService) {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n vm.Cancel = Cancel;\r\n vm.Inactivate = Inactivate;\r\n vm.SelectGoal = SelectGoal; \r\n vm.FilterGoals = FilterGoals;\r\n\r\n function Cancel() {\r\n if (vm.cancel) {\r\n vm.cancel();\r\n }\r\n }\r\n\r\n function SelectGoal(goal) {\r\n if (goal.selected) {\r\n goal.selected = false;\r\n } else {\r\n for (var i = 0; i < vm.MoveToGoalList.length; i++) {\r\n if (vm.MoveToGoalList[i].selected) {\r\n vm.MoveToGoalList[i].selected = false;\r\n }\r\n }\r\n goal.selected = true;\r\n }\r\n } \r\n\r\n function Inactivate() {\r\n\r\n var goalIdToMoveTo = -1;\r\n for (var i = 0; i < vm.MoveToGoalList.length; i++) {\r\n if (vm.MoveToGoalList[i].selected) {\r\n goalIdToMoveTo = vm.MoveToGoalList[i].Id;\r\n }\r\n }\r\n\r\n engagementGoalsService.InactivateGoal(vm.goal.Id, goalIdToMoveTo, vm.deleteMode).then(InactivateGoalCallback);\r\n\r\n function InactivateGoalCallback(response) {\r\n if (vm.postInactivateAction) {\r\n vm.postInactivateAction();\r\n }\r\n }\r\n }\r\n\r\n function FilterGoals() {\r\n return function (goal) {\r\n return goal.Id !== vm.goal.Id && goal.ParentGoalId > 0;\r\n }\r\n }\r\n\r\n function Init() {\r\n engagementGoalsService.GetGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n vm.MoveToGoalList = BizPartCoreHelpers.getResponseValue(response, []);\r\n if (vm.goal.ParentGoalId <= 0) {\r\n vm.ChildGoals = vm.MoveToGoalList.GetItemsByValue('ParentGoalId', vm.goal.Id);\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n\r\n}());","(function () {\r\n angular.module('bizPartEngage').directive('bizManagerGoals', bizManagerGoalsDirective);\r\n\r\n bizManagerGoalsDirective.$inject = [\"bizCore\"];\r\n\r\n function bizManagerGoalsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/managerGoals.html'),\r\n bindToController: true,\r\n controller: bizManagerGoalsController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizManagerGoalsController.$inject = [\"modules.goals.service\", \"$state\", \"$rootScope\", \"$mdToast\", \"$mdDialog\", \"bizCoreService\", \"core.unit.service\", \"$q\"];\r\n\r\n return directive;\r\n\r\n function bizManagerGoalsController(engagementGoalsService, $state, $rootScope, $mdToast, $mdDialog, bizCoreService, unitService, $q) {\r\n var vm = this;\r\n vm.Statuses = [{ Id: 1, Text: 'Positiv' }, { Id: 2, Text: 'Neutral' }, { Id: 3, Text: 'Negativ' }];\r\n vm.ManagerGoals = [];\r\n\r\n vm.GetGoals = GetGoals;\r\n vm.Init = Init;\r\n vm.GotoToGoal = GotoToGoal;\r\n vm.OpenEdit = OpenEdit;\r\n\r\n function OpenEdit() {\r\n\r\n $q.all(\r\n [\r\n engagementGoalsService.GetGoals(false),\r\n unitService.GetUsersInUnit($rootScope.LoggedInUser.Units[0].Id)\r\n ]).then(LoadDataDone);\r\n\r\n function LoadDataDone(response) {\r\n var managerGoals = response[0].data;\r\n var usersInUnit = response[1].data;\r\n \r\n vm.ManagerGoals = [];\r\n for (var i = 0; i < managerGoals.length; i++) {\r\n if (managerGoals[i].ParentGoalId > 0) {\r\n vm.ManagerGoals.push(managerGoals[i]);\r\n }\r\n }\r\n\r\n vm.Users = [];\r\n for (var i = 0; i < usersInUnit.length; i++) {\r\n if (usersInUnit[i].Id != $rootScope.LoggedInUser.Id) {\r\n vm.Users.push(usersInUnit[i]);\r\n }\r\n }\r\n\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Modules/EngagementGoals/Views/Directives/mangagerGoalsEdit.html\",\r\n controller: EditDialogController,\r\n controllerAs: \"vm\",\r\n bindToController: true,\r\n locals: {\r\n Statuses: vm.Statuses,\r\n GoalSettings: vm.GoalSettings,\r\n ManagerGoals: vm.ManagerGoals,\r\n Users: vm.Users\r\n }\r\n }).then(EditClose);\r\n }\r\n\r\n function EditClose(data) {\r\n if (data) {\r\n vm.GoalSettings = data;\r\n }\r\n }\r\n\r\n EditDialogController.$inject = [\"$mdDialog\", \"bizCoreService\"];\r\n\r\n function EditDialogController($mdDialog, bizCoreService) {\r\n var vm = this;\r\n\r\n vm.Save = Save;\r\n vm.Cancel = Cancel;\r\n vm.AddGoal = AddGoal;\r\n vm.Remove = Remove;\r\n vm.GetStatusName = GetStatusName;\r\n vm.UserSelected = UserSelected;\r\n\r\n function UserSelected() {\r\n vm.UserGoals = [];\r\n\r\n if (vm.SelectedUser && vm.SelectedUser.Id > 0) {\r\n engagementGoalsService.GetGoals(false, null, null, vm.SelectedUser.Id).then(DataCallback);\r\n\r\n function DataCallback(response) {\r\n var userGoals = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n for (var i = 0; i < userGoals.length; i++) {\r\n if (userGoals[i].ParentGoalId > 0) {\r\n vm.UserGoals.push(userGoals[i]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function Save() {\r\n engagementGoalsService.SaveManagerGoals(vm.GoalSettings).then(SaveCallback);\r\n\r\n function SaveCallback(response) {\r\n var goalSettings = BizPartCoreHelpers.getResponseValue(response, []);\r\n $mdDialog.hide(vm.GoalSettings);\r\n }\r\n }\r\n\r\n function Cancel() {\r\n $mdDialog.hide();\r\n }\r\n\r\n function AddGoal(isManagerGoal) {\r\n var data = {\r\n Id: isManagerGoal ? vm.SelectedGoal.Id : vm.SelectedUserGoal.Id,\r\n Goal: isManagerGoal ? vm.SelectedGoal : vm.SelectedUserGoal,\r\n Status: vm.SelectedStatus.Id,\r\n IsManagerGoal: isManagerGoal ? true : false,\r\n ShowIcon: isManagerGoal ? true : false,\r\n Comment: ''\r\n }\r\n\r\n vm.GoalSettings.Goals.push(data);\r\n }\r\n\r\n function Remove(id, isManagerGoal) {\r\n if (id > 0) {\r\n for (var i = 0; i < vm.GoalSettings.Goals.length; i++) {\r\n if (id == vm.GoalSettings.Goals[i].Id && (isManagerGoal && vm.GoalSettings.Goals[i].IsManagerGoal || isManagerGoal == false && vm.GoalSettings.Goals[i].IsManagerGoal == false)) {\r\n vm.GoalSettings.Goals.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function GetStatusName(id) {\r\n if (id > 0) {\r\n return vm.Statuses[id - 1].Text;\r\n }\r\n\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function GotoToGoal(goal) {\r\n $state.go(\"base.modules.goals.onegoal\", { id: goal.Id });\r\n }\r\n\r\n function GetGoals() {\r\n engagementGoalsService.GetManagerGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n vm.GoalSettings = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n if (!vm.GoalSettings.ManagerGoalOverrideHeader || vm.GoalSettings.ManagerGoalOverrideHeader.length == 0)\r\n vm.GoalSettings.ManagerGoalOverrideHeader = 'Företagsmål'\r\n\r\n if (!vm.GoalSettings.GoalOverrideHeader || vm.GoalSettings.GoalOverrideHeader.length == 0)\r\n vm.GoalSettings.GoalOverrideHeader = 'Individuella mål'\r\n }\r\n }\r\n\r\n function Init() {\r\n if (vm.GoalSettings === undefined) {\r\n vm.GetGoals();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n\r\n}());","(function () {\r\n angular.module('bizPartEngage').directive('bizMyGoals', bizMyGoalsDirective); \r\n\r\n bizMyGoalsDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizMyGoalsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n showActiveFilter: '@?',\r\n goalFilter: '@?',\r\n hideActivities: '@?',\r\n hideEdit: '@?',\r\n hideTasks: '@?',\r\n selectedGoal: '=?',\r\n Goals: '=?goals',\r\n editProgress: '@?',\r\n parentId: '=?',\r\n rootGoals: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/myGoals.html'),\r\n bindToController: true,\r\n controller: bizMyGoalsController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizMyGoalsController.$inject = [\"modules.goals.service\", \"$state\", \"$rootScope\", \"$mdToast\"];\r\n\r\n return directive;\r\n\r\n function bizMyGoalsController(engagementGoalsService, $state, $rootScope, $mdToast) {\r\n var vm = this;\r\n\r\n vm.ActiveStatus = [\r\n {\r\n Name: 'Aktiva',\r\n Active: true,\r\n Icon: \"fas fa-check-square\"\r\n },\r\n {\r\n Name: 'Inaktiva',\r\n Active: false,\r\n Icon: \"fas fa-times-square\"\r\n }\r\n ];\r\n\r\n vm.ProgressObjectTypes = {\r\n Goal: 200,\r\n Activity: 201,\r\n Task: 202, \r\n };\r\n\r\n vm.GetGoals = GetGoals;\r\n vm.FilterGoals = FilterGoals;\r\n vm.CompleteToDo = CompleteToDo;\r\n vm.Init = Init;\r\n vm.GotoToGoal = GotoToGoal;\r\n vm.GotoActivity = GotoActivity;\r\n vm.IsExpired = IsExpired; \r\n vm.SaveProgress = SaveProgress;\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n }\r\n\r\n function GotoToGoal(goal) {\r\n $state.go(\"base.modules.goals.onegoal\", { id: goal.Id });\r\n }\r\n\r\n function GotoActivity(activity) {\r\n $state.go(\"base.modules.goals.activity\", { id: activity.Id });\r\n }\r\n\r\n function FilterGoals() {\r\n return function (goal) {\r\n if (vm.rootGoals) {\r\n return goal.ParentGoalId <= 0;\r\n } else if (goal.ParentGoalId <= 0) { \r\n return false;\r\n } else if (vm.parentId > 0) {\r\n return vm.parentId === goal.ParentGoalId;\r\n } else if (vm.goalFilter && ~~vm.goalFilter > 0) {\r\n return ~~vm.goalFilter === goal.Id;\r\n } else {\r\n return vm.SelectedActiveStatus.Active === goal.IsActive;\r\n }\r\n }\r\n }\r\n\r\n function GetGoals() {\r\n if (vm.parentId) { \r\n engagementGoalsService.GetChildGoals(vm.parentId).then(GetGoalsCallback);\r\n } else {\r\n engagementGoalsService.GetGoals(true).then(GetGoalsCallback); \r\n }\r\n \r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n for (var i = 0; i < goals.length; i++) {\r\n goals[i].ReportProgress = goals[i].ProgressSum;\r\n for (var j = 0; j < goals[i].Activities.length; j++) { \r\n var act = goals[i].Activities[j];\r\n act.ReportProgress = act.ProgressSum;\r\n\r\n for (var k = 0; k < act.ToDoList.length; k++) {\r\n var tsk = act.ToDoList[k];\r\n tsk.ReportProgress = tsk.ProgressSum;\r\n }\r\n }\r\n }\r\n vm.Goals = goals; \r\n }\r\n }\r\n\r\n function CompleteToDo(todo, act) {\r\n engagementGoalsService.CompleteTask(todo).then(CompleteToDoCallback);\r\n\r\n function CompleteToDoCallback(response) {\r\n var index = act.ToDoList.indexOf(todo);\r\n act.ToDoList.splice(index, 1);\r\n }\r\n } \r\n\r\n function SaveProgress(object, objectType) {\r\n //Remove spaces to make it a valit integer.\r\n var rp = ~~object.ReportProgress.replace(/\\s/g, '');\r\n var pList = [];\r\n if (object.ProgressSum !== rp) {\r\n var diff = rp - object.ProgressSum;\r\n pList.push({\r\n LinkedObjectType: objectType,\r\n LinkedObjectId: object.Id,\r\n Value: diff,\r\n DateLocal: moment()\r\n });\r\n\r\n engagementGoalsService.CreateProgress(pList).then(CreateProgressCallback);\r\n }\r\n\r\n function CreateProgressCallback(response) {\r\n object.ProgressSum = ~~object.ReportProgress.replace(/\\s/g, '');\r\n\r\n object.Saved = true;\r\n\r\n $rootScope.$broadcast('GOALPROGRESSUPDATED');\r\n\r\n if($rootScope.mobile) {\r\n $mdToast.show({\r\n parent: $(\".bizpart-engage\"),\r\n template: \"

Sparat!

\",\r\n autoWrap: true\r\n });\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.SelectedActiveStatus = vm.ActiveStatus[0];\r\n if(vm.Goals === undefined) {\r\n vm.GetGoals();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n $rootScope.$on('GOAL_NEW_DATE_SELECTED', function () {\r\n vm.GetGoals();\r\n });\r\n\r\n $rootScope.$on('GOALACTIVITYCREATED', function (event, activity) { \r\n var goal = vm.Goals.GetItemByValue('Id', activity.GoalId);\r\n if (goal) {\r\n activity.ReportProgress = 0;\r\n goal.Activities.push(activity); \r\n } \r\n });\r\n\r\n $rootScope.$on('GOALCREATED', function (event, goal) {\r\n vm.Goals.push(goal);\r\n goal.ReportProgress = 0; \r\n });\r\n }\r\n } \r\n\r\n}());","(function () {\r\n angular.module('bizPartEngage').directive('bizMyRootGoals', bizMyRootGoalsDirective);\r\n\r\n bizMyRootGoalsDirective.$inject = [\"bizCore\"];\r\n\r\n function bizMyRootGoalsDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: { \r\n Goals: '=?goals' \r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyRootGoalsDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/myRootGoals.html'),\r\n bindToController: true,\r\n controller: bizMyRootGoalsDirectiveController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizMyRootGoalsDirectiveController.$inject = [\"modules.goals.service\", \"$state\", \"$rootScope\", \"$filter\"];\r\n\r\n return directive;\r\n\r\n function bizMyRootGoalsDirectiveController(engagementGoalsService, $state, $rootScope, $filter) {\r\n var vm = this; \r\n\r\n vm.GetGoals = GetGoals; \r\n vm.Init = Init;\r\n vm.GotoToGoal = GotoToGoal; \r\n\r\n function GotoToGoal(goal) {\r\n $state.go(\"base.modules.goals.onegoal\", { id: goal.Id });\r\n } \r\n\r\n function GetGoals() {\r\n engagementGoalsService.GetGoals(true).then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.Goals = $filter('filter')(goals, { ParentGoalId: -1 });\r\n }\r\n }\r\n \r\n function Init() { \r\n if (vm.Goals === undefined) {\r\n vm.GetGoals();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n $rootScope.$on('GOAL_NEW_DATE_SELECTED', function () {\r\n vm.GetGoals();\r\n });\r\n \r\n\r\n $rootScope.$on('GOALCREATED', function (event, goal) {\r\n if (goal.ParentGoalId <= 0) {\r\n vm.Goals.push(goal);\r\n }\r\n });\r\n }\r\n }\r\n\r\n}());","(function () { \r\n angular.module('bizPartEngage').directive('bizMyTasks', bizMyTasksDirective); \r\n\r\n bizMyTasksDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizMyTasksDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n activity: '=?',\r\n includeCompleted: '@?',\r\n showFilter: '@?',\r\n ignoreTaskId: '@?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizMyTasksDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/myTasks.html'),\r\n controller: bizMyTasksController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n bizMyTasksController.$inject = [\"$scope\", \"modules.goals.service\", \"$state\"];\r\n\r\n return directive;\r\n\r\n function bizMyTasksController($scope, engagementGoalsService, $state) {\r\n var vm = this;\r\n vm.OrderBy = ['Status', 'Deadline'];\r\n vm.OrderDesc = false;\r\n\r\n vm.ChangeOrderBy = ChangeOrderBy;\r\n vm.SetCurrentFilterMode = SetCurrentFilterMode;\r\n\r\n function ChangeOrderBy(order, desc) {\r\n switch(order) {\r\n case 'Task':\r\n if(vm.OrderBy == 'Text' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'Text';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break;\r\n case 'Activity':\r\n if(vm.OrderBy == 'LinkedObject.Text' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'LinkedObject.Text';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break;\r\n case 'Goal':\r\n if(vm.OrderBy == 'LinkedObject.GoalName' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'LinkedObject.GoalName';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break; \r\n case 'Deadline':\r\n if(vm.OrderBy == 'DateLocal' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = 'DateLocal';\r\n vm.OrderDesc = desc || false;\r\n }\r\n break; \r\n case 'Status':\r\n if(vm.OrderBy[0] == 'Status' && vm.OrderBy[1] == 'Deadline' && desc === undefined) {\r\n vm.OrderDesc = !vm.OrderDesc;\r\n }\r\n else {\r\n vm.OrderBy = ['Status', 'Deadline'];\r\n vm.OrderDesc = desc || false;\r\n }\r\n break; \r\n }\r\n }\r\n\r\n vm.FilterMode = {\r\n All: { \r\n Match: function (task) { \r\n return ~~vm.ignoreTaskId !== task.Id;\r\n }\r\n },\r\n Upcoming: { \r\n Match: function (task) {\r\n return ~~vm.ignoreTaskId !== task.Id && !IsExpired(task) && !task.IsCompleted;\r\n }\r\n },\r\n Expired: { \r\n Match: function (task) {\r\n return ~~vm.ignoreTaskId !== task.Id && IsExpired(task);\r\n }\r\n },\r\n Completed: { \r\n Match: function (task) {\r\n return ~~vm.ignoreTaskId !== task.Id && task.IsCompleted;\r\n }\r\n }\r\n };\r\n\r\n function SetCurrentFilterMode(mode) {\r\n vm.CurrentFilterMode = vm.FilterMode[mode];\r\n setLocalStorage('myTaskFilterMode', mode);\r\n }\r\n\r\n vm.CurrentFilterMode = vm.FilterMode.All;\r\n\r\n vm.GetTasks = GetTasks;\r\n vm.CompleteToDo = CompleteToDo;\r\n vm.Init = Init;\r\n vm.GotoTask = GotoTask;\r\n vm.IsExpired = IsExpired; \r\n vm.FilterTasks = FilterTasks;\r\n vm.GetTaskCount = GetTaskCount;\r\n vm.AddTaskStatus = AddTaskStatus;\r\n\r\n function FilterTasks() {\r\n return function (tsk) {\r\n return vm.CurrentFilterMode.Match(tsk); \r\n }\r\n }\r\n\r\n function GetTaskCount(filterMode) {\r\n var count = 0;\r\n if (!vm.tasks) {\r\n return count;\r\n }\r\n for (var i = 0; i < vm.tasks.length; i++) {\r\n if (filterMode.Match(vm.tasks[i])) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n\r\n function GotoTask(task) {\r\n $state.go(\"base.modules.goals.tasks\", { id: task.Id });\r\n }\r\n\r\n function GetTasks() {\r\n var inclCompleted = vm.includeCompleted === 'true';\r\n engagementGoalsService.GetTasks(inclCompleted).then(GetTasksCallback);\r\n\r\n function GetTasksCallback(response) {\r\n if (!vm.tasks) {\r\n var tasks = BizPartCoreHelpers.getResponseValue(response, []);\r\n vm.tasks = tasks;\r\n\r\n vm.AddTaskStatus(vm.tasks);\r\n\r\n console.log(vm.tasks);\r\n }\r\n }\r\n }\r\n\r\n function AddTaskStatus(tasks) {\r\n // 30 = Completed, 20 = Upcomming, 10 = Too late\r\n\r\n for(var i = 0; i < tasks.length; i++) {\r\n if(tasks[i].IsCompleted) {\r\n tasks[i].Status = 30;\r\n }\r\n else if(vm.IsExpired(tasks[i])) {\r\n tasks[i].Status = 10;\r\n }\r\n else if(!vm.IsExpired(tasks[i]) && !tasks[i].IsCompleted) {\r\n tasks[i].Status = 20;\r\n }\r\n }\r\n }\r\n\r\n function CompleteToDo(todo) {\r\n if (!todo.IsCompleted) {\r\n engagementGoalsService.CompleteTask(todo).then(CompleteToDoCallback);\r\n }\r\n\r\n function CompleteToDoCallback(response) {\r\n var index = vm.tasks.indexOf(todo);\r\n if (vm.includeCompleted === 'true') {\r\n todo.IsCompleted = true;\r\n todo.Status = 30;\r\n } else {\r\n vm.tasks.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n } \r\n\r\n function Init() {\r\n var currentFilterMode = getLocalStorage('myTaskFilterMode');\r\n if(currentFilterMode) {\r\n vm.CurrentFilterMode = vm.FilterMode[currentFilterMode];\r\n }\r\n\r\n if (vm.activity && vm.activity.ToDoList) {\r\n vm.tasks = vm.activity.ToDoList;\r\n vm.AddTaskStatus(vm.tasks);\r\n } else {\r\n vm.GetTasks();\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n $scope.$watch(\"vm.activity\", function () {\r\n if (vm.activity && vm.activity.ToDoList) {\r\n vm.tasks = vm.activity.ToDoList;\r\n }\r\n });\r\n }\r\n }\r\n\r\n}());","(function () { \r\n angular.module('bizPartEngage').directive('bizOneGoalActivity', bizOneGoalActivityDirective);\r\n \r\n bizOneGoalActivityDirective.$inject = [\"bizCore\"]; \r\n\r\n function bizOneGoalActivityDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n activity: '='\r\n },\r\n templateUrl: bizCoreProvider.getView('bizOneGoalActivityDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/oneActivity.html'),\r\n bindToController: true,\r\n controller: bizOneGoalActivityController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizOneGoalActivityController.$inject = [\"modules.goals.service\", \"$scope\", \"$q\", \"$mdToast\", \"$timeout\", \"bizValidationService\", \"$rootScope\", \"$mdDialog\", \"$state\"];\r\n\r\n return directive;\r\n\r\n function bizOneGoalActivityController(engagementGoalsService, $scope, $q, $mdToast, $timeout, bizValidationService, $rootScope, $mdDialog, $state) {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n vm.GetGoalTypes = GetGoalTypes;\r\n vm.GetGoals = GetGoals;\r\n vm.Save = Save;\r\n vm.SetActivityLoaded = SetActivityLoaded;\r\n\r\n vm.activityIsLoadedDefer = $q.defer();\r\n vm.activityIsLoaded = vm.activityIsLoadedDefer.promise;\r\n vm.Back = Back;\r\n vm.DeleteActivity = DeleteActivity;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GetGoals() {\r\n var pGetGoals = engagementGoalsService.GetGoals();\r\n $q.all([pGetGoals, vm.activityIsLoaded]).then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(result) {\r\n var goals = BizPartCoreHelpers.getResponseValue(result[0], []); \r\n goals = goals.filter(g => g.ParentGoalId > 0);\r\n var activityGoal;\r\n\r\n for (var i = 0; i < goals.length; i++) {\r\n if (goals[i].Id == vm.activity.GoalId) { \r\n activityGoal = goals[i];\r\n } \r\n }\r\n\r\n if (activityGoal) {\r\n vm.SelectedGoal = activityGoal;\r\n }\r\n else if (goals.length) {\r\n //vm.SelectedGoal = goals[0];\r\n }\r\n \r\n vm.Goals = goals;\r\n }\r\n }\r\n\r\n function Save() {\r\n if (vm.MyForm && !bizValidationService.FormValid(vm.MyForm))\r\n \t\t return;\r\n\r\n vm.activity.DateLocal = moment(vm.activity.DateLocalDate);\r\n vm.activity.GoalId = vm.SelectedGoal.Id;\r\n vm.activity.GoalTypeId = vm.SelectedType ? vm.SelectedType.Id : 0;\r\n var saveData = {\r\n Activity: vm.activity,\r\n Comment: vm.NewComment\r\n };\r\n if (saveData.Activity.GoalValue && typeof saveData.Activity.GoalValue !== \"number\")\r\n saveData.Activity.GoalValue = ~~saveData.Activity.GoalValue.replace(/\\s/g, '');\r\n\r\n if (saveData.Activity.GoalValue && saveData.Activity.GoalValue <= 0) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Nyckelområdets tal måste vara större än 0')\r\n .position('bottom right')\r\n );\r\n return;\r\n }\r\n\r\n engagementGoalsService.CreateUpdateActivity(saveData).then(SaveActivityCallback);\r\n\r\n function SaveActivityCallback(response) {\r\n var newCreated = vm.activity.Id <= 0;\r\n var activity = BizPartCoreHelpers.getResponseValue(response); \r\n vm.NewComment = undefined; \r\n if (newCreated) {\r\n vm.activity = {\r\n Id: 0,\r\n GoalId: activity.GoalId,\r\n GoalValue: activity.GoalValue,\r\n GoalTypeId: vm.SelectedType ? vm.SelectedType.Id : 0,\r\n DateLocalDate: moment(activity.DateLocal).format('YYYY-MM-DD'),\r\n };\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Nyckelområde sparat, lägg till ännu fler om du vill!')\r\n .position('bottom right')\r\n ); \r\n \r\n $rootScope.$broadcast('GOALACTIVITYCREATED', activity);\r\n } else {\r\n vm.activity = activity;\r\n vm.activity.DateLocalDate = moment(vm.activity.DateLocal).format('YYYY-MM-DD');\r\n vm.EditMode = false;\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Nyckelområde sparat')\r\n .position('bottom right')\r\n ); \r\n } \r\n\r\n //$timeout(function () {\r\n // vm.Back();\r\n //}, 1000);\r\n } \r\n }\r\n\r\n function GetGoalTypes() {\r\n engagementGoalsService.GetGoalTypes().then(GetGoalTypesCallback);\r\n\r\n function GetGoalTypesCallback(response) {\r\n vm.GoalTypes = BizPartCoreHelpers.getResponseValue(response, []); \r\n\r\n $q.when(vm.activityIsLoaded).then(function () {\r\n if (vm.activity.GoalTypeId) {\r\n vm.SelectedType = vm.GoalTypes.GetItemByValue('Id', vm.activity.GoalTypeId);\r\n }\r\n });\r\n }\r\n }\r\n\r\n function DeleteActivity() {\r\n var confirm = $mdDialog.confirm()\r\n .title('Radera')\r\n .textContent('Är du säker på att du vill radera detta \"nyckelområde\"?')\r\n .ok('Ja')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n engagementGoalsService.DeleteActivity(vm.activity.Id).then(function (response) {\r\n $state.go('base.modules.goals.engagementgoals');\r\n }); \r\n }, function () {\r\n \r\n });\r\n }\r\n\r\n function Init() {\r\n vm.GetGoalTypes();\r\n\r\n if (vm.activity) {\r\n var period = engagementGoalsService.GetSelectedPeriod();\r\n if (vm.activity.Id === 0) {\r\n vm.activity.Text = ''\r\n vm.EditMode = true;\r\n vm.activity.DateLocal = period.IsCurrentPeriod ? BizPartCoreHelpers.getDateNow() : period.EndDate;\r\n }\r\n vm.SetActivityLoaded();\r\n }\r\n\r\n vm.GetGoals();\r\n }\r\n\r\n function SetActivityLoaded() {\r\n vm.activity.DateLocalDate = moment(vm.activity.DateLocal).format('YYYY-MM-DD');\r\n vm.activityIsLoadedDefer.resolve('');\r\n vm.unbindActivityWatch();\r\n }\r\n\r\n $scope.$watch(\"vm.SelectedGoal\", function () {\r\n if (vm.SelectedGoal && ~~vm.activity.Id <= 0) { \r\n vm.activity.DateLocalDate = moment(vm.SelectedGoal.DateToLocal).format('YYYY-MM-DD');\r\n }\r\n });\r\n\r\n vm.unbindActivityWatch = $scope.$watch(\"vm.activity\", function () {\r\n if (vm.activity !== undefined) {\r\n vm.SetActivityLoaded();\r\n }\r\n });\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n\r\n}());","(function () { \r\n angular.module('bizPartEngage').directive('bizOneGoal', bizOneGoalDirective); \r\n \r\n bizOneGoalDirective.$inject = [\"bizCore\"];\r\n\r\n function bizOneGoalDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n goalId: '=',\r\n isRoot: '=?'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizOneGoalDirective', 'FrontEnd/Modules/EngagementGoals/Views/Directives/oneGoal.html'),\r\n bindToController: true,\r\n controller: bizOneGoalController,\r\n controllerAs: 'vm',\r\n };\r\n\r\n bizOneGoalController.$inject = [\"modules.goals.service\", \"$mdDialog\", \"$scope\", \"$mdToast\", \"$timeout\", \"bizValidationService\", \"$state\", \"$q\", \"$rootScope\", \"$filter\", \"bizMediabankService\"];\r\n\r\n function bizOneGoalController(engagementGoalsService, $mdDialog, $scope, $mdToast, $timeout, bizValidationService, $state, $q, $rootScope, $filter, bizMediabankService) {\r\n var vm = this;\r\n\r\n vm.DefaultNewProgressSteps = 5;\r\n vm.NewProgressSteps = 5;\r\n\r\n vm.EditDate = moment();\r\n\r\n vm.deleteMode = true;\r\n vm.UploadSettings = {\r\n FileType: bizMediabankService.FileTypes.Image,\r\n FileLocation: bizMediabankService.UploadLocations.Goal,\r\n FilePattern: '',\r\n IsPrivate: true,\r\n IsInvisible: false,\r\n IsPrivateControlHidden: true,\r\n IsInvisibleControlHidden: true,\r\n IsUser: true\r\n };\r\n\r\n vm.labels = [\"Utfall\", \"Återstående\"];\r\n vm.colors = [\"#0079EA\", \"#65AEF2\"];\r\n vm.options = { cutoutPercentage: 75, title: {\r\n display: false,\r\n text: 'Utfallsrapportering'\r\n } };\r\n vm.data = [0, 100];\r\n \r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.Date = BizPartCoreHelpers.getDateNow();\r\n vm.Years = [\r\n {\r\n Name: moment(vm.Date).year() + '',\r\n Id: moment(vm.Date).year(),\r\n StartDate: moment(vm.Date).startOf('year'),\r\n EndDate: moment(vm.Date).endOf('year')\r\n },\r\n {\r\n Name: moment(vm.Date).add(1, 'years').year() + '',\r\n Id: moment(vm.Date).add(1, 'years').year(),\r\n StartDate: moment(vm.Date).add(1, 'years').startOf('year'),\r\n EndDate: moment(vm.Date).add(1, 'years').endOf('year')\r\n }\r\n ]; \r\n\r\n vm.SelectedYear = vm.Years[0]; \r\n\r\n vm.goalTypesLoadedDefer = $q.defer();\r\n vm.goalTypesLoaded = vm.goalTypesLoadedDefer.promise;\r\n vm.rootGoalsLoadedDefer = $q.defer();\r\n vm.rootGoalsLoaded = vm.rootGoalsLoadedDefer.promise;\r\n\r\n vm.EditMode = false;\r\n vm.FirstTimeCreate = false;\r\n vm.Save = Save;\r\n vm.LockGoal = LockGoal;\r\n vm.Init = Init;\r\n vm.ShowDeactivate = ShowDeactivate;\r\n vm.Back = Back;\r\n vm.IsExpired = IsExpired;\r\n vm.CompleteTask = CompleteTask;\r\n vm.IncreaseNewProgress = IncreaseNewProgress;\r\n vm.DecreaseNewProgress = DecreaseNewProgress; \r\n vm.FixSortingToDoList = FixSortingToDoList; \r\n vm.GoToActivity = GoToActivity;\r\n vm.GoToTask = GoToTask;\r\n vm.GetGoalTypes = GetGoalTypes; \r\n vm.GetRootGoals = GetRootGoals;\r\n vm.GetGoal = GetGoal;\r\n vm.SetProgressStep = SetProgressStep;\r\n vm.CreateChildGoalSuggestion = CreateChildGoalSuggestion;\r\n vm.RemoveChildGoalSuggestion = RemoveChildGoalSuggestion; \r\n vm.SelectImage = SelectImage;\r\n vm.SetEditMode = SetEditMode;\r\n vm.CancelEdit = CancelEdit;\r\n \r\n vm.lblFunction = lblFunction;\r\n\r\n function SelectImage() {\r\n bizMediabankService.ShowMediabankDialog(vm.Image, null, vm.UploadSettings).then(ShowMediabankDialogCallback);\r\n\r\n function ShowMediabankDialogCallback(file) { \r\n if (!file)\r\n return;\r\n vm.Image = file;\r\n }\r\n } \r\n\r\n function lblFunction(val, max) {\r\n return Math.round(val) + vm.goal.GoalType.Suffix;\r\n }\r\n\r\n function RemoveChildGoalSuggestion(index) {\r\n vm.ChildGoalSuggestions.splice(index, 1);\r\n }\r\n\r\n function CreateChildGoalSuggestion(split) {\r\n var suggestions = [];\r\n\r\n var monthsPerSplit = 12 / split; \r\n var goalValueReminder = vm.goal.GoalValue % split; \r\n\r\n for (var i = 0; i < split; i++) {\r\n var periodStart = moment(vm.SelectedYear.StartDate).startOf('month').add((i * monthsPerSplit), 'M');\r\n var periodEnd = moment(periodStart).add(monthsPerSplit - 1, 'M').endOf('month');\r\n var textSuffix = (split == 4 ? 'Q' : split === 3 ? 'T' : '') + (i + 1) + '';\r\n var goalValue = Math.floor(vm.goal.GoalValue / split);\r\n var endList = [];\r\n for (var j = 0; j < monthsPerSplit; j++) {\r\n var month = moment(periodEnd).add(-j, 'M');\r\n endList.push({\r\n Name: moment(month).format('DD MMMM'),\r\n Date: month\r\n });\r\n }\r\n suggestions.push({\r\n Text: vm.goal.Text + ' ' + textSuffix,\r\n DateFromLocal: moment(periodStart).format('YYYY-MM-DD'),\r\n SelectedToDate: endList[0],\r\n GoalValue: goalValue,\r\n EndList: endList\r\n });\r\n }\r\n\r\n console.log(suggestions);\r\n\r\n for (var i = 0; i < suggestions.length && goalValueReminder > 0; i++) {\r\n suggestions[i].GoalValue++;\r\n goalValueReminder--;\r\n }\r\n\r\n vm.ChildGoalSuggestions = suggestions;\r\n } \r\n\r\n function GoToActivity(id) {\r\n if (id > 0) {\r\n $state.go(\"base.modules.goals.activity\", { id: id });\r\n }\r\n }\r\n\r\n function GoToTask(id) {\r\n if (id > 0) {\r\n $state.go(\"base.modules.goals.onetask\", { id: id });\r\n }\r\n }\r\n\r\n function SetProgressStep() {\r\n vm.NewProgressSteps = vm.DefaultNewProgressSteps;\r\n if (vm.SelectedType.SystemName !== 'PERCENT') {\r\n if (vm.goal.GoalValue < 100) {\r\n vm.NewProgressSteps = 1;\r\n } else if (vm.goal.GoalValue > 1000) {\r\n vm.NewProgressSteps = vm.DefaultNewProgressSteps * 100;\r\n }\r\n } \r\n }\r\n\r\n function IncreaseNewProgress() {\r\n if (vm.Date > vm.SelectedPeriod.StartDate) {\r\n vm.EditMode = true;\r\n vm.SetProgressStep();\r\n var newValue = vm.NewProgress + 1;\r\n while (newValue % vm.NewProgressSteps != 0) {\r\n newValue++;\r\n }\r\n vm.NewProgress = newValue; \r\n \r\n vm.Dirty = true;\r\n }\r\n }\r\n\r\n function DecreaseNewProgress() {\r\n if (vm.Date > vm.SelectedPeriod.StartDate) {\r\n vm.EditMode = true;\r\n vm.SetProgressStep();\r\n var newValue = vm.NewProgress - 1;\r\n while (newValue % vm.NewProgressSteps != 0) {\r\n newValue--;\r\n }\r\n vm.NewProgress = newValue;\r\n\r\n vm.Dirty = true;\r\n } \r\n } \r\n\r\n function CompleteTask(task, act) {\r\n engagementGoalsService.CompleteTask(task).then(CompleteToDoCallback);\r\n\r\n function CompleteToDoCallback(response) {\r\n var index = act.ToDoList.indexOf(task);\r\n act.ToDoList.splice(index, 1);\r\n }\r\n }\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n }\r\n\r\n function FixSortingToDoList(toDoList) {\r\n for(var i = 0; i < toDoList.length; i++) {\r\n var item = toDoList[i];\r\n\r\n if(vm.IsExpired(item)) {\r\n item.Status = 10;\r\n }\r\n else if(!item.IsCompleted) {\r\n item.Status = 20;\r\n }\r\n else if(item.IsCompleted) {\r\n item.Status = 30;\r\n }\r\n }\r\n }\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function ShowDeactivate() {\r\n var parentEl = angular.element(document.querySelector('#goal-progress'));\r\n $mdDialog.show({\r\n parent: parentEl,\r\n targetEvent: parentEl,\r\n templateUrl: siteRootPath + 'FrontEnd/Modules/EngagementGoals/Views/deactivateGoalPopup.html',\r\n controller: ShowDeactivateController,\r\n controllerAs: \"vm\",\r\n bindToController: true,\r\n clickOutsideToClose: true,\r\n locals: {\r\n goal: vm.goal,\r\n deleteMode: vm.deleteMode\r\n }\r\n }).then(ShowDeactivateCallback, function (response) { });\r\n\r\n function ShowDeactivateCallback() {\r\n if (vm.deleteMode) {\r\n $state.go('base.modules.goals.engagementgoals');\r\n } else {\r\n engagementGoalsService.GetGoal(vm.goal.Id).then(function (response) {\r\n vm.goal = BizPartCoreHelpers.getResponseValue(response);\r\n });\r\n }\r\n }\r\n\r\n ShowDeactivateController.$inject = [\"$mdDialog\"];\r\n\r\n function ShowDeactivateController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.Close = Close;\r\n\r\n function Close() {\r\n $mdDialog.hide();\r\n }\r\n }\r\n }\r\n\r\n function GetGoalTypes() {\r\n engagementGoalsService.GetGoalTypes().then(GetGoalTypesCallback);\r\n\r\n function GetGoalTypesCallback(response) {\r\n vm.GoalTypes = BizPartCoreHelpers.getResponseValue(response, []);\r\n vm.goalTypesLoadedDefer.resolve(''); \r\n }\r\n }\r\n\r\n function GetRootGoals() {\r\n engagementGoalsService.GetGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.RootGoals = $filter('filter')(goals, { ParentGoalId: -1 });\r\n vm.rootGoalsLoadedDefer.resolve('');\r\n }\r\n }\r\n\r\n function SetEditMode() {\r\n vm.PreEditGoal = angular.copy(vm.goal);\r\n vm.PreEditImage = angular.copy(vm.Image);\r\n vm.EditMode = true;\r\n }\r\n\r\n function CancelEdit() {\r\n vm.EditMode = false;\r\n vm.goal = vm.PreEditGoal;\r\n vm.Image = vm.PreEditImage;\r\n vm.NewProgress = vm.goal.ProgressSum;\r\n }\r\n\r\n function Save() { \r\n\r\n if (vm.MyForm && !bizValidationService.FormValid(vm.MyForm))\r\n return; \r\n \r\n vm.goal.ImageMediabankId = vm.Image ? vm.Image.Id : -1;\r\n vm.goal.GoalTypeId = vm.SelectedType.Id;\r\n vm.goal.ParentGoalId = vm.SelectedRootGoal ? vm.SelectedRootGoal.Id : -1;\r\n\r\n var saveData = {};\r\n if (vm.goal.Id <= 0 || !vm.goal.IsLocked) {\r\n saveData.Goal = vm.goal;\r\n }\r\n\r\n if (vm.ChildGoalSuggestions) {\r\n for (var i = 0; i < vm.ChildGoalSuggestions.length; i++) {\r\n vm.ChildGoalSuggestions[i].GoalTypeId = vm.goal.GoalTypeId;\r\n vm.ChildGoalSuggestions[i].IsNegative = vm.goal.IsNegative;\r\n vm.ChildGoalSuggestions[i].DateToLocal = vm.ChildGoalSuggestions[i].SelectedToDate.Date;\r\n }\r\n\r\n saveData.ChildGoals = vm.ChildGoalSuggestions;\r\n }\r\n\r\n if (vm.NewProgress) {\r\n var change = vm.NewProgress - vm.goal.ProgressSum;\r\n var progressDate = vm.NewProgressDate;\r\n if (moment(progressDate).isSame(new Date(), \"day\")) {\r\n progressDate = moment();\r\n }\r\n if (change != 0) {\r\n saveData.Progress = {\r\n Value: change,\r\n DateLocal: progressDate,\r\n LinkedObjectId: vm.goal.Id\r\n };\r\n }\r\n }\r\n\r\n if (vm.NewComment) {\r\n saveData.Comment = {\r\n Comment: vm.NewComment,\r\n ObjectId: vm.goal.Id\r\n };\r\n } \r\n\r\n if (!saveData.Goal && !saveData.Progress && !saveData.Comment) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Inget ändrat')\r\n .position('bottom right')\r\n );\r\n } else {\r\n //We need to trim spaces to make it a valit int.\r\n if (saveData.goal && typeof saveData.Goal.GoalValue !== \"number\")\r\n saveData.Goal.GoalValue = ~~saveData.Goal.GoalValue.replace(/\\s/g, '');\r\n\r\n // Added support for min/max values in bizValidation\r\n //if (saveData.goal && saveData.Goal.GoalValue <= 0) {\r\n // $mdToast.show(\r\n // $mdToast.simple()\r\n // .textContent('Målets tal måste vara större än 0')\r\n // .position('bottom right')\r\n // );\r\n // return;\r\n //}\r\n \r\n if (vm.isRoot && vm.goal.Id > 0 && ((vm.OriginalType && vm.OriginalType !== vm.goal.GoalTypeId)\r\n || (vm.OriginalIsNegative !== undefined && vm.OriginalIsNegative !== vm.goal.IsNegative))) {\r\n\r\n var confirm = $mdDialog.confirm()\r\n .title('Ändring')\r\n .textContent('Du har ändrat typ och/eller negativ-status. Samtliga kvartalsmål kommer också att uppdateras med den nya typen och/eller negativ-status.')\r\n .ok('Ok')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n CreateUpdateGoal(saveData);\r\n }, function () {\r\n\r\n });\r\n\r\n } else {\r\n CreateUpdateGoal(saveData);\r\n }\r\n\r\n function CreateUpdateGoal(saveData) {\r\n engagementGoalsService.CreateUpdateGoal(saveData).then(CreateUpdateGoalCallback);\r\n\r\n function CreateUpdateGoalCallback(response) {\r\n //var isCreated = vm.goal.Id <= 0;\r\n vm.goal = BizPartCoreHelpers.getResponseValue(response);\r\n if (vm.goal.ImageUrl) {\r\n vm.Image = {\r\n FileUrl: vm.goal.ImageUrl\r\n }; \r\n }\r\n vm.NewComment = undefined;\r\n vm.OriginalType = vm.goal.GoalTypeId;\r\n vm.OriginalIsNegative = vm.goal.IsNegative;\r\n if (vm.FirstTimeCreate) {\r\n $rootScope.$broadcast('GOALCREATED', vm.goal);\r\n vm.goal = {\r\n DateFromLocal: vm.SelectedPeriod.StartDate.format('YYYY-MM-DD'),\r\n DateToLocal: vm.SelectedPeriod.EndDate.format('YYYY-MM-DD'),\r\n IsActive: true,\r\n Text: '',\r\n IsLocked: false,\r\n Id: 0\r\n };\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Mål skapat')\r\n .position('bottom right')\r\n );\r\n } else {\r\n vm.EditMode = false;\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Mål uppdaterat')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n } \r\n } \r\n }\r\n\r\n function LockGoal(ev) {\r\n var confirm = $mdDialog.confirm()\r\n .title('Vill du låsa målet?')\r\n .textContent('Du kan inte redigera målet igen efter att det låsts')\r\n .ariaLabel('Vill du låsa målet?')\r\n .targetEvent(ev)\r\n .ok('Lås')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n engagementGoalsService.LockGoal(vm.goal.Id).then(LockGoalCallback); \r\n }, function () {\r\n \r\n });\r\n \r\n function LockGoalCallback(response) {\r\n vm.goal.IsLocked = true;\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('The goal is now locked')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n\r\n function GenerateEditMonths() {\r\n var months = moment(vm.goal.DateToLocal).diff(vm.goal.DateFromLocal, 'months') + 1;\r\n\r\n vm.EditMonths = [];\r\n\r\n for(var i = 0; i < months; i++) {\r\n var date = moment(vm.goal.DateFromLocal).endOf('month');\r\n if(i > 0) {\r\n date = moment(vm.goal.DateFromLocal).add(i, 'months').endOf('month');\r\n }\r\n vm.EditMonths.push({\r\n Name: moment(date).format('DD MMMM'),\r\n Value: moment(date).format('YYYY-MM-DD HH:mm:ss')\r\n });\r\n }\r\n\r\n vm.SelectedNewMonth = vm.EditMonths[vm.EditMonths.length - 1];\r\n\r\n $rootScope.$watch(function() { return vm.SelectedNewMonth; }, function(newVal, oldVal) {\r\n if(!vm.isRoot && newVal) {\r\n vm.goal.DateToLocal = newVal.Value;\r\n }\r\n });\r\n }\r\n\r\n function GetGoal() {\r\n engagementGoalsService.GetGoal(vm.goalId).then(GetGoalCallback);\r\n\r\n function GetGoalCallback(response) {\r\n vm.goal = BizPartCoreHelpers.getResponseValue(response); \r\n \r\n GenerateEditMonths();\r\n\r\n if (vm.goal.ImageUrl) {\r\n vm.Image = {\r\n FileUrl: vm.goal.ImageUrl\r\n }; \r\n }\r\n\r\n vm.isRoot = vm.goal.ParentGoalId <= 0;\r\n\r\n vm.OriginalType = vm.goal.GoalTypeId;\r\n vm.OriginalIsNegative = vm.goal.IsNegative;\r\n\r\n $q.when(vm.goalTypesLoaded).then(function () {\r\n if (vm.goal.GoalTypeId) {\r\n vm.SelectedType = vm.GoalTypes.GetItemByValue('Id', vm.goal.GoalTypeId);\r\n }\r\n });\r\n\r\n $q.when(vm.rootGoalsLoaded).then(function () {\r\n if (vm.goal.ParentGoalId > 0) {\r\n vm.SelectedRootGoal = vm.RootGoals.GetItemByValue('Id', vm.goal.ParentGoalId);\r\n }\r\n });\r\n }\r\n } \r\n\r\n function Init() { \r\n vm.GetGoalTypes();\r\n vm.GetRootGoals();\r\n\r\n if (vm.goalId) {\r\n vm.GetGoal();\r\n } else {\r\n vm.goal = {\r\n DateFromLocal: vm.SelectedPeriod.StartDate.format('YYYY-MM-DD'),\r\n DateToLocal: vm.SelectedPeriod.EndDate.format('YYYY-MM-DD'),\r\n IsActive: true,\r\n Text: '',\r\n IsLocked: false,\r\n Id: 0\r\n };\r\n vm.EditMode = true;\r\n vm.FirstTimeCreate = true;\r\n }\r\n \r\n vm.NewProgressDate = BizPartCoreHelpers.getDateNow().format('YYYY-MM-DD');\r\n } \r\n\r\n $scope.$watch(\"vm.goal.ProgressSum\", function () {\r\n if (vm.goal) {\r\n vm.NewProgress = vm.goal.ProgressSum;\r\n\r\n var percent = vm.goal.ProgressSumInPercent;\r\n if (percent > 100) {\r\n percent = 100;\r\n }\r\n vm.data = [Math.round(percent), Math.round(100 - percent)];\r\n }\r\n }); \r\n\r\n $scope.$watch(\"vm.NewProgress\", function () {\r\n if (vm.goal && !vm.EditMode && vm.NewProgress !== vm.goal.ProgressSum) {\r\n vm.EditMode = true;\r\n }\r\n }); \r\n\r\n $scope.$watch(\"vm.SelectedYear\", function () {\r\n if (vm.goal && vm.goal.Id <= 0 && !vm.SelectedRootGoal && vm.SelectedYear) {\r\n vm.goal.DateFromLocal = vm.SelectedYear.StartDate.format('YYYY-MM-DD');\r\n vm.goal.DateToLocal = vm.SelectedYear.EndDate.format('YYYY-MM-DD');\r\n }\r\n }); \r\n\r\n $scope.$watch(\"vm.SelectedRootGoal\", function () {\r\n if (vm.goal && vm.goal.Id <= 0) {\r\n if (vm.SelectedRootGoal) {\r\n vm.goal.DateFromLocal = vm.SelectedPeriod.StartDate.format('YYYY-MM-DD');\r\n vm.goal.DateToLocal = vm.SelectedPeriod.EndDate.format('YYYY-MM-DD');\r\n vm.goal.IsNegative = vm.SelectedRootGoal.IsNegative;\r\n vm.SelectedType = vm.SelectedRootGoal.GoalType;\r\n } else {\r\n vm.goal.DateFromLocal = vm.SelectedYear.StartDate.format('YYYY-MM-DD');\r\n vm.goal.DateToLocal = vm.SelectedYear.EndDate.format('YYYY-MM-DD');\r\n } \r\n }\r\n }); \r\n\r\n vm.SelectedRootGoal\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n}());","(function () {\r\n angular\r\n .module('bizPartEngage')\r\n .directive('bizOneGoalTask', bizOneGoalTaskDirective);\r\n\r\n bizOneGoalTaskDirective.$inject = ['bizCore'];\r\n\r\n function bizOneGoalTaskDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n task: '=',\r\n },\r\n templateUrl: bizCoreProvider.getView(\r\n 'bizOneGoalTaskDirective',\r\n 'FrontEnd/Modules/EngagementGoals/Views/Directives/oneTask.html'\r\n ),\r\n bindToController: true,\r\n controller: bizOneGoalTaskController,\r\n controllerAs: 'vm',\r\n };\r\n\r\n bizOneGoalTaskController.$inject = [\r\n 'modules.goals.service',\r\n '$q',\r\n '$scope',\r\n '$state',\r\n '$mdToast',\r\n 'bizValidationService',\r\n '$mdDialog',\r\n ];\r\n\r\n return directive;\r\n\r\n function bizOneGoalTaskController(\r\n engagementGoalsService,\r\n $q,\r\n $scope,\r\n $state,\r\n $mdToast,\r\n bizValidationService,\r\n $mdDialog\r\n ) {\r\n var vm = this;\r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.DateSettings = {\r\n min: moment(vm.SelectedPeriod.StartDate),\r\n max: moment(vm.SelectedPeriod.EndDate),\r\n };\r\n\r\n vm.EditMode = false;\r\n vm.taskIsLoadedDefer = $q.defer();\r\n vm.taskIsLoaded = vm.taskIsLoadedDefer.promise;\r\n\r\n vm.Settings = {\r\n display: 'bubble',\r\n touchUi: false,\r\n buttons: ['Ok', 'Cancel'],\r\n dateWheels: 'mmyy',\r\n max: moment().add(1, 'day'),\r\n };\r\n\r\n vm.Init = Init;\r\n vm.GetActivities = GetActivities;\r\n vm.Save = Save;\r\n vm.CancelEdit = CancelEdit;\r\n vm.SetTaskLoaded = SetTaskLoaded;\r\n vm.SetTaskDates = SetTaskDates;\r\n vm.CompleteTask = CompleteTask;\r\n vm.GetGoalTypes = GetGoalTypes;\r\n vm.DeleteTask = DeleteTask;\r\n vm.UncompleteTask = UncompleteTask;\r\n\r\n function CompleteTask() {\r\n engagementGoalsService\r\n .CompleteTask(vm.task)\r\n .then(CompleteTaskCallback);\r\n\r\n function CompleteTaskCallback(response) {\r\n vm.task.IsCompleted = true;\r\n $state.reload();\r\n //$mdToast.show(\r\n // $mdToast.simple()\r\n // .textContent('The task has been completed')\r\n // .position('bottom right')\r\n //);\r\n }\r\n }\r\n\r\n function UncompleteTask() {\r\n engagementGoalsService\r\n .UncompleteTask(vm.task.Id)\r\n .then(UncompleteTaskCallback);\r\n\r\n function UncompleteTaskCallback(response) {\r\n vm.task.IsCompleted = false;\r\n $state.reload();\r\n }\r\n }\r\n\r\n function CancelEdit() {\r\n if (~~vm.task.Id > 0) {\r\n vm.EditMode = false;\r\n } else {\r\n $state.go('base.modules.goals.tasks');\r\n }\r\n }\r\n\r\n function GetActivities() {\r\n engagementGoalsService\r\n .GetActivitiesByGoalDate()\r\n .then(GetActivitiesCallback);\r\n\r\n function GetActivitiesCallback(response) {\r\n var activities = BizPartCoreHelpers.getResponseValue(\r\n response,\r\n []\r\n );\r\n //for (var i = 0; i < activities.length; i++) {\r\n // //activities[i].Name = activities[i].GoalName + ': ' + activities[i].Text;\r\n //}\r\n vm.AllActivities = activities;\r\n\r\n //if (vm.AllActivities.length) {\r\n // vm.SelectedActivity = vm.AllActivities[0];\r\n //}\r\n\r\n $q.when(vm.taskIsLoaded).then(function () {\r\n var goalFilteredActivities = [];\r\n for (var i = 0; i < vm.AllActivities.length; i++) {\r\n if (\r\n vm.AllActivities[i].Id ===\r\n vm.task.LinkedObjectId\r\n ) {\r\n vm.SelectedActivity = vm.AllActivities[i];\r\n goalFilteredActivities.push(\r\n vm.AllActivities[i]\r\n );\r\n } else if (\r\n vm.AllActivities[i].GoalId === vm.task.GoalId\r\n ) {\r\n goalFilteredActivities.push(\r\n vm.AllActivities[i]\r\n );\r\n }\r\n }\r\n\r\n if (vm.task.GoalId) {\r\n vm.AllActivities = goalFilteredActivities;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function DeleteTask() {\r\n var confirm = $mdDialog\r\n .confirm()\r\n .title('Radera')\r\n .textContent(\r\n 'Är du säker på att du vill radera denna \"Att göra\"?'\r\n )\r\n .ok('Ja')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(\r\n function () {\r\n engagementGoalsService\r\n .DeleteTask(vm.task.Id)\r\n .then(function (response) {\r\n $state.go('base.modules.goals.engagementgoals');\r\n });\r\n },\r\n function () {}\r\n );\r\n }\r\n\r\n function Save() {\r\n if (vm.MyForm && !bizValidationService.FormValid(vm.MyForm))\r\n return;\r\n\r\n vm.task.DateLocal = vm.EditDate;\r\n vm.task.LinkedObjectId = vm.SelectedActivity.Id;\r\n vm.task.GoalTypeId = vm.SelectedType ? vm.SelectedType.Id : 0;\r\n\r\n var saveData = {\r\n Todo: vm.task,\r\n Comment: vm.NewComment,\r\n };\r\n\r\n if (\r\n saveData.Todo.GoalValue &&\r\n typeof saveData.Todo.GoalValue !== 'number'\r\n )\r\n saveData.Todo.GoalValue = ~~saveData.Todo.GoalValue.replace(\r\n /\\s/g,\r\n ''\r\n );\r\n\r\n engagementGoalsService\r\n .CreateUpdateTask(saveData)\r\n .then(CreateUpdateTaskCallback);\r\n\r\n function CreateUpdateTaskCallback(response) {\r\n // if(~~vm.task.Id <= 0) {\r\n\r\n // }\r\n\r\n window.history.back();\r\n\r\n // vm.NewComment = undefined;\r\n // vm.task = BizPartCoreHelpers.getResponseValue(response);\r\n // vm.SetTaskDates();\r\n // vm.EditMode = false;\r\n\r\n // $mdToast.show(\r\n // $mdToast.simple()\r\n // .textContent('The task has been saved')\r\n // .position('bottom right')\r\n // );\r\n }\r\n }\r\n\r\n function SetTaskDates() {\r\n if (vm.task.DateLocal) {\r\n vm.EditDate = moment(vm.task.DateLocal);\r\n }\r\n }\r\n\r\n function GetGoalTypes() {\r\n engagementGoalsService\r\n .GetGoalTypes()\r\n .then(GetGoalTypesCallback);\r\n\r\n function GetGoalTypesCallback(response) {\r\n vm.GoalTypes = BizPartCoreHelpers.getResponseValue(\r\n response,\r\n []\r\n );\r\n\r\n $q.when(vm.taskIsLoaded).then(function () {\r\n if (vm.task.GoalTypeId) {\r\n vm.SelectedType = vm.GoalTypes.GetItemByValue(\r\n 'Id',\r\n vm.task.GoalTypeId\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetGoalTypes();\r\n if (vm.task && vm.task.Id === 'new') {\r\n vm.task = {\r\n Text: '',\r\n GoalId: vm.task.GoalId,\r\n LinkedObjectId: vm.task.ActivityId,\r\n };\r\n //vm.EditDate = engagementGoalsService.GetSelectedQuarter().Date,\r\n vm.EditMode = true;\r\n }\r\n vm.GetActivities();\r\n }\r\n\r\n function SetTaskLoaded() {\r\n vm.SetTaskDates();\r\n vm.taskIsLoadedDefer.resolve('');\r\n vm.unbindTaskWatch();\r\n }\r\n\r\n vm.unbindTaskWatch = $scope.$watch('vm.task', function () {\r\n if (vm.task !== undefined) {\r\n vm.SetTaskLoaded();\r\n }\r\n });\r\n\r\n //does not work :()\r\n //$scope.$watch(\"vm.SelectedActivity\", function () {\r\n // if (vm.SelectedActivity) {\r\n // vm.TaskDatePicker.settings.min = moment(vm.SelectedActivity.GoalFromDate);\r\n // vm.TaskDatePicker.settings.max = moment(vm.SelectedActivity.GoalToDate);\r\n // }\r\n //});\r\n\r\n vm.$onInit = vm.Init;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n angular.module('bizPartEngage').directive('bizGoalTaskStatus', bizGoalTaskStatusDirective);\r\n\r\n bizGoalTaskStatusDirective.$inject = [\"bizCore\"];\r\n\r\n function bizGoalTaskStatusDirective(bizCoreProvider) {\r\n var directive = {\r\n restrict: 'E',\r\n scope: {\r\n task: '=task'\r\n },\r\n templateUrl: bizCoreProvider.getView('bizGoalTaskStatus', 'FrontEnd/Modules/EngagementGoals/Views/Directives/taskStatus.html'),\r\n bindToController: true,\r\n controller: bizGoalTaskStatusController,\r\n controllerAs: 'vm'\r\n };\r\n\r\n bizGoalTaskStatusController.$inject = [];\r\n\r\n return directive;\r\n\r\n function bizGoalTaskStatusController() {\r\n var vm = this;\r\n\r\n vm.Init = Init;\r\n vm.IsExpired = IsExpired;\r\n\r\n function IsExpired(task) {\r\n return !task.IsCompleted && moment(task.DateLocal) < BizPartCoreHelpers.getDateNow();\r\n } \r\n \r\n\r\n function Init() {\r\n if (vm.task.IsCompleted) {\r\n vm.task.Status = 30;\r\n }\r\n else if (vm.IsExpired(vm.task)) {\r\n vm.task.Status = 10;\r\n }\r\n else if (!vm.IsExpired(vm.task) && !vm.task.IsCompleted) {\r\n vm.task.Status = 20;\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init; \r\n }\r\n }\r\n\r\n}());","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.activitylist', indexController);\r\n angular.module('bizPartEngage').controller('modules.goals.activity', activityController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n activityController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n\r\n function indexController(engagementGoalsService, $stateParams) {\r\n var vm = this;\r\n \r\n \r\n vm.$onInit = function () { \r\n \r\n }\r\n }\r\n\r\n function activityController(engagementGoalsService, $stateParams) {\r\n var vm = this; \r\n\r\n vm.activityId = ~~$stateParams.id;\r\n vm.goalId = ~~$stateParams.goalId;\r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.Date = BizPartCoreHelpers.getDateNow();\r\n\r\n vm.GetOneActivity = GetOneActivity;\r\n vm.Back = Back;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GetOneActivity(id) { \r\n engagementGoalsService.GetOneActivity(id).then(GetOneActivityCallback);\r\n\r\n function GetOneActivityCallback(response) {\r\n vm.activity = BizPartCoreHelpers.getResponseValue(response); \r\n }\r\n }\r\n\r\n\r\n vm.$onInit = function () {\r\n if (vm.activityId > 0) {\r\n vm.GetOneActivity(vm.activityId);\r\n } else { \r\n vm.activity = {\r\n Id: 0,\r\n GoalId: vm.goalId\r\n };\r\n } \r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.calendar', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.calendar.service\", \"modules.goals.service\", \"$stateParams\", \"mobiEvent\"];\r\n\r\n function indexController(calendarService, engagementGoalsService, $stateParams, event) {\r\n var vm = this;\r\n\r\n vm.Tasks = [];\r\n vm.events = [];\r\n\r\n vm.GetTasks = GetTasks;\r\n\r\n function GetTasks() { \r\n engagementGoalsService.GetTasks(true, BizPartCoreHelpers.getDateNow().subtract(3, 'months'), BizPartCoreHelpers.getDateNow().add(3, 'months')).then(GetTasksCallback);\r\n\r\n function GetTasksCallback(response) {\r\n vm.Tasks = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n vm.events = [];\r\n for (var i = 0; i < vm.Tasks.length; i++) {\r\n var task = vm.Tasks[i];\r\n var color = \"#65AEF2\";\r\n \r\n if(task.IsCompleted) {\r\n color = \"#3dd452\";\r\n }\r\n\r\n vm.events.push(new event(task.Id, \"TASK\", task.Text, task.DateLocal, null, color));\r\n }\r\n }\r\n }\r\n\r\n vm.$onInit = function () {\r\n vm.GetTasks();\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.goals.calendar.service', calendarService);\r\n\r\n calendarService.$inject = [\"$http\"];\r\n\r\n function calendarService($http) {\r\n\r\n\r\n }\r\n\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.dashboard', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"bizUser\", \"mobiEvent\", \"$rootScope\", \"$filter\"];\r\n\r\n function indexController(engagementGoalsService, bizUser, event, $rootScope, $filter) {\r\n var vm = this;\r\n vm.Tasks = [];\r\n\r\n vm.labels = [\"Framsteg\", \"Kvar\"];\r\n vm.colors = [\"#0079EA\", \"#65AEF2\"];\r\n vm.options = { cutoutPercentage: 75 };\r\n vm.data = [0, 100];\r\n vm.UserProgressSum = {};\r\n vm.UserProgressSum.ProgressValue = 0;\r\n\r\n vm.events = [];\r\n\r\n vm.LoggedInUserId = bizUser.getLoggedInUser().Id; \r\n\r\n vm.Init = Init;\r\n\r\n vm.GetProgressSum = GetProgressSum;\r\n vm.GetTasks = GetTasks;\r\n vm.GoToNextPeriod = GoToNextPeriod;\r\n vm.GoToPreviousPeriod = GoToPreviousPeriod;\r\n vm.IsSelectedPeriodInCurrentYear = IsSelectedPeriodInCurrentYear;\r\n vm.GetGoals = GetGoals;\r\n\r\n function GoToNextPeriod() {\r\n engagementGoalsService.IncreaseSelectedPeriod();\r\n $rootScope.$broadcast('GOAL_NEW_DATE_SELECTED');\r\n vm.Init();\r\n }\r\n\r\n function GoToPreviousPeriod() {\r\n engagementGoalsService.DecreaseSelectedPeriod();\r\n $rootScope.$broadcast('GOAL_NEW_DATE_SELECTED');\r\n vm.Init();\r\n }\r\n\r\n function IsSelectedPeriodInCurrentYear() {\r\n var selected = engagementGoalsService.GetSelectedPeriod().StartDate;\r\n return BizPartCoreHelpers.getDateNow().year() == moment(selected).year();\r\n }\r\n \r\n\r\n function GetProgressSum() {\r\n \r\n engagementGoalsService.GetProgressSum(true).then(GetProgressSumCallback);\r\n\r\n function GetProgressSumCallback(response) {\r\n vm.ProgressSum = BizPartCoreHelpers.getResponseValue(response);\r\n console.log(vm.ProgressSum);\r\n\r\n if (vm.ProgressSum.length > 0) {\r\n vm.UserProgressSum = vm.ProgressSum.GetItemByValue('UserId', vm.LoggedInUserId);\r\n var progressValue = vm.UserProgressSum.ProgressValue; \r\n if (progressValue > 100) {\r\n progressValue = 100;\r\n }\r\n vm.data = [Math.round(progressValue), Math.round(100 - progressValue)];\r\n } \r\n } \r\n }\r\n\r\n function GetTasks() {\r\n engagementGoalsService.GetTasks(true, moment().subtract(3, 'months'), moment().add(3, 'months')).then(GetTasksCallback);\r\n\r\n function GetTasksCallback(response) {\r\n vm.Tasks = BizPartCoreHelpers.getResponseValue(response, []);\r\n\r\n vm.events = [];\r\n for(var i = 0; i < vm.Tasks.length; i++) {\r\n var task = vm.Tasks[i];\r\n var color = \"#65AEF2\";\r\n \r\n if(task.IsCompleted) {\r\n color = \"#3dd452\";\r\n }\r\n\r\n vm.events.push(new event(task.Id, \"TASK\", task.Text, task.DateLocal, null, color));\r\n }\r\n }\r\n }\r\n\r\n function GetGoals() {\r\n engagementGoalsService.GetGoals().then(GetGoalsCallback);\r\n\r\n function GetGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.NegativeGoals = $filter('filter')(goals, { IsNegative: true });\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n vm.GetProgressSum();\r\n vm.GetTasks();\r\n vm.GetGoals();\r\n }\r\n \r\n vm.$onInit = function () {\r\n vm.Init();\r\n }\r\n\r\n $rootScope.$on('GOALPROGRESSUPDATED', function (event) { \r\n vm.GetProgressSum();\r\n });\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.engagementgoals', indexController);\r\n angular.module('bizPartEngage').controller('modules.goals.onegoal', oneGoalController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$filter\"];\r\n oneGoalController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n\r\n function indexController(engagementGoalsService, $filter) {\r\n var vm = this; \r\n vm.RootGoals = []; \r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n\r\n vm.GetRootGoals = GetRootGoals;\r\n\r\n vm.lblFunction = lblFunction;\r\n\r\n function lblFunction(val, max, goal) {\r\n return Math.round(val) + goal.GoalType.Suffix;\r\n }\r\n\r\n function GetRootGoals() {\r\n engagementGoalsService.GetGoals(true).then(GetRootGoalsCallback);\r\n\r\n function GetRootGoalsCallback(response) {\r\n var goals = BizPartCoreHelpers.getResponseValue(response, []); \r\n vm.RootGoals = $filter('filter')(goals, { ParentGoalId: -1 });\r\n }\r\n }\r\n\r\n vm.$onInit = function () { \r\n vm.GetRootGoals();\r\n }\r\n }\r\n\r\n function oneGoalController(engagementGoalsService, $stateParams) {\r\n var vm = this;\r\n //vm.GetOneGoal = GetOneGoal;\r\n\r\n vm.goalId = ~~$stateParams.id; \r\n vm.newRoot = $stateParams.id === 'new-root'; \r\n\r\n //function GetOneGoal(id) {\r\n // engagementGoalsService.GetGoal(id).then(GetGoalCallback);\r\n\r\n // function GetGoalCallback(response) {\r\n // vm.goal = BizPartCoreHelpers.getResponseValue(response); \r\n // }\r\n //}\r\n\r\n vm.$onInit = function () {\r\n //if (vm.goalId > 0) {\r\n // vm.GetOneGoal(vm.goalId);\r\n //} else {\r\n // vm.goal = {\r\n // Id: 'new'\r\n // };\r\n //}\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.managersettings', indexController); \r\n\r\n indexController.$inject = [\"modules.goals.service\", \"base.service\", \"$mdToast\", \"$rootScope\", \"$mdDialog\"]; \r\n\r\n function indexController(engagementGoalsService, baseService, $mdToast, $rootScope, $mdDialog) {\r\n var vm = this; \r\n\r\n vm.ReportPeriodTypes = [\r\n {\r\n Name: 'Vecka',\r\n Id: 1\r\n },\r\n {\r\n Name: 'Månad',\r\n Id: 2\r\n }\r\n ];\r\n\r\n vm.DatePickerSettings = {\r\n min: BizPartCoreHelpers.getDateNow().startOf('year')\r\n };\r\n\r\n vm.DayList = [];\r\n\r\n vm.Init = Init; \r\n vm.GetMeetingInfo = GetMeetingInfo;\r\n vm.SavePeriodMode = SavePeriodMode;\r\n vm.SaveMeetingInfo = SaveMeetingInfo;\r\n vm.GetMeetings = GetMeetings;\r\n vm.SaveMeeting = SaveMeeting;\r\n vm.DeleteMeeting = DeleteMeeting;\r\n vm.MeetingHasPassed = MeetingHasPassed;\r\n\r\n function SavePeriodMode() {\r\n engagementGoalsService.SetPeriodMode(vm.PeriodMode, vm.SelectedUnit.Id).then(SetPeriodModeCallback);\r\n\r\n function SetPeriodModeCallback(response) {\r\n vm.OriginalPeriodMode = vm.PeriodMode;\r\n\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Period ändrad')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n\r\n function SaveMeetingInfo() {\r\n\r\n engagementGoalsService.SetMeetingInfo(vm.MeetingInfo.PeriodType, vm.MeetingInfo.MeetingDay, vm.SelectedUnit.Id).then(SetMeetingInfoCallback);\r\n\r\n function SetMeetingInfoCallback(response) {\r\n vm.OriginalMeetingInfo = angular.copy(vm.MeetingInfo);\r\n\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Rapportinställningar ändrad')\r\n .position('bottom right')\r\n );\r\n }\r\n }\r\n\r\n function SaveMeeting() {\r\n \r\n engagementGoalsService.CreateUpdateMeeting({\r\n Date: vm.AddMeetingDate,\r\n UnitId: vm.SelectedUnit.Id\r\n }).then(CreateUpdateMeetingCallback);\r\n\r\n function CreateUpdateMeetingCallback(response) {\r\n var meeting = BizPartCoreHelpers.getResponseValue(response);\r\n vm.MeetingList.push(meeting);\r\n\r\n vm.ShowNewMeeting = false;\r\n vm.AddMeetingDate = undefined;\r\n }\r\n }\r\n\r\n function GetMeetingInfo() {\r\n engagementGoalsService.GetMeetingInfo().then(GetMeetingInfoCallback);\r\n\r\n function GetMeetingInfoCallback(response) {\r\n vm.MeetingInfo = BizPartCoreHelpers.getResponseValue(response);\r\n vm.OriginalMeetingInfo = angular.copy(vm.MeetingInfo);\r\n }\r\n }\r\n\r\n function GetMeetings() {\r\n engagementGoalsService.GetMeetings(vm.SelectedUnit.Id).then(GetMeetingsCallback);\r\n\r\n function GetMeetingsCallback(response) {\r\n vm.MeetingList = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function DeleteMeeting(meeting) { \r\n \r\n var confirm = $mdDialog.confirm()\r\n .title('Radera')\r\n .textContent('Är du säker på att du vill radera detta \"mötet\"?')\r\n .ok('Ja')\r\n .cancel('Avbryt');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n engagementGoalsService.DeleteMeeting(meeting.Id).then(DeleteMeetingCallback);\r\n }, function () {\r\n\r\n });\r\n \r\n \r\n function DeleteMeetingCallback(response) {\r\n var index = vm.MeetingList.indexOf(meeting);\r\n vm.MeetingList.splice(index, 1);\r\n }\r\n }\r\n\r\n function MeetingHasPassed(meeting) { \r\n return BizPartCoreHelpers.getDateNow().startOf('day') > moment(meeting.Date).startOf('day'); \r\n }\r\n\r\n function Init() { \r\n vm.User = $rootScope.LoggedInUser;\r\n if (vm.User.Units.length > 0) {\r\n vm.SelectedUnit = vm.User.Units[0];\r\n }\r\n\r\n for (var i = 1; i < 8; i++) {\r\n vm.DayList.push({\r\n Name: moment.weekdays(i),\r\n Id: i\r\n });\r\n }\r\n\r\n vm.GetMeetingInfo();\r\n vm.PeriodModeList = engagementGoalsService.GetPeriodModes();\r\n vm.PeriodMode = vm.OriginalPeriodMode = baseService.GetFrontEndModuleSettingValue('Goals', 'PeriodMode');\r\n vm.GetMeetings(); \r\n }\r\n\r\n $rootScope.Initialized.then(vm.Init);\r\n }\r\n \r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.resultreport', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$q\", \"bizUser\", \"$stateParams\", \"$filter\", \"mobiEvent\", \"$mdToast\"];\r\n\r\n function indexController(goalService, $q, bizUser, $stateParams, $filter, event, $mdToast) {\r\n var vm = this\r\n\r\n vm.PeriodTypes = ['Week', 'Month']; \r\n vm.PeriodType = vm.PeriodTypes[0]\r\n vm.PeriodDayBreak = 5;\r\n\r\n vm.labels = [\"Framsteg\", \"Kvar\"];\r\n vm.colors = [\"#0079EA\", \"#65AEF2\"];\r\n vm.options = { cutoutPercentage: 75 };\r\n vm.data = [0, 100];\r\n vm.userData = [0, 100];\r\n vm.UserProgressSum = {};\r\n vm.UserProgressSum.ProgressValue = 0;\r\n vm.ToolTipDateFormat = \"DD MMM\";\r\n vm.RootGoals = [];\r\n vm.Goals = [];\r\n\r\n vm.CommentCount = 0;\r\n\r\n vm.UserId = ~~$stateParams.userid;\r\n if (vm.UserId <= 0) {\r\n vm.UserId = bizUser.getLoggedInUser().Id;\r\n } \r\n\r\n vm.PeriodCommentSettings = {\r\n NewCommentData: {\r\n PreventReplies: true\r\n }\r\n };\r\n\r\n vm.NextPeriodCommentSettings = {\r\n PreventReplies: true,\r\n HideDate: true\r\n };\r\n \r\n vm.CurrentDate = BizPartCoreHelpers.getDateNow();\r\n vm.SelectedPeriod = goalService.GetSelectedPeriod();\r\n\r\n //not used anymore?\r\n //vm.IsFirstWeekInQuarter = goalService.GetIsFirstWeekInQuarter(vm.CurrentDate);\r\n\r\n vm.PeriodLengthInDays = 7;\r\n\r\n vm.TasksInPeriod = [];\r\n vm.TasksInPreviousPeriod = [];\r\n\r\n vm.LoadTasks = LoadTasks; \r\n //vm.GetCurrentProgress = GetCurrentProgress;\r\n //vm.GetProgressPeriodCompare = GetProgressPeriodCompare;\r\n vm.GetTodoCount = GetTodoCount;\r\n //vm.PopulateProgressChart = PopulateProgressChart; \r\n //vm.GetUserProgressSum = GetUserProgressSum; \r\n //vm.IsExpired = IsExpired;\r\n vm.GetGoalAndActivityComments = GetGoalAndActivityComments;\r\n vm.GetGoals = GetGoals;\r\n vm.lblFunction = lblFunction; \r\n\r\n function lblFunction(val, max, goal) {\r\n return Math.round(val) + goal.GoalType.Suffix;\r\n }\r\n vm.GetGoalsForUsersInSameUnit = GetGoalsForUsersInSameUnit;\r\n\r\n function GetGoalsForUsersInSameUnit() {\r\n goalService.GetGoalsForUsersInSameUnit().then(GetDataCallback);\r\n\r\n function GetDataCallback(response) {\r\n vm.UsersInSameUnit = response.data;\r\n }\r\n }\r\n\r\n function GetGoals() {\r\n goalService.GetGoals(true).then(GetGoalsCallback); \r\n \r\n function GetGoalsCallback(response) {\r\n var allGoals = response.data;\r\n vm.Goals = [];\r\n vm.RootGoals = [];\r\n \r\n for(var i = 0; i < allGoals.length; i++) {\r\n if(allGoals[i].ParentGoalId > 0) {\r\n vm.Goals.push(allGoals[i]);\r\n }\r\n else {\r\n vm.RootGoals.push(allGoals[i]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n //function IsExpired(task) {\r\n // return !task.IsCompleted && moment(task.DateLocal) < moment();\r\n //} \r\n\r\n //function PopulateProgressChart() {\r\n // vm.ProgressChartOptions = {\r\n // maintainAspectRatio: false,\r\n // legend: {\r\n // display: true\r\n // },\r\n // scales: {\r\n // yAxes: [{\r\n // ticks: {\r\n // beginAtZero: true,\r\n // suggestedMax: 100\r\n // }\r\n // }]\r\n // },\r\n // layout: {\r\n // padding: {\r\n // left: 10\r\n // }\r\n // }\r\n // };\r\n \r\n // goalService.GetProgressByWeek(vm.UserId, vm.CurrentDate).then(GetProgressByWeekCallback); \r\n\r\n // function GetProgressByWeekCallback(response) {\r\n // var progressByWeek = BizPartCoreHelpers.getResponseValue(response); \r\n\r\n // vm.ProgressChartLabels = [];\r\n // vm.ProgressChartData = [];\r\n // vm.ProgressChartSeries = [];\r\n\r\n // var thisWeek = moment().week();\r\n // var thisYear = moment().year();\r\n \r\n // var data = []; \r\n // //starting point\r\n // vm.ProgressChartLabels.push('');\r\n // data.push(0);\r\n // for (var i = 0; i < progressByWeek.length; i++) {\r\n // vm.ProgressChartLabels.push('v' + progressByWeek[i].Week);\r\n // if (progressByWeek[i].Week <= thisWeek && progressByWeek[i].Year <= thisYear) {\r\n // data.push(progressByWeek[i].ProgressSumAggregated); \r\n // } \r\n // } \r\n\r\n // vm.ProgressChartSeries.push('Summering av dina inrapporterade målutfall per vecka.');\r\n // vm.ProgressChartData.push(data); \r\n // vm.ThisWeekData = progressByWeek.GetItemByValue('Week', moment().week()); \r\n // } \r\n //}\r\n\r\n function LoadTasks() { \r\n goalService.GetTasks(true, vm.PeriodStart, vm.PeriodEnd, vm.UserId).then(GetTasksCallback);\r\n goalService.GetTasks(false, vm.NextPeriodStart, vm.NextPeriodEnd, vm.UserId).then(GetTasksNextPeriodCallback);\r\n\r\n function GetTasksCallback(response) { \r\n vm.TasksInPeriod = BizPartCoreHelpers.getResponseValue(response);\r\n var completedTasks = 0;\r\n var notCompletedTasks = 0;\r\n vm.events = [];\r\n\r\n for (var i = 0; i < vm.TasksInPeriod.length; i++) {\r\n var task = vm.TasksInPeriod[i];\r\n var color = \"#65AEF2\";\r\n\r\n if (vm.TasksInPeriod[i].IsCompleted) {\r\n completedTasks++;\r\n color = \"#3dd452\";\r\n } else {\r\n notCompletedTasks++;\r\n }\r\n \r\n vm.events.push(new event(task.Id, \"TASK\", task.Text, task.DateLocal, null, color));\r\n }\r\n vm.CompletedTasksForUser = completedTasks;\r\n vm.NotCompletedTasksForUser = notCompletedTasks;\r\n } \r\n\r\n function GetTasksNextPeriodCallback(response) {\r\n vm.TasksInNextPeriod = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n //function GetProgressPeriodCompare() {\r\n // goalService.GetProgressSum(true, vm.CurrentDate, vm.PeriodStart, vm.PeriodEnd, vm.PreviousPeriodStart, vm.PreviousPeriodEnd).then(GetProgressForPeriodCompareCallback);\r\n\r\n // function GetProgressForPeriodCompareCallback(response) {\r\n // vm.ProgressForPeriodCompare = BizPartCoreHelpers.getResponseValue(response); \r\n // vm.UserProgressForPeriodCompare = vm.ProgressForPeriodCompare.GetItemByValue('UserId', vm.UserId); \r\n // }\r\n //}\r\n\r\n //function GetCurrentProgress() {\r\n // goalService.GetProgressSum(true).then(GetProgressSumForUserCallback);\r\n\r\n // function GetProgressSumForUserCallback(response) {\r\n // var unitProgress = BizPartCoreHelpers.getResponseValue(response); \r\n // vm.CurrentProgressPercent = unitProgress.GetItemByValue('UserId', vm.UserId);\r\n\r\n // var totalProgressSum = 0;\r\n // for (var i = 0; i < unitProgress.length; i++) {\r\n // totalProgressSum += unitProgress[i].ProgressValue;\r\n // }\r\n // vm.TotalProgressSum = unitProgress.length > 0 ? totalProgressSum / unitProgress.length : 0;\r\n\r\n // var totalProgress = vm.TotalProgressSum;\r\n // if (totalProgress > 100) {\r\n // totalProgress = 100;\r\n // }\r\n // vm.data = [Math.round(totalProgress), Math.round(100 - totalProgress)];\r\n // }\r\n //}\r\n\r\n function GetTodoCount() {\r\n $q.all([\r\n goalService.GetTodoCountForUsersInSameUnit(vm.PeriodStart, vm.PeriodEnd),\r\n goalService.GetTodoCountForUsersInSameUnit(vm.PreviousPeriodStart, vm.PreviousPeriodEnd)\r\n ]).then(GetTodoCountsCallback);\r\n\r\n function GetTodoCountsCallback(result) {\r\n var inPeriod = BizPartCoreHelpers.getResponseValue(result[0]);\r\n var prevPeriod = BizPartCoreHelpers.getResponseValue(result[1]);\r\n\r\n vm.TasksCompletedInPeriod = inPeriod.Completed;\r\n vm.TasksNotCompletedInPeriod = inPeriod.NotCompleted;\r\n\r\n var completedInPreviousPeriod = prevPeriod.Completed;\r\n var notCompletedInPreviousPeriod = prevPeriod.NotCompleted; \r\n\r\n vm.TasksCompletedInPreviousPeriod = completedInPreviousPeriod;\r\n vm.TasksNotCompletedInPreviousPeriod = notCompletedInPreviousPeriod;\r\n\r\n vm.TasksCompletedChange = vm.TasksCompletedInPeriod - completedInPreviousPeriod;\r\n vm.TaksNotCompletedChange = vm.TasksNotCompletedInPeriod - notCompletedInPreviousPeriod;\r\n\r\n vm.TasksCompletedChangePercent = completedInPreviousPeriod > 0 ? (vm.TasksCompletedChange / completedInPreviousPeriod) * 100 : 0;\r\n vm.TasksNotCompletedChangePercent = notCompletedInPreviousPeriod > 0 ? (vm.TaksNotCompletedChange / notCompletedInPreviousPeriod) * 100 : 0;\r\n }\r\n } \r\n \r\n //function GetUserProgressSum() {\r\n // goalService.GetProgressSum(true).then(GetProgressSumCallback);\r\n\r\n // function GetProgressSumCallback(response) {\r\n \r\n // var progressSum = BizPartCoreHelpers.getResponseValue(response);\r\n\r\n // if (progressSum.length > 0) {\r\n // vm.UserProgressSum = progressSum.GetItemByValue('UserId', vm.UserId);\r\n // var progressValue = vm.UserProgressSum.ProgressValue;\r\n // if (progressValue > 100) {\r\n // progressValue = 100;\r\n // }\r\n // vm.userData = [Math.round(progressValue), Math.round(100 - progressValue)];\r\n // }\r\n // }\r\n //}\r\n\r\n function GetGoalAndActivityComments() {\r\n goalService.GetGoalAndActivityComments(vm.PeriodStart, vm.PeriodEnd).then(GetGoalAndActivityCommentsCallback);\r\n\r\n function GetGoalAndActivityCommentsCallback(response) {\r\n vm.GoalAndActivityComments = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n } \r\n \r\n vm.$onInit = function () { \r\n\r\n goalService.GetMeetingInfo().then(function (response) {\r\n \r\n var meetingInfo = BizPartCoreHelpers.getResponseValue(response);\r\n\r\n if (meetingInfo.PeriodType === 1) {\r\n var periodEnd = BizPartCoreHelpers.getDateNow();\r\n while (periodEnd.isoWeekday() !== meetingInfo.MeetingDay) {\r\n periodEnd.add(1, 'days');\r\n }\r\n\r\n vm.PeriodEnd = moment(periodEnd).endOf('day');\r\n vm.PeriodStart = moment(vm.PeriodEnd).add(-6, 'days').startOf('day');\r\n\r\n vm.PreviousPeriodEnd = moment(vm.PeriodStart).add(-1, 'days').endOf('day');\r\n vm.PreviousPeriodStart = moment(vm.PreviousPeriodEnd).add(-6, 'days').startOf('day');\r\n\r\n vm.NextPeriodStart = moment(vm.PeriodEnd).add(1, 'days').startOf('day');\r\n vm.NextPeriodEnd = moment(vm.NextPeriodStart).add(6, 'days').endOf('day');\r\n } else {\r\n\r\n if (!meetingInfo.CurrentMeeting) {\r\n $mdToast.show(\r\n $mdToast.simple()\r\n .textContent('Inget möte finns inlagt. Kontakta din teamleader.')\r\n .position('bottom right')\r\n );\r\n } else {\r\n \r\n vm.PeriodStart = moment(meetingInfo.CurrentMeeting.PeriodStart); \r\n vm.PeriodEnd = moment(meetingInfo.CurrentMeeting.PeriodEnd);\r\n\r\n if (meetingInfo.PreviousMeeting && meetingInfo.PreviousMeeting.PeriodEnd) {\r\n vm.PreviousPeriodEnd = moment(meetingInfo.PreviousMeeting.PeriodEnd);\r\n } else {\r\n vm.PreviousPeriodEnd = moment(vm.PeriodStart).add(-1, 'days').endOf('day');\r\n }\r\n\r\n if (meetingInfo.PreviousMeeting && meetingInfo.PreviousMeeting.PeriodStart) {\r\n vm.PreviousPeriodStart = moment(meetingInfo.PreviousMeeting.PeriodStart);\r\n } else {\r\n vm.PreviousPeriodStart = moment(vm.PreviousPeriodEnd).add(-30, 'days').startOf('day');\r\n }\r\n\r\n if (meetingInfo.NextMeeting && meetingInfo.NextMeeting.PeriodStart) {\r\n vm.NextPeriodStart = moment(meetingInfo.NextMeeting.PeriodStart);\r\n } else {\r\n vm.NextPeriodStart = moment(vm.PeriodEnd).add(1, 'days').startOf('day');\r\n }\r\n\r\n if (meetingInfo.NextMeeting && meetingInfo.NextMeeting.PeriodEnd) {\r\n vm.NextPeriodEnd = moment(meetingInfo.NextMeeting.PeriodEnd);\r\n } else {\r\n vm.NextPeriodEnd = moment(vm.NextPeriodStart).add(30, 'days').endOf('day');\r\n }\r\n \r\n \r\n }\r\n }\r\n\r\n vm.LoadTasks();\r\n vm.GetTodoCount(); \r\n vm.GetGoalAndActivityComments(); \r\n });\r\n\r\n //vm.GetCurrentProgress();\r\n //vm.GetUserProgressSum();\r\n vm.GetGoals();\r\n vm.GetGoalsForUsersInSameUnit();\r\n \r\n //vm.GetProgressPeriodCompare();\r\n //vm.PopulateProgressChart(); \r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.tasks', indexController);\r\n angular.module('bizPartEngage').controller('modules.goals.onetask', oneTaskController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n oneTaskController.$inject = [\"modules.goals.service\", \"$stateParams\"];\r\n\r\n function indexController(engagementGoalsService) {\r\n var vm = this; \r\n\r\n vm.SelectedPeriod = engagementGoalsService.GetSelectedPeriod();\r\n\r\n vm.$onInit = function () {\r\n \r\n }\r\n }\r\n\r\n function oneTaskController(engagementGoalsService, $stateParams) {\r\n var vm = this;\r\n\r\n vm.GetOneTask = GetOneTask;\r\n\r\n vm.taskId = ~~$stateParams.id;\r\n vm.goalId = ~~$stateParams.goalId;\r\n vm.activityId = ~~$stateParams.activityId;\r\n\r\n vm.Back = Back;\r\n\r\n function Back() {\r\n window.history.back();\r\n }\r\n\r\n function GetOneTask(id) {\r\n engagementGoalsService.GetOneTask(id).then(GetOneTaskCallback);\r\n\r\n function GetOneTaskCallback(response) {\r\n vm.task = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n vm.$onInit = function () {\r\n if (vm.taskId > 0) {\r\n vm.GetOneTask(vm.taskId);\r\n } else {\r\n vm.task = {\r\n Id: 'new',\r\n EditDate: engagementGoalsService.GetSelectedPeriod().Date,\r\n EditMode: true,\r\n GoalId: vm.goalId,\r\n ActivityId: vm.activityId\r\n };\r\n }\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.goals.team', indexController);\r\n\r\n indexController.$inject = [\"modules.goals.service\", \"bizUser\"];\r\n\r\n function indexController(goalService, bizUser) {\r\n var vm = this\r\n vm.UserId = bizUser.getLoggedInUser().Id;\r\n vm.ExpandStatusStorageKey = 'TEAM_USERPROGRESS_EXPAND_STATUS_' + vm.UserId;\r\n vm.ExpandedUserProgress = [];\r\n\r\n vm.GetCurrentProgress = GetCurrentProgress;\r\n vm.GetGoalsForUsers = GetGoalsForUsers;\r\n vm.ToggleUserProgressExpanded = ToggleUserProgressExpanded;\r\n vm.StoreUserProgressExpandStatus = StoreUserProgressExpandStatus; \r\n vm.RetrieveUserProgressExpandStatus = RetrieveUserProgressExpandStatus;\r\n\r\n function GetCurrentProgress() {\r\n goalService.GetProgressSum(true).then(GetProgressSumForUserCallback);\r\n\r\n function GetProgressSumForUserCallback(response) {\r\n var prg = BizPartCoreHelpers.getResponseValue(response); \r\n for (var i = 0; i < prg.length; i++) {\r\n prg[i].Expanded = vm.ExpandedUserProgress.indexOf(prg[i].UserId) >= 0;\r\n } \r\n\r\n vm.UsersProgress = prg;\r\n }\r\n }\r\n\r\n function GetGoalsForUsers() {\r\n goalService.GetGoalsForUsersInSameUnit().then(GetGoalsForUsersInSameUnitCallback);\r\n\r\n function GetGoalsForUsersInSameUnitCallback(response) {\r\n vm.UserGoals = BizPartCoreHelpers.getResponseValue(response);\r\n }\r\n }\r\n\r\n function ToggleUserProgressExpanded(progressItem) {\r\n progressItem.Expanded = !progressItem.Expanded;\r\n if (progressItem.Expanded) {\r\n if (vm.ExpandedUserProgress.indexOf(progressItem.UserId) < 0) {\r\n vm.ExpandedUserProgress.push(progressItem.UserId);\r\n }\r\n } else {\r\n var index = vm.ExpandedUserProgress.indexOf(progressItem.UserId);\r\n if (index >= 0) {\r\n vm.ExpandedUserProgress.splice(index, 1);\r\n }\r\n }\r\n\r\n vm.StoreUserProgressExpandStatus();\r\n }\r\n\r\n function StoreUserProgressExpandStatus() {\r\n setLocalStorage(vm.ExpandStatusStorageKey, JSON.stringify(vm.ExpandedUserProgress));\r\n }\r\n\r\n function RetrieveUserProgressExpandStatus() {\r\n var data = getLocalStorage(vm.ExpandStatusStorageKey);\r\n if (data) {\r\n vm.ExpandedUserProgress = JSON.parse(data);\r\n }\r\n }\r\n\r\n vm.$onInit = function () { \r\n vm.RetrieveUserProgressExpandStatus();\r\n vm.GetCurrentProgress();\r\n vm.GetGoalsForUsers();\r\n }\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.event', indexController);\t\r\n\tangular.module('bizPartEngage').controller('modules.events', listController);\t\r\n\r\n\t//indexController.$inject = [\"modules.event.service\", \"bizContainerSettings\", \"$stateParams\", \"bizContainerModuleEventListService\"];\r\n\tindexController.$inject = [\"$stateParams\"];\r\n\tlistController.$inject = [\"$stateParams\"];\r\n\r\n\tfunction indexController($stateParams) {\r\n\t\tvar vm = this;\r\n\t\tvm.EventId = ~~$stateParams.id\r\n\t}\r\n\r\n\tfunction listController($stateParams) {\r\n\t\tvar vm = this;\r\n\t\tvm.EventFilter = $stateParams.filter;\r\n\t}\r\n\r\n\t//function indexController(eventService, bizContainerSettings, $stateParams, bizContainerModuleEventListService) {\r\n\t//\tvar vm = this;\r\n\r\n\t//\tvm.Event = {};\r\n\t//\tvm.GetEvent = GetEvent;\r\n\t//\tvm.EventId = ~~$stateParams.id;\r\n\t//\tvm.IsLoggedIn = false;\r\n\t//\tvm.IsInFuture = IsInFuture;\r\n\t//\tvm.IsToday = IsToday;\r\n\t//\tvm.ChangeStatus = ChangeStatus;\r\n\t//\tvm.IsAllowedToBook = IsAllowedToBook;\r\n\t//\tvm.IsAllowedToCancel = IsAllowedToCancel;\r\n\t//\tvm.Email = '';\r\n\t//\tvm.Cancel = '';\r\n\r\n\t//\tfunction GetEvent() {\r\n\t//\t\tvm.DataLoaded = false;\r\n\t//\t\teventService.GetOneEvent(vm.EventId).then(GetEventSuccess);\r\n\r\n\t//\t\tfunction GetEventSuccess(response) {\r\n\t//\t\t\tvm.DataLoaded = true;\r\n\t//\t\t\tvm.Event = response.data;\r\n\r\n\t//\t\t\tif (bizContainerSettings[\"CurrentUserId\"] > 0) {\r\n\t//\t\t\t\tvm.IsLoggedIn = true;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tfunction IsAllowedToBook(event) {\r\n\t//\t\tif (!vm.DataLoaded) {\r\n\t//\t\t\treturn false;\r\n\t//\t\t}\r\n\t//\t\tif (event.ParticipantCount < event.MaxParticipants\r\n\t//\t\t\t&& (event.UserStatus == 4 || event.UserStatus == 0)\r\n\t//\t\t\t&& vm.IsInFuture(event.RSVPDateTimeUtc) == true) {\r\n\t//\t\t\treturn true;\r\n\t//\t\t}\r\n\r\n\t//\t\treturn false;\r\n\t//\t}\r\n\r\n\t//\tfunction IsAllowedToCancel(event) {\r\n\t//\t\tif (!vm.DataLoaded) {\r\n\t//\t\t\treturn false;\r\n\t//\t\t}\r\n\t//\t\tif (event.UserStatus == 3 && vm.IsInFuture(event.RSVPDateTimeUtc) == true) {\r\n\t//\t\t\treturn true;\r\n\t//\t\t}\r\n\t//\t\treturn false;\r\n\t//\t}\r\n\r\n\t//\tfunction IsToday(datetimeUtc) {\r\n\t//\t\tif (vm.DataLoaded) {\r\n\t//\t\t\tif (moment(datetimeUtc).isSame(moment.utc(), 'day')) {\r\n\t//\t\t\t\treturn true;\r\n\t//\t\t\t}\r\n\t//\t\t\telse {\r\n\t//\t\t\t\treturn false;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tfunction IsInFuture(datetimeUtc) {\r\n\t//\t\tif (vm.DataLoaded) {\r\n\t//\t\t\tif (moment(datetimeUtc).isAfter(moment.utc())) {\r\n\t//\t\t\t\treturn true;\r\n\t//\t\t\t}\r\n\t//\t\t\telse {\r\n\t//\t\t\t\treturn false;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tfunction ChangeStatus(event, newStatus) {\r\n\r\n\t//\t\tif (bizContainerSettings[\"CurrentUserId\"] > 0) {\r\n\t\t\t\t\r\n\t//\t\t}\r\n\t//\t\telse {\r\n\t//\t\t\tif (vm.Email != '' && vm.Email.indexOf('@')) { // TODO some kind of validation.\r\n\r\n\t//\t\t\t}\r\n\t//\t\t\telse {\r\n\t//\t\t\t\treturn;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\r\n\t//\t\tbizContainerModuleEventListService.UpdateParticipationStatus(event.Id, newStatus, vm.Email, vm.Comment).then(UpdateParticipationStatusSuccess);\r\n\t//\t}\r\n\r\n\t//\tfunction UpdateParticipationStatusSuccess(response) {\r\n\t//\t\tvar result = (response.data.d || response.data);\r\n\t//\t\tvm.GetEvent();\r\n\t//\t}\r\n\r\n\t//\tvm.$onInit = function () {\r\n\t//\t\tvm.GetEvent();\r\n\t//\t}\r\n\t//}\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.event.service', eventService);\r\n\r\n\teventService.$inject = [\"$http\"];\r\n\r\n\tfunction eventService($http) {\r\n\t\tthis.GetOneEvent = function (id) {\r\n\t\t\treturn $http.get(siteRootPath + 'api/event/GetOneEventForUser?' + $.param({ eventId: id }));\r\n\t\t};\r\n\r\n\t\tthis.UpdateParticipationStatus = function (eventId, newStatus, email, comment) {\r\n\t\t\treturn $http.post(getServicePath() + 'UpdateParticipationStatus', {\r\n\t\t\t\tEventId: eventId,\r\n\t\t\t\tStatus: newStatus,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tComment: comment\r\n\t\t\t}, {\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tIgnoreLoader: true\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n})(window.angular);\r\n","angular.module('bizFormly').controller('questionFreetextController', questionFreetextController);\r\nangular.module('bizFormly').controller('questionController', questionController);\r\nangular.module('bizFormly').controller('questionScaleController', questionScaleController);\r\nangular.module('bizFormly').controller('questionYesNoController', questionYesNoController);\r\n\r\nquestionFreetextController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\"];\r\nquestionController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\"];\r\nquestionScaleController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\"];\r\nquestionYesNoController.$inject = [\"$rootScope\", \"$scope\", \"bizCoreService\", \"$timeout\"];\r\n\r\nfunction questionFreetextController($rootScope, $scope, bizCoreService) {\r\n var vm = this;\r\n}\r\n\r\nfunction questionController($rootScope, $scope, bizCoreService) {\r\n\r\n $scope.SetSelectedValues = function(){\r\n \t$scope.model[$scope.options.key] = $scope.options.data.options.GetItemsByValue('selected', true).GetValues('Id').join();\r\n }\r\n\r\n $scope.GetOptionTranslation = function (option) {\r\n var cultureId = $rootScope.LoggedInUser.CultureId;\r\n var translation = option.NameTranslations.GetItemByValue('CultureId', cultureId);\r\n if (!translation) {\r\n translation = {\r\n ObjectId: option.id,\r\n CultureId: cultureId,\r\n Type: '',\r\n Value: \"\"\r\n };\r\n }\r\n return translation;\r\n }\r\n\r\n}\r\n\r\nfunction questionScaleController($rootScope, $scope, bizCoreService) {\r\n var field = $scope.fields.GetItemByValue(\"key\", $scope.options.key);\r\n\r\n if (!field.data.options) {\r\n \tfield.data.options = [];\r\n }\r\n\r\n $scope.GetOptionTranslation = function (option) {\r\n var cultureId = $rootScope.LoggedInUser.CultureId;\r\n\r\n var translation = option.NameTranslations.GetItemByValue('CultureId', cultureId);\r\n if (!translation) {\r\n translation = {\r\n ObjectId: option.id,\r\n CultureId: cultureId,\r\n Type: '',\r\n Value: \"\"\r\n };\r\n }\r\n return translation;\r\n }\r\n}\r\n\r\nfunction questionYesNoController($rootScope, $scope, bizCoreService, $timeout) {\r\n var field = $scope.fields.GetItemByValue(\"key\", $scope.options.key);\r\n\r\n if (!field.data.options) {\r\n \tfield.data.options = [];\r\n\r\n \tfield.data.options.push({\r\n FormFieldId: field.Id, Name: \"\", Value: 'false', NameTranslations: [{\r\n FieldKey: field.key,\r\n CultureId: 1,\r\n Type: 'option',\r\n Value: \"Yes\"\r\n }, {\r\n FieldKey: field.key,\r\n CultureId: 2,\r\n Type: 'option',\r\n Value: \"Yes\"\r\n }]\r\n });\r\n \tfield.data.options.push({\r\n FormFieldId: field.Id, Name: \"\", Value: 'false', NameTranslations: [{\r\n FieldKey: field.key,\r\n CultureId: 1,\r\n Type: 'option',\r\n Value: \"No\"\r\n }, {\r\n FieldKey: field.key,\r\n CultureId: 2,\r\n Type: 'option',\r\n Value: \"No\"\r\n }]\r\n });\r\n }\r\n $scope.GetOptionTranslation = function (option) {\r\n var cultureId = $rootScope.LoggedInUser.CultureId;\r\n\r\n var translation = option.NameTranslations.GetItemByValue('CultureId', cultureId);\r\n if (!translation) {\r\n translation = {\r\n ObjectId: option.id,\r\n CultureId: cultureId,\r\n Type: '',\r\n Value: \"\"\r\n };\r\n }\r\n return translation;\r\n }\r\n}\r\n\r\n\r\nvar evt = document.createEvent(\"CustomEvent\");\r\nevt.initCustomEvent(\"FORMS_PLUGIN_QUESTIONS_INIT\", true, true, { Key: \"QUESTIONS\" });\r\nwindow.dispatchEvent(evt);","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.forums', forumsController);\r\n angular.module('bizPartEngage').controller('modules.forum', forumController);\r\n angular.module('bizPartEngage').controller('modules.forum.thread', forumThreadController);\r\n\r\n forumsController.$inject = [\"$rootScope\", \"modules.forum.service\", \"$state\"];\r\n forumController.$inject = [\"$rootScope\", \"modules.forum.service\", \"$stateParams\", \"$state\"];\r\n forumThreadController.$inject = [\"$rootScope\", \"modules.forum.service\", \"$stateParams\", \"$mdDialog\", \"$translate\", \"bizUser\", \"bizCore\"];\r\n\r\n function forumsController($rootScope, forumService, $state) {\r\n var vm = this;\r\n vm.Forums = [];\r\n\r\n vm.GetForums = GetForums;\r\n vm.GoToForum = GoToForum;\r\n\r\n function GetForums() {\r\n forumService.GetForums().then(GetForumsSuccess);\r\n\r\n function GetForumsSuccess(response) {\r\n vm.Forums = response.data;\r\n }\r\n }\r\n\r\n function GoToForum(forum) {\r\n $state.go(\"base.modules.forum\", {id: forum.Id});\r\n }\r\n\r\n function Init() {\r\n vm.GetForums();\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n\r\n function forumController($rootScope, forumService, $stateParams, $state) {\r\n var vm = this;\r\n vm.ForumId = ~~$stateParams.id;\r\n vm.Forum = {\r\n Threads: []\r\n };\r\n\r\n vm.GetForum = GetForum;\r\n vm.GoToThread = GoToThread;\r\n\r\n function GetForum() {\r\n forumService.GetForum(vm.ForumId).then(GetForumSuccess);\r\n\r\n function GetForumSuccess(response) {\r\n vm.Forum = response.data;\r\n }\r\n }\r\n\r\n function GoToThread(thread) {\r\n $state.go(\"base.modules.forumthread\", {id: thread.Id});\r\n }\r\n\r\n function Init() {\r\n if(vm.ForumId > 0) {\r\n vm.GetForum();\r\n }\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n\r\n function forumThreadController($rootScope, forumService, $stateParams, $mdDialog, $translate, bizUserProvider, bizCoreProvider) {\r\n var vm = this;\r\n vm.ThreadId = ~~$stateParams.id;\r\n vm.Thread = {};\r\n vm.Post = {\r\n ForumThreadId: vm.ThreadId,\r\n UserId: bizUserProvider.getLoggedInUser().Id,\r\n Text: \"\"\r\n };\r\n\r\n vm.GetThread = GetThread;\r\n vm.SubmitPost = SubmitPost;\r\n vm.EditPost = EditPost;\r\n vm.DeletePost = DeletePost;\r\n vm.ThreadRead = ThreadRead;\r\n\r\n function GetThread() {\r\n if(vm.ThreadId > 0) {\r\n forumService.GetThread(vm.ThreadId).then(GetThreadSuccess);\r\n }\r\n\r\n function GetThreadSuccess(response) {\r\n vm.Thread = response.data;\r\n }\r\n }\r\n\r\n function SubmitPost(post) {\r\n forumService.SubmitPost(post).then(SubmitPostSuccess);\r\n\r\n function SubmitPostSuccess(response) {\r\n //Vi sätter tråden till läst när man postar i den. \r\n vm.ThreadRead();\r\n if(response.data.Success == true && ~~post.Id <= 0) {\r\n vm.Thread.ThreadEntrys.push(response.data.ExtraInfo);\r\n\r\n vm.Post = {\r\n ForumThreadId: vm.ThreadId,\r\n UserId: $rootScope.LoggedInUser.Id,\r\n Text: \"\"\r\n };\r\n }\r\n else if(~~post.Id > 0) {\r\n post.IsEditing = false;\r\n console.log('Saved post successfully!');\r\n }\r\n else {\r\n console.error(response.data.Message);\r\n }\r\n }\r\n }\r\n\r\n function EditPost(post) {\r\n post.IsEditing = true;\r\n }\r\n\r\n function DeletePost(post) {\r\n $translate('FORUM.ASKDELETEPOST').then(function (translation) {\r\n $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n controller: deletePostController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n Text: translation\r\n },\r\n bindToController: true\r\n }).then(function (response) {\r\n if(response) {\r\n forumService.DeletePost(post.Id).then(DeletePostSuccess);\r\n }\r\n });\r\n });\r\n\r\n function DeletePostSuccess(response) {\r\n if(response.data.Success) {\r\n vm.Thread.ThreadEntrys.splice(vm.Thread.ThreadEntrys.indexOf(post), 1);\r\n }\r\n }\r\n }\r\n\r\n deletePostController.$inject = [\"$mdDialog\"];\r\n\r\n function deletePostController($mdDialog) {\r\n var vm = this;\r\n\r\n vm.Close = Close;\r\n vm.Ok = Ok;\r\n\r\n function Close() {\r\n $mdDialog.cancel();\r\n }\r\n\r\n function Ok() {\r\n $mdDialog.hide(true);\r\n }\r\n }\r\n\r\n function ThreadRead() {\r\n if (~~bizUserProvider.getLoggedInUser().Id > 0 && ~~vm.ThreadId > 0) {\r\n forumService.ThreadRead(vm.ThreadId);\r\n }\r\n }\r\n\r\n function Init() {\r\n vm.GetThread();\r\n vm.ThreadRead();\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.forum.service', forumService);\r\n\r\n forumService.$inject = [\"$http\"];\r\n\r\n function forumService($http) {\r\n this.GetForums = function() {\r\n return $http.get(siteRootPath + \"api/forum/GetForums\");\r\n };\r\n\r\n this.GetForum = function(id) {\r\n return $http.get(siteRootPath + \"api/forum/GetForum?\" + $.param({id: id}));\r\n };\r\n\r\n this.GetThread = function(id) {\r\n return $http.get(siteRootPath + \"api/forum/GetThread?\" + $.param({ id: id }));\r\n };\r\n\r\n this.SubmitPost = function(post) {\r\n return $http.post(siteRootPath + \"api/forum/SubmitPost\", post);\r\n };\r\n\r\n this.DeletePost = function(id) {\r\n return $http.delete(siteRootPath + \"api/forum/DeletePost?\" + $.param({ id: id }));\r\n };\r\n\r\n this.ThreadRead = function(threadId) {\r\n return $http.get(siteRootPath + \"api/forum/ThreadRead?\" + $.param({ threadId: threadId }));\r\n };\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.journey', journeyController);\r\n\r\n journeyController.$inject = [];\r\n\r\n function journeyController() {\r\n var vm = this;\r\n vm.IsJourneyLocked = IsPortalSettingTrue('IsJourneyLocked');\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.masterrun', masterrunController);\r\n\r\n masterrunController.$inject = [\"$filter\", \"bizUser\"];\r\n\r\n function masterrunController($filter, bizUser) {\r\n var vm = this;\r\n vm.MasterRunUrl = undefined;\r\n\r\n function Init() {\r\n if(isMobile.any()) {\r\n vm.MasterRunUrl = $filter('siteroot')(\"MasterRunMobile/index.html?session=\" + getBizPartAuthToken());\r\n }\r\n else {\r\n vm.MasterRunUrl = $filter('siteroot')(\"MasterRun/index.html?session=\" + getBizPartAuthToken());\r\n }\r\n }\r\n\r\n this.$onInit = Init;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').controller('modules.media', mediaController);\r\n angular.module('bizPartEngage').controller('modules.mediatags', mediatagsController);\r\n\r\n mediaController.$inject = [\"$rootScope\", \"modules.media.service\", \"$stateParams\", \"$state\", \"container\", \"$timeout\", \"$mdDialog\", \"MetadataService\",\r\n \"$filter\", \"bizCoreService\", \"$q\", \"$translate\", \"bizEngageService\", \"core.engage.service\", \"$scope\", \"$sce\"];\r\n mediatagsController.$inject = [\"modules.media.service\", \"$stateParams\", \"$state\", \"container\", \"$timeout\", \"$mdDialog\", \"MetadataService\", \"$filter\", \"bizCoreService\", \"$translate\", \"$rootScope\", \"$q\", \"bizEngageService\"];\r\n\r\n function mediaController($rootScope, mediaService, $stateParams, $state, container, $timeout, $mdDialog, MetadataService, $filter, bizCoreService,\r\n $q, $translate, bizEngageService, engageService, $scope, $sce) {\r\n var vm = this;\r\n vm.MediaFiles = [];\r\n vm.MediaFileTypes = [];\r\n vm.SelectedTypes = [];\r\n\r\n vm.playClicked = false;\r\n vm.VideoPlaying = false;\r\n vm.Extended = false;\r\n vm.LikedExtended = false;\r\n vm.SeenExtended = false;\r\n vm.showLatest = false;\r\n vm.showMostLiked = false;\r\n vm.showMostViewed = false;\r\n vm.showMostCommented = false;\r\n vm.showRelated = false;\r\n vm.useJourneyOrder = journeySettings?.UseJourneyOrderInLists?.GetItemByValue('Key', 3)?.Value || false;\r\n\r\n vm.EventSource = \"MEDIA\";\r\n\r\n vm.fileId = ~~$stateParams.id;\r\n\r\n\t\tif (!vm.fileId)\r\n\t\t\tvm.fileUrlRewrite = $stateParams.id;\r\n\r\n vm.OnInit = OnInit;\r\n vm.OnPlay = OnPlay;\r\n vm.OnEnded = OnEnded;\r\n vm.GetMediaFiles = GetMediaFiles;\r\n vm.GetMediaFileTypes = GetMediaFileTypes;\r\n vm.GetFileImage = GetFileImage;\r\n vm.ToggleMediaTypes = ToggleMediaTypes;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.GetShowingSettings = GetShowingSettings;\r\n vm.InitSlick = InitSlick;\r\n vm.GetOneMediaFile = GetOneMediaFile;\r\n vm.GetRelatedMediaFiles = GetRelatedMediaFiles;\r\n vm.FilterLiked = FilterLiked;\r\n vm.GetYoutubeEmbedUrl = GetYoutubeEmbedUrl;\r\n vm.FilterAlreadyVisibleFiles = FilterAlreadyVisibleFiles;\r\n vm.PauseVideo = PauseVideo;\r\n vm.PlayVideo = PlayVideo;\r\n vm.PlayYoutube = PlayYoutube\r\n vm.YoutubePlayer = YoutubePlayer;\r\n vm.player;\r\n vm.GetFileTypeTranslations = GetFileTypeTranslations;\r\n vm.NavigateToMediaFile = NavigateToMediaFile; \r\n\r\n function GetFileTypeTranslations(type) {\r\n if (!type)\r\n return;\r\n\r\n var value = type.FileType;\r\n var translation = type.NameOverrideTranslations.GetItemByValue('CultureId', $rootScope.LoggedInUser.CurrentCultureId);\r\n\r\n if (translation) {\r\n value = translation.Value;\r\n }\r\n \r\n return value;\r\n }\r\n \r\n function GetShowingSettings() {\r\n var settings = [];\r\n settings.push('showLatest');\r\n settings.push('showMostLiked');\r\n settings.push('showMostViewed');\r\n settings.push('showMostCommented');\r\n settings.push('showRelated');\r\n\r\n mediaService.GetGenericSettings(settings).then(LoadSettingsDone);\r\n\r\n function LoadSettingsDone(response) {\r\n console.log(\"LoadSettingsDone\", response);\r\n vm.showLatest = (response.data.GetItemByValue('Key', 'showLatest').Value == 'true' ? true : false);\r\n vm.showMostLiked = (response.data.GetItemByValue('Key', 'showMostLiked').Value == 'true' ? true : false);\r\n vm.showMostViewed = (response.data.GetItemByValue('Key', 'showMostViewed').Value == 'true' ? true : false);\r\n vm.showMostCommented = (response.data.GetItemByValue('Key', 'showMostCommented').Value == 'true' ? true : false);\r\n vm.showRelated = (response.data.GetItemByValue('Key', 'showRelated').Value == 'true' ? true : false);\r\n }\r\n }\r\n\r\n function PauseVideo() {\r\n \tvm.VideoPlaying = false;\r\n \tvar video = angular.element('#video-module-' + vm.MediaFile.Id);\r\n \tvideo[0].pause();\r\n }\r\n\r\n function PlayYoutube() { \r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tif (vm.player) {\r\n \t\tvar fn = function () { vm.player.playVideo(); }\r\n \t\tsetTimeout(fn, 1000);\r\n \t}\r\n }\r\n\r\n function PlayVideo() {\r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tvar video = angular.element('#video-module-' + vm.MediaFile.Id);\r\n \tif (vm.VideoEnded) {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].pause();\r\n \t\t\tvideo[0].currentTime = '0';\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n \telse {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function YoutubePlayer(videoId) { \r\n \tvar id = \"youtube-\" + vm.MediaFile.Id;\r\n \tif (window.matchMedia(\"(min-width: 720px)\").matches) {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t} else {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\theight: '100%',\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n }\r\n\r\n \t// Youtube player change event...\r\n function onPlayerStateChange(event) {\r\n \r\n \tif (event.data === -1) {\r\n \t\tvm.OnPlay();\r\n \t}\r\n \telse if (event.data === 0) {\r\n \t\tvm.VideoEnded = true;\r\n \t\tvm.OnEnded();\r\n \t}\r\n \telse if (event.data === 3) {\r\n \t\t// pause\r\n \t}\r\n }\r\n\r\n function FilterAlreadyVisibleFiles(file) {\r\n if (file == undefined || vm.MediaFile == undefined) {\r\n return false;\r\n }\r\n\r\n \t// remove other types?\r\n \tif (file.Type != vm.MediaFile.Type) {\r\n \t\treturn false;\r\n \t}\r\n\r\n \t// remove current viewed file\r\n \tif (file.Id == vm.MediaFile.Id) {\r\n \t\treturn false;\r\n \t}\r\n\r\n\t\t\t// remove related files\r\n \tif (vm.RelatedMediaFiles) {\r\n \t\tfor (var i = 0; i < vm.RelatedMediaFiles.length; i++) {\r\n \t\t\tif (file.Id == vm.RelatedMediaFiles[i].Id) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n \t\t\r\n \treturn true;\r\n }\r\n\r\n function FilterLiked(a)\r\n {\r\n if (a.LikeActions.length == 1)\r\n return a.LikeActions[0].Count;\r\n\r\n if (a.LikeActions.length > 1)\r\n return TotalLikeActions(a);\r\n\r\n return 0;\r\n }\r\n\r\n function OnInit(source) { \r\n \tbizCoreService.EventInit(vm.MediaFile.Id, 14, vm.EventSource);\r\n\r\n \tif (vm.MediaFile.Type == 1 && vm.VideoType == vm.VideoTypes.Youtube) {\r\n \t\tsetTimeout(function () {\r\n \t\t\tvm.YoutubePlayer(GetYoutubeId(vm.MediaFile.FileUrl));\r\n \t\t}, 0)\r\n \t}\r\n }\r\n\r\n function OnPlay() { \r\n \tvm.playClicked = true;\r\n \tbizCoreService.EventStart(vm.MediaFile.Id, 12, vm.EventSource);\r\n }\r\n\r\n function OnEnded() { \r\n \tbizCoreService.EventEnd(vm.MediaFile.Id, 13, vm.EventSource);\r\n }\r\n\r\n function GetFileImage(file)\r\n {\r\n switch(file.Type) {\r\n case 1:\r\n return file.Thumbnail;\r\n case 2:\r\n return file.FileUrl;\r\n default:\r\n return file.Thumbnail;\r\n }\r\n }\r\n\r\n function ToggleMediaTypes(typeId) {\r\n if (vm.SelectedTypes.indexOf(typeId) > -1)\r\n vm.SelectedTypes.splice(vm.SelectedTypes.lastIndexOf(typeId), 1)\r\n else\r\n vm.SelectedTypes.push(typeId);\r\n\r\n if (vm.SelectedTypes.length == 0) {\r\n for (var i = 0; i < vm.MediaFileTypes.length; i++) {\r\n vm.SelectedTypes.push(vm.MediaFileTypes[i].Id);\r\n }\r\n }\r\n\r\n vm.GetMediaFiles(vm.SelectedTypes, [], false, true);\r\n }\r\n\r\n function PerformLikeAction(item, action) {\r\n \tif (!action.LikeActionPerformedByUser) {\r\n mediaService.AddLikeActionToMediaFile(item.Id, action.Action.Id).then(AddLikeActionToMediaFileSuccess);\r\n }\r\n\r\n \tfunction AddLikeActionToMediaFileSuccess(response) {\r\n \t action.LikeActionPerformedByUser = true;\r\n \t action.Count++;\r\n\r\n \t var totalCount = 0;\r\n \t var totalValue = 0;\r\n\r\n \t for (var i = 0; i < item.LikeActions.length; i++) {\r\n \t totalCount += item.LikeActions[i].Count;\r\n \t totalValue += item.LikeActions[i].Action.Value * item.LikeActions[i].Count;\r\n \t }\r\n\r\n \t item.AverageLikeValue = totalValue / totalCount;\r\n \t}\r\n }\r\n\r\n function GetLikeActionsByValue(entry, positive) {\r\n var result = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n if ((positive && entry.LikeActions[i].Action.Value > 0) || (!positive && entry.LikeActions[i].Action.Value < 0)) {\r\n result += entry.LikeActions[i].Count;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function TotalLikeActions(entry) {\r\n var count = 0;\r\n for (var i = 0; i < entry.LikeActions.length; i++) {\r\n count += entry.LikeActions[i].Count;\r\n }\r\n return count;\r\n }\r\n\r\n function GetOneMediaFile(fileId, urlRewrite) {\r\n \tbizEngageService.GetObject(fileId > 0 ? fileId : urlRewrite, bizEngageService.Types.MediabankFile, true)\r\n\t\t\t\t.then(GetOneMediaFileSuccess);\r\n\r\n function GetOneMediaFileSuccess(response) {\r\n vm.MediaFile = response.data;\r\n \r\n if (vm.MediaFile.Tags && vm.showRelated) {\r\n var tagIds = [];\r\n for (var i = 0; i < vm.MediaFile.Tags.length; i++)\r\n {\r\n tagIds.push(vm.MediaFile.Tags[i].Id);\r\n }\r\n vm.GetRelatedMediaFiles(tagIds); \r\n }\r\n\r\n MetadataService.setMetaTags({\r\n title: vm.MediaFile.Name,\r\n description: vm.MediaFile.Description,\r\n img: vm.MediaFile.Thumbnail\r\n });\r\n \r\n if (vm.MediaFile.Type == 1) {\r\n vm.VideoTypes = {\r\n Native: 1,\r\n Youtube: 2,\r\n Vimeo: 3\r\n };\r\n\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = vm.MediaFile.FileUrl.match(regExp);\r\n if (match) {\r\n vm.VideoType = vm.VideoTypes.Youtube;\r\n }\r\n else {\r\n vm.VideoType = vm.VideoTypes.Native;\r\n }\r\n }\r\n\r\n OnInit('GetOneMediaFileSuccess');\r\n }\r\n }\r\n\r\n function GetYoutubeEmbedUrl(url) {\r\n \treturn \"https://www.youtube.com/embed/\" + GetYoutubeId(url); // ?autoplay=1&controls=0\r\n }\r\n\r\n function GetYoutubeId(url) {\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = url.match(regExp);\r\n\r\n if (match && match[2].length == 11) {\r\n return match[2];\r\n } else {\r\n return 'error';\r\n }\r\n }\r\n\r\n function InitSlick(overrideToShow) {\r\n vm.SlickLoaded = false;\r\n vm.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: overrideToShow || 4,\r\n slidesToScroll: overrideToShow || 4,\r\n customPaging: function () {\r\n return '';\r\n },\r\n responsive: [{\r\n breakpoint: 960,\r\n settings: {\r\n slidesToShow: vm.SlickOverrideResponsiveSlides || 2,\r\n slidesToScroll: vm.SlickOverrideResponsiveSlides || 2,\r\n }\r\n }]\r\n }\r\n $timeout(function () {\r\n vm.SlickLoaded = true;\r\n });\r\n }\r\n\r\n function GetRelatedMediaFiles(tagIds) {\r\n mediaService.GetMediaFiles([], tagIds, true).then(GetRelatedMediaFilesSuccess);\r\n function GetRelatedMediaFilesSuccess(response) {\r\n vm.RelatedMediaFiles = response.data;\r\n vm.InitSlick();\r\n }\r\n }\r\n\r\n function GetMediaFiles() {\r\n \r\n if (vm.SelectedTypes.length) {\r\n mediaService.GetMediaFiles(vm.SelectedTypes, [], false, true, vm.useJourneyOrder).then(GetMediaFilesSuccess);\r\n }\r\n else {\r\n vm.MediaFiles = [];\r\n vm.DataLoaded = true;\r\n console.error('No mediabank file types selected to show here...');\r\n }\r\n\r\n function GetMediaFilesSuccess(response) {\r\n vm.ItemsFetched = true;\r\n vm.MediaFiles = response.data;\r\n vm.DataLoaded = true;\r\n vm.InitSlick(2);\r\n }\r\n }\r\n\r\n function GetMediaFileTypes() {\r\n mediaService.GetMediaFileTypes().then(GetMediaFileTypesSuccess);\r\n function GetMediaFileTypesSuccess(response) {\r\n vm.MediaFileTypes = response.data;\r\n for (var i = 0; i < vm.MediaFileTypes.length; i++) {\r\n vm.SelectedTypes.push(vm.MediaFileTypes[i].Id);\r\n }\r\n vm.GetMediaFiles([], [], false, true);\r\n \t}\r\n }\r\n\r\n function NavigateToMediaFile(file) {\r\n return $state.go(\"base.modules.mediafile\", { id: file.UrlRewrite || file.Id });\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['MEDIA.META.TITLE', 'MEDIA.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['MEDIA.META.TITLE'],\r\n description: translations['MEDIA.META.DESCRIPTION']\r\n })\r\n }); \r\n\r\n vm.GetShowingSettings();\r\n vm.GetMediaFileTypes();\r\n \tif (!vm.fileId && !vm.fileUrlRewrite) {\r\n \r\n //vm.InitSlick();\r\n }\r\n else\r\n vm.GetOneMediaFile(vm.fileId, vm.fileUrlRewrite);\r\n\r\n bizEngageService.GetMiniJourneySetting('MediabankFile').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }); \r\n\r\n //disabled until vm.VideoEnded works properly, probably something to do with mediaplayer-directive that is used, need to connect the on-played-method, but cant get it to work...\r\n //$scope.$on(\"$destroy\", function () { \r\n // if (vm.MediaFile && vm.MediaFile.Type == 1 && !vm.VideoEnded) { \r\n // engageService.HandleEngageObjectCancelled(vm.MediaFile.Id, 'MediabankFile');//fire and forget\r\n // }\r\n //});\r\n }\r\n\r\n function mediatagsController(mediaService, $stateParams, $state, container, $timeout, $mdDialog, MetadataService, $filter, bizCoreService, $translate, $rootScope, $q, bizEngageService) {\r\n var vm = this;\r\n\r\n vm.tagId = ~~$stateParams.tagId;\r\n vm.tagSystemName = $stateParams.tagSystemName;\r\n vm.fileId = $stateParams.fileId;\r\n vm.defaultFileTypes = $stateParams.fileTypes;\r\n vm.setFirstSelected = $stateParams.setFirstSelected;\r\n \r\n vm.EventSource = \"MEDIA\";\r\n\r\n vm.playClicked = false; // TODO: Same as vm.VideoPlaying\r\n vm.MediaFiles = [];\r\n vm.MediaFileTypes = [];\r\n if (!vm.defaultFileTypes) {\r\n \tvm.defaultFileTypes = [];\r\n }\r\n\r\n vm.OnInit = OnInit;\r\n vm.OnPlay = OnPlay;\r\n vm.OnEnded = OnEnded;\r\n vm.VideoPlaying = false;\r\n\r\n vm.SelectedFile = undefined;\r\n vm.GetMediaFiles = GetMediaFiles;\r\n vm.GetFileImage = GetFileImage;\r\n vm.PerformLikeAction = PerformLikeAction;\r\n vm.GetTag = GetTag;\r\n vm.InitSlick = InitSlick;\r\n vm.SetSelectedFile = SetSelectedFile;\r\n vm.GetMediaFileTypes = GetMediaFileTypes;\r\n vm.GetYoutubeEmbedUrl = GetYoutubeEmbedUrl;\r\n vm.FilterAlreadyVisibleFiles = FilterAlreadyVisibleFiles;\r\n vm.FilterByTag = FilterByTag;\r\n vm.NavigateToMediaFileForTag = NavigateToMediaFileForTag;\r\n vm.PauseVideo = PauseVideo;\r\n vm.PlayVideo = PlayVideo;\r\n vm.PlayYoutube = PlayYoutube\r\n vm.YoutubePlayer = YoutubePlayer;\r\n vm.player;\r\n vm.GetFileTypeTranslations = GetFileTypeTranslations;\r\n\r\n function GetFileTypeTranslations(type) {\r\n if (!type.FileType)\r\n return;\r\n\r\n var value = type.FileType;\r\n var translation = type.NameOverrideTranslations.GetItemByValue('CultureId', $rootScope.LoggedInUser.CurrentCultureId);\r\n\r\n if (translation) {\r\n value = translation.Value;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n function PauseVideo() {\r\n \tvm.VideoPlaying = false;\r\n \tvar video = angular.element('#video-module-' + vm.SelectedFile.Id);\r\n \tvideo[0].pause();\r\n }\r\n\r\n function PlayYoutube() {\r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tif (vm.player) {\r\n \t\tvar fn = function () { vm.player.playVideo(); }\r\n \t\tsetTimeout(fn, 1000);\r\n \t}\r\n }\r\n\r\n function PlayVideo() { \t\r\n \tvm.VideoPlaying = true;\r\n \tvm.VideoEnded = false;\r\n \tvar video = angular.element('#video-module-' + vm.SelectedFile.Id);\r\n \tif (vm.VideoEnded) {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].pause();\r\n \t\t\tvideo[0].currentTime = '0';\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n \telse {\r\n \t\tif (video.length) {\r\n \t\t\tvideo[0].play();\r\n \t\t\tvm.PlayedVideo = true;\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function YoutubePlayer(videoId) { \r\n \tvar id = \"youtube-\" + vm.SelectedFile.Id;\r\n \tif (window.matchMedia(\"(min-width: 720px)\").matches) {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t} else {\r\n \t\tvm.player = new YT.Player(id, {\r\n \t\t\theight: '100%',\r\n \t\t\twidth: '100%',\r\n \t\t\tvideoId: videoId,\r\n playerVars: { rel: 0 },\r\n \t\t\tevents: {\r\n \t\t\t\t'onStateChange': onPlayerStateChange\r\n \t\t\t}\r\n \t\t});\r\n \t}\r\n }\r\n\r\n \t// Youtube player change event...\r\n function onPlayerStateChange(event) {\r\n \tif (event.data === -1) {\r\n \t\tvm.OnPlay();\r\n \t}\r\n \telse if (event.data === 0) {\r\n \t\tvm.VideoEnded = true;\r\n \t\tvm.OnEnded();\r\n \t}\r\n \telse if (event.data === 3) {\r\n \t\t// pause\r\n \t}\r\n }\r\n\r\n function FilterByTag(file) {\r\n if (vm.tagId > 0 && file.Tags.length > 0) {\r\n \t\tfor (var i = 0; i < file.Tags.length; i++) {\r\n \t\t\tif (file.Tags.length == 0) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n\r\n \t\t\tif (file.Tags[i].Id == vm.tagId) {\r\n // if (vm.tagId == 9 && file.Type != 1) {\r\n \t\t\t\t//\treturn false;\r\n \t\t\t\t//}\r\n \t\t\t\treturn true;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \treturn false;\r\n }\r\n\r\n function FilterAlreadyVisibleFiles(file) {\r\n \t// remove other types?\r\n \tif (file.Type != vm.SelectedFile.Type) {\r\n \t\treturn false;\r\n \t}\r\n\r\n \t// remove current viewed file\r\n \tif (file.Id == vm.SelectedFile.Id) {\r\n \t\treturn false;\r\n \t}\r\n\r\n\t\t\t// remove files with selected tagId\r\n \tif (vm.tagId > 0 && file.Tags.length > 0) {\r\n \t\tfor (var i = 0; i < file.Tags.length; i++) {\r\n \t\t\tif (file.Tags[i].Id == vm.tagId) {\r\n \t\t\t\treturn false;\r\n \t\t\t}\r\n \t\t}\r\n \t}\r\n\r\n \treturn true;\r\n }\r\n\r\n function OnInit() {\r\n \tif (vm.SelectedFile) {\r\n \t\tbizCoreService.EventInit(vm.SelectedFile.Id, 14, vm.EventSource);\r\n\r\n \t\tif (vm.SelectedFile.Type == 1 && vm.VideoType == vm.VideoTypes.Youtube) {\r\n \t\t\tsetTimeout(function () {\r\n \t\t\t\tvm.YoutubePlayer(GetYoutubeId(vm.SelectedFile.FileUrl));\r\n \t\t\t}, 0)\r\n \t\t}\r\n \t}\r\n }\r\n\r\n function OnPlay() {\r\n \tvm.playClicked = true;\r\n \tbizCoreService.EventStart(vm.SelectedFile.Id, 12, vm.EventSource);\r\n }\r\n\r\n function OnEnded() { \r\n \tbizCoreService.EventEnd(vm.SelectedFile.Id, 13, vm.EventSource);\r\n }\r\n\r\n function GetYoutubeEmbedUrl(url) {\r\n \treturn \"https://www.youtube.com/embed/\" + GetYoutubeId(url) + \"?rel=0\"; // + '?autoplay=1' // &controls=0\r\n }\r\n\r\n function GetYoutubeId(url) {\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = url.match(regExp);\r\n\r\n if (match && match[2].length == 11) {\r\n return match[2];\r\n } else {\r\n return 'error';\r\n }\r\n }\r\n\r\n function GetFileImage(file) {\r\n switch (file.Type) {\r\n case 1:\r\n return file.Thumbnail;\r\n break;\r\n case 2:\r\n return file.FileUrl;\r\n break;\r\n case 3:\r\n break;\r\n }\r\n }\r\n\r\n function SetSelectedFile(file) {\r\n \tvm.playClicked = false;\r\n\r\n \tif (!file && vm.fileId) {\r\n\r\n \t\tvar idMatchIndex = -1;\r\n \t\tvar urlRewriteMatchIndex = -1;\r\n \t\tvar isNumeric = ~~vm.fileId;\t\t\t\t\r\n\r\n \t\tfor (var i = 0; i < vm.MediaFiles.length; i++) {\r\n \t\t\tvar urlRewrite = vm.MediaFiles[i].UrlRewrite;\r\n \t\t\tif (urlRewrite) {\r\n \t\t\t\tif (urlRewrite.toLowerCase() == vm.fileId.toLowerCase()) {\r\n \t\t\t\t\turlRewriteMatchIndex = i;\r\n \t\t\t\t}\r\n \t\t\t}\r\n\r\n \t\t\tif (isNumeric) {\r\n \t\t\t\tif (~~vm.fileId == vm.MediaFiles[i].Id) {\r\n \t\t\t\t\tidMatchIndex = i;\r\n \t\t\t\t}\r\n \t\t\t}\r\n \t\t}\r\n\r\n \t\tif (urlRewriteMatchIndex >= 0) {\r\n \t\t\tfile = vm.MediaFiles[urlRewriteMatchIndex];\r\n \t\t} else if (idMatchIndex >= 0) {\r\n \t\t\tfile = vm.MediaFiles[idMatchIndex];\r\n \t\t}\r\n \t}\r\n\r\n \tif (!file && vm.SelectedTag && vm.setFirstSelected)\r\n {\r\n for (var i = 0; i < vm.MediaFiles.length; i++) {\r\n if (FilterByTag(vm.MediaFiles[i]) == true) {\r\n vm.SelectedFile = vm.MediaFiles[i];\r\n break;\r\n }\r\n }\r\n }\r\n else if (file)\r\n {\r\n \tvm.SelectedFile = file;\r\n }\r\n\r\n if (vm.SelectedFile && vm.SelectedFile.Type == 1) {\r\n vm.VideoTypes = {\r\n Native: 1,\r\n Youtube: 2,\r\n Vimeo: 3\r\n };\r\n\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\r\n var match = vm.SelectedFile.FileUrl.match(regExp);\r\n if (match) {\r\n vm.VideoType = vm.VideoTypes.Youtube;\r\n }\r\n else {\r\n vm.VideoType = vm.VideoTypes.Native;\r\n }\r\n }\r\n\r\n OnInit();\r\n\r\n }\r\n\r\n function NavigateToMediaFileForTag(file, state) {\r\n \tvar fileId = file.UrlRewrite;\r\n \tif (!fileId) {\r\n \t\tfileId = file.Id;\r\n \t}\r\n\r\n \tif (!state) {\r\n \t\tstate = \"base.modules.mediatagsfileid\";\r\n\t\t\t}\r\n \treturn $state.go(state, { tagSystemName: vm.tagSystemName, fileId: fileId });\r\n }\r\n\r\n vm.GetMediaFileUrl = GetMediaFileUrl;\r\n\r\n function GetMediaFileUrl(file, state) {\r\n var fileId = file.UrlRewrite;\r\n if (!fileId) {\r\n fileId = file.Id;\r\n }\r\n\r\n if (!state) {\r\n state = \"base.modules.mediatagsfileid\";\r\n }\r\n return $state.href(state, { tagSystemName: vm.tagSystemName, fileId: fileId });\r\n }\r\n\r\n function GetMediaFileTypes() {\r\n mediaService.GetMediaFileTypes().then(GetMediaFileTypesSuccess);\r\n function GetMediaFileTypesSuccess(response) {\r\n vm.MediaFileTypes = response.data;\r\n vm.GetMediaFiles();\r\n }\r\n }\r\n\r\n function InitSlick() {\r\n vm.SlickLoaded = false;\r\n vm.SlickSettings = {\r\n arrows: false,\r\n dots: true,\r\n infinite: false,\r\n slidesToShow: 4,\r\n slidesToScroll: 4,\r\n customPaging: function () {\r\n return '';\r\n },\r\n responsive: [{\r\n breakpoint: 960,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 2,\r\n }\r\n }]\r\n }\r\n $timeout(function () {\r\n vm.SlickLoaded = true;\r\n });\r\n }\r\n\r\n function PerformLikeAction(item, action) {\r\n \tif (!action.LikeActionPerformedByUser) {\r\n mediaService.AddLikeActionToMediaFile(item.Id, action.Action.Id).then(AddLikeActionToMediaFileSuccess);\r\n }\r\n\r\n \tfunction AddLikeActionToMediaFileSuccess(response) {\r\n \t action.LikeActionPerformedByUser = true; // changed from item\r\n \t action.Count++;\r\n\r\n \t var totalCount = 0;\r\n \t var totalValue = 0;\r\n\r\n \t for (var i = 0; i < item.LikeActions.length; i++) {\r\n \t totalCount += item.LikeActions[i].Count;\r\n \t totalValue += item.LikeActions[i].Action.Value * item.LikeActions[i].Count;\r\n \t }\r\n\r\n \t item.AverageLikeValue = totalValue / totalCount;\r\n }\r\n }\r\n\r\n function GetTag() {\r\n var defer = $q.defer();\r\n \tif (vm.tagSystemName) {\r\n \t\tmediaService.GetTagBySystemName(vm.tagSystemName).then(GetTagSuccess); \t\t\r\n \t} else {\r\n \t\tmediaService.GetTag(vm.tagId).then(GetTagSuccess);\r\n \t}\r\n \r\n function GetTagSuccess(response) { \r\n vm.SelectedTag = vm.tagSystemName ? response.data : response.data[0];\r\n if (vm.SelectedTag != null) {\r\n vm.tagId = vm.SelectedTag.Id;\r\n\r\n MetadataService.setMetaTags({\r\n title: vm.SelectedTag.Name,\r\n description: vm.SelectedTag.Description\r\n });\r\n }\r\n\r\n if (response.data == null) {\r\n defer.resolve(false);\r\n }\r\n else {\r\n defer.resolve(response);\r\n }\r\n \r\n vm.SetSelectedFile();\r\n }\r\n\r\n return defer.promise;\r\n }\r\n\r\n function GetMediaFiles() { \t\r\n var tagIds = vm.tagId ? [vm.tagId] : undefined;\r\n mediaService.GetMediaFiles(vm.MediaFileTypes.GetValues('Id'), tagIds, false).then(GetMediaFilesSuccess);\r\n function GetMediaFilesSuccess(response) {\r\n vm.MediaFiles = response.data;\r\n\r\n vm.SetSelectedFile();\r\n vm.InitSlick();\r\n }\r\n }\r\n\r\n angular.element(document).ready(function () {\r\n $translate(['MEDIA.META.TITLE', 'MEDIA.META.DESCRIPTION']).then(function (translations) {\r\n MetadataService.setMetaTags({\r\n title: translations['MEDIA.META.TITLE'],\r\n description: translations['MEDIA.META.DESCRIPTION']\r\n })\r\n });\r\n\r\n GetTag().then(function (response) {\r\n vm.GetMediaFileTypes();\r\n })\r\n\r\n bizEngageService.GetMiniJourneySetting('MediabankFile').then(function (response) {\r\n vm.MiniJourneySettings = response;\r\n });\r\n }); \r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').directive('bizModuleVideoList', bizModuleVideoListDirective);\r\n\r\n bizModuleVideoListDirective.$inject = [];\r\n\r\n function bizModuleVideoListDirective() {\r\n var directive = {\r\n restrict: \"E\",\r\n scope: {\r\n settings: \"=?\"\r\n },\r\n templateUrl: function(element, attr) {\r\n if (attr.templateurl) {\r\n return siteRootPath + attr.templateurl;\r\n } else {\r\n return siteRootPath + \"FrontEnd/Modules/Media/Views/video-list.html\"\r\n }\r\n },\r\n controller: bizModuleVideoListController,\r\n controllerAs: \"vm\",\r\n bindToController: true\r\n };\r\n\r\n bizModuleVideoListController.$inject = [\"$rootScope\", \"modules.media.service\", \"$timeout\", \"$sce\"];\r\n\r\n function bizModuleVideoListController($rootScope, mediaService, $timeout, $sce) {\r\n var vm = this;\r\n vm.Videos = [];\r\n\r\n vm.Init = Init;\r\n\r\n function Init() {\r\n if(!vm.settings.Filter && vm.settings.SelectedFilter) vm.settings.Filter = vm.settings.SelectedFilter.Value;\r\n if(!vm.settings.Limit && vm.settings.SelectedLimit) vm.settings.Limit = vm.settings.SelectedLimit.Value;\r\n \r\n if(vm.settings.Filter == 'newest') {\r\n mediaService.GetMediaFiles([1], null, null, null).then(GetVideosSuccess);\r\n }\r\n else if(vm.settings.Filter == 'journey') {\r\n mediaService.GetMediaFiles([1], $rootScope.FavoriteTagIds, null, null, true).then(GetVideosSuccess);\r\n }\r\n\r\n function GetVideosSuccess(response) {\r\n vm.Videos = response.data;\r\n }\r\n }\r\n\r\n vm.$onInit = vm.Init;\r\n\r\n if (angular.version.major === 1 && angular.version.minor < 5) {\r\n vm.$onInit();\r\n }\r\n }\r\n\r\n return directive;\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').service('modules.media.service', mediaService);\r\n\r\n mediaService.$inject = [\"$http\", \"$rootScope\"];\r\n\r\n function mediaService($http, $rootScope) {\r\n\r\n this.GetMediaFiles = function (fileTypes, tagIds, getRelatedFiles, includeViews, journeyOrder) {\r\n return $http.post(siteRootPath + \"api/MediabankUser/GetMediaBankFilesForUser\",\r\n { FileTypes: fileTypes, TagIds: tagIds, GetRelatedFiles: getRelatedFiles, IncludeViews: includeViews, JourneyOrder: journeyOrder || false });\r\n };\r\n\r\n this.GetGenericSetting = function (key) {\r\n return $http.get(siteRootPath + \"api/mediabankuser/GetGenericSetting?\" + $.param({ key: key }));\r\n };\r\n\r\n this.GetGenericSettings = function (keys) {\r\n return $http.get(siteRootPath + \"api/genericsetting/GetGenericSettings?\" + $.param({ type: 'MEDIABANK', keys: keys }));\r\n };\r\n\r\n this.GetMediaFileTypes = function () {\r\n return $http.get(siteRootPath + \"api/mediabankuser/GetMediaFileTypes\");\r\n };\r\n\r\n this.GetTag = function (id) {\r\n return $http.get(siteRootPath + \"api/generictag/getTags?\" + $.param({ tagIds: id }));\r\n }\r\n this.GetTagBySystemName = function (systemName) {\r\n \treturn $http.get(siteRootPath + \"api/generictag/getTagBySystemName?\" + $.param({ tagSystemName: systemName }));\r\n }\r\n\r\n this.AddLikeActionToMediaFile = function (entryId, actionId) {\r\n return $http.post(siteRootPath + 'api/mediabankuser/AddLikeActionToMediaFile', { objectId: entryId, actionId: actionId }, { ignoreLoadingBar: true });\r\n } \r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n\tangular.module('bizPartEngage').controller('modules.missions', missionsController);\r\n\tangular.module('bizPartEngage').controller('modules.missions.view', missionsViewController);\r\n\tangular.module('bizPartEngage').controller('modules.missions.users', missionsUsersController);\r\n\r\n\tmissionsController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$interval\", \"$translate\", \"MetadataService\"];\r\n\tmissionsViewController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$translate\", \"MetadataService\"];\r\n\tmissionsUsersController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$translate\", \"MetadataService\"];\r\n\r\n\tfunction missionsController(missionsService, $stateParams, $interval, $translate, MetadataService) {\r\n \tvar vm = this;\r\n }\r\n\r\n\tfunction missionsViewController(missionsService, $stateParams, $translate, MetadataService) {\r\n \tvar vm = this;\r\n \tvm.Mission = {};\r\n \tvm.MissionId = ~~$stateParams.id;\r\n \tvm.GetMission = GetMission;\r\n \tvm.GetRuleUrl = GetRuleUrl;\r\n\r\n \tfunction GetRuleUrl(rule) {\r\n\t\t\tvar url = rule.Value.Url.Value;\r\n \t\tif (rule.Value.CompleteId && url != null && url.indexOf(\"#OBJECTID#\") > -1)\r\n\t\t\t\turl = url.replace(\"#OBJECTID#\", rule.Value.CompleteId.Value.Id);\r\n\t\t\t\t\r\n\t\t\tif (rule.Value.CompleteId && url != null && url.indexOf(\"#URLREWRITE#\") > -1)\r\n \t\t\turl = url.replace(\"#URLREWRITE#\", rule.Value.CompleteId.Value.UrlRewrite);\r\n\r\n \t\treturn url;\r\n \t}\r\n\r\n \tfunction GetMission(missionId) {\r\n\t\t\tmissionsService.GetMission(missionId).then(getMissionCallBack);\r\n\r\n \t\tfunction getMissionCallBack(response) {\r\n \t\t\t var mission = response.data;\r\n \t\t\t for (var i = 0; i < mission.Rules.length; i++) {\r\n \t\t\t \tmission.Rules[i].Value = JSON.parse(mission.Rules[i].Value);\r\n \t\t\t}\r\n \t\t\tvm.Mission = mission;\r\n \t\t}\r\n \t}\r\n\r\n \tangular.element(document).ready(function () {\r\n \t vm.GetMission(vm.MissionId);\r\n\r\n \t $translate(['MISSIONS.META.TITLE', 'MISSIONS.META.DESCRIPTION']).then(function (translations) {\r\n \t MetadataService.setMetaTags({\r\n \t title: translations['MISSIONS.META.TITLE'],\r\n \t description: translations['MISSIONS.META.DESCRIPTION']\r\n \t })\r\n \t });\r\n \t});\r\n }\r\n\r\n\tfunction missionsUsersController(missionsService, $stateParams, $translate, MetadataService) {\r\n \tvar vm = this;\r\n \tvm.Users = [];\r\n \tvm.MissionId = ~~$stateParams.id;\r\n \tvm.GetUsers = GetUsers;\r\n \tvm.Back = Back;\r\n\r\n \tfunction GetUsers() {\r\n\t\t\tmissionsService.GetUsers(vm.MissionId).then(function (response) {\r\n \t\t\tvm.Users = response.data;\r\n \t\t});\r\n \t}\r\n\r\n \tfunction Back() {\r\n \t\twindow.history.back();\r\n \t}\r\n\r\n \tangular.element(document).ready(function () {\r\n \t vm.GetUsers();\r\n\r\n \t $translate(['MISSIONS.META.TITLE', 'MISSIONS.META.DESCRIPTION']).then(function (translations) {\r\n \t MetadataService.setMetaTags({\r\n \t title: translations['MISSIONS.META.TITLE'],\r\n \t description: translations['MISSIONS.META.DESCRIPTION']\r\n \t })\r\n \t });\r\n \t});\r\n }\r\n})(window.angular);\r\n","(function () {\r\n\tangular.module('bizPartEngage').controller('modules.missionsList', missionListController);\r\n\tangular.module('bizPartEngage').directive('bizMission', bizMissionDirective);\r\n\tangular.module('bizPartEngage').directive('bizMissionRule', bizMissionRuleDirective);\r\n\tangular.module('bizPartEngage').directive('missionUser', missionUserDirective);\r\n\tangular.module('bizPartEngage').directive('bizMissionList', missionListDirective);\r\n\r\n\tbizMissionDirective.$inject = [\"$interval\", \"bizCore\"];\r\n\tbizMissionRuleDirective.$inject = [\"$compile\"];\r\n\tmissionListDirective.$inject = [\"bizCore\"];\r\n\r\n\tfunction bizMissionDirective($interval, bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: 'E',\r\n\t\t\ttransclude: true,\r\n\t\t\tscope: {\r\n\t\t\t\tmission: \"=\"\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('bizMissionDirective', 'FrontEnd/Modules/Missions/views/directives/bizMission.html'),\r\n\t\t\tlink: bizMissionLinkFunction,\r\n\t\t\tcontroller: bizMissionController,\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\r\n\t\tbizMissionController.$inject = [\"$scope\"];\r\n\r\n\t\treturn directive;\r\n\r\n\t\tfunction bizMissionLinkFunction(scope, element) {\r\n\t\t}\r\n\r\n\t\tfunction bizMissionController($scope) {\r\n\t\t\tvar vm = this;\r\n\t\t\tvm.GetNextRule = GetNextRule;\r\n\t\t\tvm.CalculateTimeStats = CalculateTimeStats;\r\n\t\t\tvm.CalculateCompletedPercent = CalculateCompletedPercent;\r\n\r\n\t\t\tfunction GetNextRule () {\r\n\t\t\t\tif (vm.NextRule)\r\n\t\t\t\t\treturn vm.NextRule\r\n\r\n\t\t\t\tif (vm.mission != undefined && vm.mission.Rules != undefined) {\r\n\t\t\t\t\tfor (var i = 0; i < vm.mission.Rules.length; i++) {\r\n\t\t\t\t\t\tif (~~vm.mission.Rules[i].PercentageComplete < 100) {\r\n\t\t\t\t\t\t\trule = vm.mission.Rules[i];\r\n\t\t\t\t\t\t\tvm.NextRule = rule;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn vm.NextRule;\r\n\t\t\t};\r\n\r\n\t\t\tfunction CalculateTimeStats() {\r\n\t\t\t\tvm.Now = moment();\r\n\t\t\t\tvm.EndDate = moment(vm.mission.EndDate);\r\n\t\t\t\tvm.DaysLeft = vm.EndDate.diff(vm.Now, 'days');\r\n\r\n\t\t\t\tif (vm.DaysLeft <= 0)\r\n\t\t\t\t\tvm.DaysLeft = 0;\r\n\r\n\t\t\t\tvm.HoursLeft = vm.EndDate.diff(vm.Now.add(vm.DaysLeft, 'days'), 'hours');\r\n\r\n\t\t\t\tif (vm.HoursLeft <= 0)\r\n\t\t\t\t\tvm.HoursLeft = 0;\r\n\r\n\t\t\t\tvm.MinutesLeft = vm.EndDate.diff(vm.Now.add(vm.HoursLeft, 'hours'), 'minutes');\r\n\r\n\t\t\t\tif (vm.MinutesLeft <= 0)\r\n\t\t\t\t\tvm.MinutesLeft = 0;\r\n\t\t\t};\r\n\r\n\t\t\tfunction CalculateCompletedPercent() {\r\n\t\t\t\tvm.CompletedPercentage = 0;\r\n\t\t\t\tvar totalPercentage = 0;\r\n\t\t\t\tvar amountOfRules = 0;\r\n\t\t\t\tif (vm.mission.Rules != undefined) {\r\n\t\t\t\t\tfor (var i = 0; i < vm.mission.Rules.length; i++) {\r\n\t\t\t\t\t\ttotalPercentage += vm.mission.Rules[i].PercentageComplete;\r\n\t\t\t\t\t\tamountOfRules++;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (totalPercentage > 0 && amountOfRules > 0)\r\n\t\t\t\t\t\tvm.CompletedPercentage = totalPercentage / amountOfRules;\r\n\r\n\t\t\t\t\tvm.CompletedPercentage = ~~vm.CompletedPercentage;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t$interval(vm.CalculateTimeStats, 10000);\r\n\r\n\t\t\t$scope.$watch(function () { return vm.mission; }, function () {\r\n\t\t\t\tvm.CalculateCompletedPercent();\r\n\t\t\t\tvm.CalculateTimeStats();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction bizMissionRuleDirective($compile) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: 'E',\r\n\t\t\tscope: {\r\n\t\t\t\trule: \"=\",\r\n\t\t\t\tmission: \"=\"\r\n\t\t\t},\r\n\t\t\tlink: linkFunction\r\n\t\t};\r\n\r\n\t\treturn directive;\r\n\r\n\t\tfunction linkFunction(scope, element) {\r\n\t\t\tscope.TemplateUrl = \"\";\r\n\r\n\t\t\tscope.KnobData =\r\n {\r\n \tvalue: scope.rule.PercentageComplete,\r\n \toptions: {\r\n\t\t\t\t\tfgColor: scope.mission.Settings.SecondaryColor,\r\n\t\t\t\t\tbgColor: \"#FFF\",\r\n \t\tinputColor: '#000000',\r\n \t\tangleOffset: -125,\r\n \t\tangleArc: 250,\r\n \t\treadOnly: true,\r\n \t\twidth: 100,\r\n \t\tdisplayInput: false\r\n \t}\r\n };\r\n\r\n\t\t\tswitch (scope.rule.Class) {\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tscope.TemplateUrl = siteRootPath + \"FrontEnd/Modules/Missions/views/directives/bizMissionRules/GenericTemplate.html\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tangular.element(element).append($compile(\"
\")(scope));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction missionUserDirective() {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\t\t\t\tuser: \"=\"\r\n\t\t\t},\r\n\t\t\ttemplateUrl: siteRootPath + \"FrontEnd/Modules/Missions/views/directives/bizMissionUser.html\",\r\n\t\t\tlink: linkFunction\r\n\t\t};\r\n\r\n\t\treturn directive;\r\n\r\n\t\tfunction linkFunction(scope) {\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tfunction missionListDirective(bizCoreProvider) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"E\",\r\n\t\t\tscope: {\r\n\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.missions', 'FrontEnd/Modules/Missions/views/directives/bizMissionList.html'),\r\n\t\t\tcontroller: bizCoreProvider.getController('base.modules.missions', 'modules.missionsList'),\r\n\t\t\tcontrollerAs: 'vm',\r\n\t\t\tbindToController: true\r\n\t\t};\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tmissionListController.$inject = [\"modules.missions.service\", \"$stateParams\", \"$interval\", \"$translate\", \"MetadataService\"];\r\n\r\n\tfunction missionListController(missionsService, $stateParams, $interval, $translate, MetadataService) {\r\n\t\tvar vm = this;\r\n\tvm.Missions = [];\r\n\t\r\n\tvm.GetDate = GetDate;\r\n\tvm.GetMissions = GetMissions;\r\n\tvm.CalculateTimeStats = CalculateTimeStats;\r\n\tvm.CalculateCompletedPercent = CalculateCompletedPercent;\r\n\tvm.CalculateTimeStatsForAllMissions = CalculateTimeStatsForAllMissions;\r\n\r\n\tfunction GetDate (date) {\r\n\t\treturn moment(date).format('YYYY-MM-DD');\r\n\t}\r\n\r\n\tfunction GetMissions() {\r\n\t\tmissionsService.GetMissionsForUser().then(function (response) {\r\n\t\t\tvm.Missions = response.data || [];\r\n\t\t\tfor (var i = 0; i < vm.Missions.length; i++) {\r\n\t\t\t\tvm.CalculateCompletedPercent(vm.Missions[i]);\r\n\t\t\t\tvm.CalculateTimeStats(vm.Missions[i]);\r\n\t\t\t}\r\n\t\t\tconsole.log(vm.Missions);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction CalculateTimeStatsForAllMissions () {\r\n\t\tfor (var i = 0; i < vm.Missions.length; i++) {\r\n\t\t\tvm.CalculateTimeStats(vm.Missions[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction CalculateCompletedPercent(mission) {\r\n\t\tmission.CompletedPercentage = 0;\r\n\t\tvar totalPercentage = 0;\r\n\t\tvar amountOfRules = 0;\r\n\t\tif (mission.Rules != undefined) {\r\n\t\t\tfor (var i = 0; i < mission.Rules.length; i++) {\r\n\t\t\t\ttotalPercentage += mission.Rules[i].PercentageComplete;\r\n\t\t\t\tamountOfRules++;\r\n\t\t\t}\r\n\r\n\t\t\tif (totalPercentage > 0 && amountOfRules > 0)\r\n\t\t\t\tmission.CompletedPercentage = totalPercentage / amountOfRules;\r\n\r\n\t\t\t\tmission.CompletedPercentage = ~~mission.CompletedPercentage;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction CalculateTimeStats(mission) {\r\n\t\t\tvar now = moment();\r\n\t\t\tvar endDate = moment(mission.EndDate);\r\n\t\t\tmission.DaysLeft = endDate.diff(now, 'days');\r\n\r\n\t\t\tif (mission.DaysLeft <= 0)\r\n\t\t\t\tmission.DaysLeft = 0;\r\n\r\n\t\t\tmission.HoursLeft = endDate.diff(now.add(mission.DaysLeft, 'days'), 'hours');\r\n\r\n\t\t\tif (mission.HoursLeft <= 0)\r\n\t\t\t\tmission.HoursLeft = 0;\r\n\r\n\t\t\tmission.MinutesLeft = endDate.diff(now.add(mission.HoursLeft, 'hours'), 'minutes');\r\n\r\n\t\t\tif (mission.MinutesLeft <= 0)\r\n\t\t\t\tmission.MinutesLeft = 0;\r\n\t\t};\r\n\r\n\t\t$interval(vm.CalculateTimeStatsForAllMissions, 10000);\r\n\r\n\t\tangular.element(document).ready(function () {\r\n\t\t\tvm.GetMissions();\r\n\r\n\t\t\t$translate(['MISSIONS.META.TITLE', 'MISSIONS.META.DESCRIPTION']).then(function (translations) {\r\n\t\t\t\tMetadataService.setMetaTags({\r\n\t\t\t\t\ttitle: translations['MISSIONS.META.TITLE'],\r\n\t\t\t\t\tdescription: translations['MISSIONS.META.DESCRIPTION']\r\n\t\t\t\t})\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}());","(function (angular) {\r\n\tangular.module('bizPartEngage').service('modules.missions.service', missionsService);\r\n\r\n missionsService.$inject = [\"$http\"];\r\n\r\n function missionsService($http) {\r\n \tthis.GetMissionsForUser = function () {\r\n \t\treturn $http.get(siteRootPath + 'Api/MissionsUser/GetMissionsForUser');\r\n \t};\r\n\r\n \tthis.GetMission = function (id) {\r\n \t\treturn $http.get(siteRootPath + 'Api/MissionsUser/GetMission?' + $.param({id: id}));\r\n \t};\r\n\r\n \tthis.GetUsers = function (id) {\r\n \t\treturn $http.get(siteRootPath + 'Api/MissionsUser/GetUsersWhoHaveCompletedMission', {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tmissionId: id\r\n\t\t\t\t}\r\n \t\t});\r\n \t};\r\n }\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('modules.search', indexController);\r\n\r\n indexController.$inject = [\"$stateParams\", \"bizCoreService\", \"$state\"];\r\n\r\n function indexController($stateParams, bizCoreService, $state) {\r\n\t\tvar vm = this;\r\n\t\tvm.ReferrerType = 'SearchPage';\r\n\t\tvm.ReferrerId = 0;\r\n\t\tvm.PageSize = 10;//setting\r\n\t\tvm.PageIndex = 0;\r\n\t\tvm.ResultCount = 0;\r\n\t\tvm.HitsIncement = 4;\r\n\r\n\t\tvm.SelectedIndex = 1;\r\n\r\n\t\tvm.OrderList = [/*{ Id: 0, Name: \"Relevans\" },*/ { Id: 2, Name: \"Från A-Ö\" }, { Id: 1, Name: \"Senaste\" }];\r\n\t\tvm.ShowAllIndex = { Index: 1, SearchIndexExternalName: \"Alla resultat\" };\r\n\r\n vm.SearchQuery = ($stateParams.query !== undefined ? decodeURIComponent($stateParams.query) : '');\r\n\r\n\t\tvm.Search = Search;\r\n\t\tvm.GoToResult = GoToResult;\r\n\t\tvm.GetResultHref = GetResultHref;\r\n\t\tvm.OnKeyPress = OnKeyPress;\r\n\t\tvm.SelectIndex = SelectIndex;\r\n\r\n\t\tvm.GetItemPreview = GetItemPreview;\r\n\t\tvm.GetStateUrl = GetStateUrl;\r\n\t\tvm.ShowCategory = ShowCategory;\r\n\t\tvm.ChangeSorting = ChangeSorting;\r\n\r\n vm.GetDate = GetDate;\r\n vm.HasValidDate = HasValidDate;\r\n\r\n function HasValidDate(date) {\r\n return !moment(date).isSameOrBefore('0001-01-01');\r\n }\r\n\r\n\t\tfunction GetDate(date) {\r\n\t\t return moment(date).format('YYYY-MM-DD');\r\n\t\t}\r\n\r\n\t\tfunction OnKeyPress($event) {\r\n\t\t\tif ($event.keyCode == 13) {\r\n\t\t\t\tvm.Search();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//function ChangeSorting(sortType) {\r\n\t\t//\tvm.SortBy = sortType.Id;\r\n\t\t//\tvm.Search();\r\n\t //}\r\n\t\tfunction ChangeSorting(Id) {\r\n\t\t vm.SortBy = Id;\r\n\t\t vm.Search();\r\n\t\t}\r\n\r\n\t\tfunction Search() {\t\t \r\n\t\t\tif (!vm.SearchQuery) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!vm.SearchIndexList) {\r\n\t\t\t vm.SearchIndexList = [\r\n { Index: 2, TotalHits: vm.HitsIncement },\r\n { Index: 3, TotalHits: vm.HitsIncement },\r\n { Index: 4, TotalHits: vm.HitsIncement },\r\n\t\t\t { Index: 5, TotalHits: vm.HitsIncement },\r\n\t\t\t\t{ Index: 6, TotalHits: vm.HitsIncement },\r\n\t\t\t\t{ Index: 7, TotalHits: vm.HitsIncement }];\r\n }\r\n\t\t\t\r\n\t\t\tvm.PageIndex = 0;\r\n\t\t\tvar maxHits = (vm.PageIndex + 1) * vm.PageSize;\r\n\r\n\t\t\tbizCoreService.Search(vm.SearchQuery, maxHits, vm.ReferrerType, vm.ReferrerId, vm.IndexList, vm.SearchIndexList, vm.SortBy).then(SearchCallback);\r\n\r\n\t\t\tfunction SearchCallback(response) {\r\n\t\t\t\tif (!vm.IndexesToShow) {\r\n\t\t\t\t\tvm.IndexesToShow = response.data.IndexToShowList;\r\n\t\t\t\t\tfor (var i = 0; i < vm.IndexesToShow.length; i++) {\r\n\t\t\t\t\t\tvm.IndexesToShow[i].TotalHits = vm.HitsIncement;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t//vm.IndexesToShow.unshift({ Index: 1, SearchIndexExternalName: \"Alla resultat\" });\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t\tvm.ResultItems = response.data.ResultItems;\r\n\t\t\t\tvm.SearchedQuery = vm.SearchQuery;\t\t\t\t\r\n\t\t\t\tvm.ResultCount = response.data.TotalHits;\r\n\r\n\t\t\t\tHandleResults(vm.ResultItems);\r\n\r\n\t\t\t\tfunction HandleResults(results) {\r\n\t\t\t\t\tif (!results)\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t\t\tresults[i].StateUrl = vm.GetStateUrl(results[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction GoToResult(item) {\r\n\t\t\tbizCoreService.LogSearch(item);\t\t\t\r\n\t\t}\r\n\r\n\t\tfunction GetResultHref(item) {\r\n\t\t\treturn $state.href(item.State, JSON.parse(item.StateParameters));\t\t\t\r\n\t\t}\r\n\r\n\t\tfunction GetStateUrl(item) {\r\n var url = decodeURI($state.href(item.State, JSON.parse(item.StateParameters), { absolute: false }));\r\n\t\t\tif (url.indexOf(\"#!\") == 0) {\r\n\t\t\t\turl = url.substring(2);\r\n }\r\n if (url.indexOf(\"/\") == 0 && url.indexOf(siteRootPath) == -1) {\r\n url = url.replace(\"/\", siteRootPath);\r\n\t\t\t}\t\t\t\r\n\t\t\treturn url;\r\n\t\t}\r\n\r\n\t\tfunction GetItemPreview(item) {\r\n\t\t\t\r\n\t\t\tvar preview = item.ItemPreview;\t\t\t\r\n\t\t\treturn preview || '';\r\n\t\t}\r\n\r\n\t\tfunction SelectIndex(index) {\r\n\t\t if (vm.SelectedIndex) {\r\n\t\t vm.SelectedIndex == index ? vm.SelectedIndex = undefined : vm.SelectedIndex = index;\r\n\t\t }\r\n\t\t else\r\n\t\t vm.SelectedIndex = index;\r\n\t\t \r\n\t\t}\r\n\r\n\t\tfunction ShowCategory(category) {\t\t\t\r\n\t\t\tif (vm.ResultItems.GetItemsByValue('Index', category.Index).length > 0) {\r\n\t\t if (vm.SelectedIndex){\r\n\t\t if (vm.SelectedIndex != 1 && vm.SelectedIndex == category.Index)\r\n\t\t return true;\r\n\t\t else if (vm.SelectedIndex == 1)\r\n\t\t return true;\r\n\r\n\t\t return false;\r\n\t\t }\r\n\t\t else if(!vm.SelectedIndex)\r\n\t\t {\r\n\t\t return true;\r\n\t\t }\r\n\t\t }\r\n\t\t else\r\n\t\t return false;\t\t \r\n\t\t}\r\n\r\n\t\tfunction Init() {\r\n\t\t\tif (vm.SearchQuery) {\r\n\t\t\t\tvm.Search();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.$onInit = Init;\r\n\t}\r\n\r\n})(window.angular);\r\n","(function(angular) {\r\n angular.module('bizPartEngage').controller('modules.speedquiz.list', speedquizListController);\r\n angular.module('bizPartEngage').controller('modules.speedquiz.play', speedquizPlayController)\r\n angular.module('bizPartEngage').controller('modules.speedquiz.highscore', speedquizHighscoreController)\r\n\r\n speedquizListController.$inject = [\"$state\", \"$stateParams\", \"modules.speedquiz.service\", \"$filter\"];\r\n speedquizPlayController.$inject = [\"$stateParams\", \"bizUser\", \"$filter\", \"modules.speedquiz.service\", \"$scope\", \"$window\", \"$q\"];\r\n speedquizHighscoreController.$inject = [\"$stateParams\", \"modules.speedquiz.service\"];\r\n\r\n function speedquizListController($state, $stateParams, speedquizService, $filter) {\r\n var vm = this;\r\n vm.PluginInstanceId = ~~$stateParams.pluginInstanceId;\r\n vm.SpeedquizName = $stateParams.urlRewrite;//not actually used, just for show.\r\n vm.Speedquizes = [];\r\n\r\n vm.PlaySpeedquiz = PlaySpeedquiz;\r\n vm.GoToHighscore = GoToHighscore;\r\n\r\n function GoToHighscore(speedquiz) {\r\n $state.go('base.modules.speedquizhighscore', {pluginInstanceId: speedquiz.PluginInstanceId, name: speedquiz.Name});\r\n }\r\n\r\n function PlaySpeedquiz(speedquiz) {\r\n var state = 'base.modules.speedquizplay';\r\n if (vm.PluginInstanceId === speedquiz.PluginInstanceId) {\r\n state = 'base.modules.speedquizplayfromone';\r\n }\r\n $state.go(state, { id: speedquiz.UrlRewrite || speedquiz.Id, pluginInstanceId: speedquiz.PluginInstanceId });\r\n }\r\n\r\n function GetSpeedquizes() {\r\n speedquizService.GetSpeedquizInstancesForLoggedInUser().then(GetSpeedquizesSuccess);\r\n \r\n function GetSpeedquizesSuccess(response) {\r\n if (vm.PluginInstanceId) {\r\n vm.Speedquizes = $filter('filter')(response.data, { PluginInstanceId: vm.PluginInstanceId }); \r\n } else {\r\n vm.Speedquizes = response.data;\r\n }\r\n }\r\n }\r\n\r\n function Init() {\r\n GetSpeedquizes();\r\n speedquizService.HasGuiOverrides();//caches result in session storage, which will decrease delay in start when the quiz actually launches\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n\r\n function speedquizPlayController($stateParams, user, $filter, speedquizService, $scope, $window, $q) {\r\n var vm = this;\r\n if (~~$stateParams.id > 0) {\r\n vm.SpeedquizId = ~~$stateParams.id;\r\n } else {\r\n vm.SpeedquizUrlRewrite = $stateParams.id\r\n }\r\n vm.FromOneQuiz = $stateParams.fromOneQuiz === true;\r\n vm.SpeedquizId = ~~$stateParams.id > 0 ? ~~$stateParams.id : 0;\r\n vm.pluginInstanceId = ~~$stateParams.pluginInstanceId;\r\n vm.userSession = user.getLoggedInUser().Token; \r\n vm.hasCustomerGuiOverrides = false;\r\n\r\n vm.ShowGame = false;\r\n vm.IsLoading = true;\r\n\r\n vm.GetIframeUrl = GetIframeUrl;\r\n\r\n const postMessageReceived = (event) => {\r\n console.log(\"message received\", event); \r\n if (event.origin === $window.location.origin && event.data === 'ISLOADED') {\r\n vm.IsLoading = false;\r\n $scope.$digest();\r\n } \r\n };\r\n\r\n function GetIframeUrl() { \r\n var url = \"/Speedquiz/index.html?quizId=\" + vm.SpeedquizId + \"&siteRootPath=\" + siteRootPath + \"&UserSession=\" + vm.userSession + \"&lang=\" + cultureCode.substring(0, 2); \r\n if (vm.hasCustomerGuiOverrides) {\r\n url = url + '&customer=' + portalAlias;\r\n } \r\n\r\n return $filter('siteroot')(url);\r\n }\r\n \r\n \r\n function Init() {\r\n\r\n $window.addEventListener('message', postMessageReceived);\r\n\r\n var pList = [speedquizService.HasGuiOverrides()];\r\n if (vm.SpeedquizUrlRewrite) { \r\n pList.push(speedquizService.GetSpeedquizIdByUrlRewrite(vm.SpeedquizUrlRewrite));\r\n }\r\n\r\n $q.all(pList).then(Callback);\r\n\r\n function Callback(result) { \r\n vm.hasCustomerGuiOverrides = result[0];\r\n if (vm.SpeedquizUrlRewrite) {\r\n vm.SpeedquizId = ~~result[1].data; \r\n }\r\n vm.ShowGame = true;\r\n }\r\n \r\n //speedquizService.HasGuiOverrides().then(function (response) { \r\n // vm.hasCustomerGuiOverrides = response; \r\n // vm.ShowGame = true; \r\n //});\r\n }\r\n\r\n vm.$onInit = Init;\r\n\r\n $scope.$on(\"$destroy\", () => {\r\n $window.postMessage('QUIZCLEANUP', $window.location.origin);\r\n $window.removeEventListener('message', postMessageReceived);\r\n });\r\n }\r\n\r\n function speedquizHighscoreController($stateParams, speedquizService) {\r\n var vm = this;\r\n vm.pluginInstanceId = ~~$stateParams.pluginInstanceId;\r\n vm.speedquizName = $stateParams.name;\r\n vm.Highscore = [];\r\n\r\n vm.GetHighscore = GetHighscore;\r\n vm.GoBack = GoBack;\r\n\r\n function GoBack() {\r\n window.history.back();\r\n }\r\n\r\n function GetHighscore() {\r\n speedquizService.GetHighscore(vm.pluginInstanceId, 10).then(GetHighscoreSuccess);\r\n\r\n function GetHighscoreSuccess(response) {\r\n vm.Highscore = response.data.ScoreItems;\r\n }\r\n }\r\n\r\n \r\n function Init() {\r\n vm.GetHighscore();\r\n }\r\n\r\n vm.$onInit = Init;\r\n }\r\n})(window.angular);","(function(angular) {\r\n angular.module('bizPartEngage').service('modules.speedquiz.service', speedquizService);\r\n\r\n speedquizService.$inject = [\"$http\", \"$q\"];\r\n\r\n function speedquizService($http, $q) { \r\n\r\n this.GetSpeedquizInstancesForLoggedInUser = function() {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetSpeedquizInstancesForLoggedInUser\");\r\n };\r\n\r\n this.GetHighscore = function(pluginInstanceId, max) {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetHighscore?\" + $.param({id: pluginInstanceId, max:max}));\r\n };\r\n\r\n this.GetSpeedquizIdByUrlRewrite = function (urlRewrite) {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetSpeedquizIdByUrlRewrite?\" + $.param({ urlRewrite: urlRewrite }));\r\n };\r\n\r\n this.GetSpeedquizInstance = function (quizId) {\r\n return $http.get(siteRootPath + \"api/speedquiz/GetSpeedquizInstance?\" + $.param(\r\n {\r\n id: quizId,\r\n assemblyName: 'BizPartEngage.Speedquiz.dll',\r\n className: 'BizPartEngage.Speedquiz.Plugins.SpeedquizGeneralPlugin',\r\n objectId: -1\r\n }\r\n ));\r\n };\r\n\r\n this.Answer = function (answer) {\r\n return $http.post(siteRootPath + \"api/speedquiz/Answer\", answer, { headers: { IgnoreLoader: true }});\r\n }\r\n\r\n this.Submit = function (score) {\r\n return $http.post(siteRootPath + \"api/speedquiz/SubmitScore\", score, { headers: { IgnoreLoader: true } });\r\n }\r\n\r\n this.HasGuiOverrides = function () {\r\n var defer = $q.defer();\r\n \r\n var v = getSessionStorage('SPEEDQUIZ_HAS_GUI_OVERRIDES'); \r\n if (v === undefined || v === null) { \r\n $http.get(siteRootPath + \"api/speedquiz/HasCustomerGuiOverrides\").then(WSCallback);\r\n } else { \r\n defer.resolve(v === 'true'); \r\n }\r\n\r\n return defer.promise;\r\n\r\n function WSCallback(response) {\r\n setSessionStorage('SPEEDQUIZ_HAS_GUI_OVERRIDES', response.data); \r\n defer.resolve(response.data);\r\n }\r\n };\r\n }\r\n})(window.angular);","(function (angular) {\r\n angular.module('bizPartEngage').config(configCoreFunction);\r\n configCoreFunction.$inject = [\"$stateProvider\", \"bizUserProvider\", \"bizCoreProvider\", \"$translatePartialLoaderProvider\", \"bizPortalProvider\"];\r\n function configCoreFunction($stateProvider, bizUserProvider, bizCoreProvider, $translatePartialLoaderProvider, portalProvider) {\r\n\r\n\t\t$stateProvider\r\n .state('base.modules', {\r\n \ttemplate: '
'\r\n\t\t})\r\n\t\t.state('base.modules.blog', {\r\n \turl: \"/modules/blogs\",\r\n \ttemplateUrl: bizCoreProvider.getView('base.modules.blog', 'FrontEnd/Modules/Blog/Views/Index.html'), \r\n controller: bizCoreProvider.getController('base.modules.blogs', 'modules.blogs.list'),\r\n \tcontrollerAs: \"vm\",\r\n \tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('BLOG', bizUserProvider.AccessTypeRight.Read); }\r\n \t}\r\n })\r\n .state('base.modules.blogtitle', {\r\n\t\t\turl: \"/blog/:title\",\r\n\t\t\tparams: {title: null},\r\n templateUrl: bizCoreProvider.getView('base.modules.blogtitle', 'FrontEnd/Modules/Blog/Views/view.html'), \r\n controller: bizCoreProvider.getController('modules.blogs.show', 'modules.blogs.show'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('BLOG', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.blog\"\r\n\t\t\t}\r\n }).state('base.modules.blogtag', {\r\n \turl: \"/blogtags/:tagSystemName\",\r\n params: { id: null },\r\n templateUrl: bizCoreProvider.getView('base.modules.blogtag', 'FrontEnd/Modules/Blog/Views/Index.html'), \r\n controller: bizCoreProvider.getController('base.modules.blogtag', 'modules.blogs.showbytag'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('BLOG', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.blog\"\r\n }\r\n })\r\n \t.state('base.modules.missions', {\r\n \t\turl: \"/modules/missions\",\r\n template: '', \r\n controller: 'modules.missions',\r\n \t\tcontrollerAs: \"vm\",\r\n \t\tdata: {\r\n \t\t\trule: function () { return bizUserProvider.HasModuleAccess('MISSIONS', bizUserProvider.AccessTypeRight.Read); }\r\n \t\t}\r\n \t})\r\n \t.state('base.modules.missionsview', {\r\n \t\turl: \"/modules/missions/:id\",\r\n templateUrl: bizCoreProvider.getView('base.modules.missionsview', 'FrontEnd/Modules/Missions/Views/view.html'), \r\n controller: bizCoreProvider.getController('base.modules.missionsview', 'modules.missions.view'),\r\n \t\tcontrollerAs: \"vm\",\r\n \t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MISSIONS', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.missions\"\r\n \t\t}\r\n \t})\r\n .state('base.modules.missionsusers', {\r\n \turl: \"/modules/missions/:id/users\",\r\n templateUrl: bizCoreProvider.getView('base.modules.missionsusers', 'FrontEnd/Modules/Missions/Views/users.html'), \r\n controller: bizCoreProvider.getController('base.modules.missionsusers', 'modules.missions.users'),\r\n \tcontrollerAs: \"vm\",\r\n \tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MISSIONS', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.missions\"\r\n \t}\r\n })\r\n\t\t.state('base.modules.educations', {\r\n\t\t\turl: \"/modules/educations\",\r\n templateUrl: bizCoreProvider.getView('base.modules.educations', 'FrontEnd/Modules/Education/Views/index.html'),\r\n controller: 'modules.educations',\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EDUCATION', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n }).state('base.modules.educationtag', {\r\n url: \"/educationtags/:tagSystemName\",\r\n params: { id: null },\r\n templateUrl: bizCoreProvider.getView('base.modules.educationtag', 'FrontEnd/Modules/Education/Views/Index.html'),\r\n controller: bizCoreProvider.getController('base.modules.educationtag', 'modules.educations'),\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('EDUCATION', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.educations\"\r\n }\r\n })\r\n\t\t.state('base.modules.html5education', {\r\n\t\t\turl: \"/modules/education/html5/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.html5education', 'FrontEnd/Modules/Education/Views/html5education.html'), \r\n controller: bizCoreProvider.getController('base.modules.html5education', 'modules.educations.html5'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('EDUCATION', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.educations\"\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.cms', {\r\n\t\t\turl: \"/page/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.cms', 'FrontEnd/Modules/CMS/Views/page.html'), \r\n controller: bizCoreProvider.getController('base.modules.cms', 'modules.cms.page'),\r\n controllerAs: \"vm\",\r\n params: {\r\n params: null //optional params that can be used in modules that might be on the page\r\n },\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('CMS', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.forums', {\r\n\t\t\turl: \"/modules/forums\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.forums', 'FrontEnd/Modules/Forum/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.forums', 'modules.forums'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('FORUM', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.forum', {\r\n\t\t\turl: \"/modules/forum/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.forum', 'FrontEnd/Modules/Forum/Views/viewforum.html'), \r\n controller: bizCoreProvider.getController('base.modules.forum', 'modules.forum'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('FORUM', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.forums\"\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.forumthread', {\r\n\t\t\turl: \"/modules/forum-thread/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.forumthread', 'FrontEnd/Modules/Forum/Views/viewforumthread.html'), \r\n controller: bizCoreProvider.getController('base.modules.forumthread', 'modules.forum.thread'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('FORUM', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.forums\"\r\n\t\t\t}\r\n\t\t}).state('base.modules.dictionary', {\r\n\t\t\turl: \"/modules/dictionary\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.dictionary', 'FrontEnd/Modules/Dictionary/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.dictionary', 'modules.dictionary'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('DICTIONARY', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.dictionaryitem', {\r\n\t\t\turl: \"/modules/dictionary/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.dictionary', 'FrontEnd/Modules/Dictionary/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.dictionary', 'modules.dictionary'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('DICTIONARY', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.events', {\r\n\t\t\turl: \"/modules/events\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.events', 'FrontEnd/Modules/Event/Views/list-react.html'),\r\n\t\t\tcontroller: bizCoreProvider.getController('base.modules.events', 'modules.events'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EVENT', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.eventsfilter', {\r\n\t\t\turl: \"/modules/events/:filter\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.events', 'FrontEnd/Modules/Event/Views/list-react.html'),\r\n\t\t\tcontroller: bizCoreProvider.getController('base.modules.events', 'modules.events'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EVENT', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.event', {\r\n\t\t\turl: \"/modules/event/:id\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.event', 'FrontEnd/Modules/Event/Views/index-react.html'),\r\n controller: bizCoreProvider.getController('base.modules.event', 'modules.event'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('EVENT', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t}).state('base.modules.media', {\r\n\t\t url: \"/modules/media/\",\r\n\t\t templateUrl: bizCoreProvider.getView('base.modules.media', 'FrontEnd/Modules/Media/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.media', 'modules.media'),\r\n\t\t controllerAs: \"vm\",\r\n\t\t data: {\r\n\t\t rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t }\r\n\t\t}).state('base.modules.mediafile', {\r\n\t\t url: \"/modules/media/:id\",\r\n\t\t templateUrl: bizCoreProvider.getView('base.modules.mediafile', 'FrontEnd/Modules/Media/Views/viewfile.html'), \r\n controller: bizCoreProvider.getController('base.modules.mediafile', 'modules.media'),\r\n\t\t controllerAs: \"vm\",\r\n\t\t data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.media\"\r\n\t\t }\r\n\t\t}).state('base.modules.mediatagsfileid', {\r\n\t\t\turl: \"/mediatags/:tagSystemName/:fileId\",\r\n templateUrl: bizCoreProvider.getView('base.modules.mediatags', 'FrontEnd/Modules/Media/Views/viewtags.html'), \r\n controller: bizCoreProvider.getController('base.modules.mediatags', 'modules.mediatags'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.media\"\r\n\t\t\t}\r\n\t\t}).state('base.modules.mediatags', {\r\n\t\t\turl: \"/mediatags/:tagSystemName\",\r\n templateUrl: bizCoreProvider.getView('base.modules.mediatags', 'FrontEnd/Modules/Media/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.mediatags', 'modules.mediatags'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('MEDIABANK', bizUserProvider.AccessTypeRight.Read); },\r\n parentState: \"base.modules.media\"\r\n\t\t\t}\t\t\r\n\t\t}).state('base.modules.search', {\r\n\t\t url: \"/modules/search/?:query\",\r\n\t\t templateUrl: bizCoreProvider.getView('base.modules.search', 'FrontEnd/Modules/Search/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.search', 'modules.search'),\r\n\t\t controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.IsLoggedIn() || portalProvider.IsPortalPublic(); }\r\n\t\t }\r\n\t\t}).state('base.modules.masterrun', {\r\n\t\t\turl: \"/modules/masterrun\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.masterrun', 'FrontEnd/Modules/MasterRun/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.masterrun', 'modules.masterrun'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('MASTER_RUN', bizUserProvider.AccessTypeRight.Read); }\r\n } \r\n }).state('base.modules.journey', {\r\n\t\t\turl: \"/modules/journey\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.journey', 'FrontEnd/Modules/Journey/Views/index.html'), \r\n controller: bizCoreProvider.getController('base.modules.journey', 'modules.journey'),\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return true; return bizUserProvider.HasModuleAccess('ENGAGEMENT_GOAL', bizUserProvider.AccessTypeRight.Read); } // todo\r\n\t\t\t}\r\n }) \r\n\t\t.state('base.modules.speedquiz', {\r\n url: \"/modules/speedquiz\",\r\n params: { urlRewrite: null, pluginInstanceId: null },\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz', 'FrontEnd/Modules/SpeedQuiz/Views/list.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.list\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\t\r\n })\r\n .state('base.modules.speedquizone', {\r\n url: \"/modules/speedquiz/:urlRewrite/:pluginInstanceId\",\r\n params: { urlRewrite: null, pluginInstanceId: null },\r\n templateUrl: bizCoreProvider.getView('base.modules.speedquiz', 'FrontEnd/Modules/SpeedQuiz/Views/list.html'),\r\n controller: \"modules.speedquiz.list\",\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n }\r\n })\r\n\t\t.state('base.modules.speedquizplay', {\r\n\t\t\turl: \"/modules/speedquiz/play/:id/:pluginInstanceId\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz.play', 'FrontEnd/Modules/SpeedQuiz/Views/play-react.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.play\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\t\r\n })\r\n\t\t.state('base.modules.speedquizplayfromone', {\r\n\t\t\turl: \"/modules/speedquiz/play-one/:id/:pluginInstanceId\",\r\n\t\t\tparams: {\r\n\t\t\t\tfromOneQuiz: true\r\n\t\t\t},\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz.play', 'FrontEnd/Modules/SpeedQuiz/Views/play-react.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.play\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\r\n\t\t})\r\n\t\t.state('base.modules.speedquizhighscore', {\r\n\t\t\turl: \"/modules/speedquiz/highscore/:pluginInstanceId/:name\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.speedquiz.highscore', 'FrontEnd/Modules/SpeedQuiz/Views/highscore.html'),\r\n\t\t\tcontroller: \"modules.speedquiz.highscore\",\r\n\t\t\tcontrollerAs: \"vm\",\r\n\t\t\tdata: {\r\n\t\t\t\trule: function () { return bizUserProvider.HasModuleAccess('SPEEDQUIZ', bizUserProvider.AccessTypeRight.Read); }\r\n\t\t\t}\t\r\n }).state('base.modules.campaign', {\r\n\t\t\turl: \"modules/campaign/:urlRewrite?referer\",\r\n\t\t\tcontroller: \"modules.campaign\",\r\n\t\t\tcontrollerAs: \"vm\"\r\n\t\t})\r\n\t\t.state('base.modules.campaign.page', {\r\n\t\t\turl: \"/:pageUrlRewrite\",\r\n\t\t\ttemplateUrl: bizCoreProvider.getView('base.modules.campaign', 'FrontEnd/Modules/Campaign/Views/default.html'),\r\n\t\t\tcontroller: \"modules.campaign.page\",\r\n\t\t\tcontrollerAs: \"vm\"\t\t\r\n })\r\n .state('base.modules.certifications', {\r\n url: \"/modules/certifications\",\r\n templateUrl: bizCoreProvider.getView('base.modules.certifications', 'FrontEnd/Modules/Certifications/Views/default.html'),\r\n controller: 'modules.certifications',\r\n controllerAs: \"vm\",\r\n data: {\r\n rule: function () { return bizUserProvider.HasModuleAccess('CERTIFICATIONS', bizUserProvider.AccessTypeRight.Read); }\r\n }\r\n })\r\n .state('base.modules.engageobjectredirect', {\r\n url: \"/modules/eor/:type/:id\",\r\n controller: EngageObjectRedirectController,\r\n controllerAs: \"vm\" \r\n });\r\n\r\n EngageObjectRedirectController.$inject = [\"$stateParams\", \"core.engage.service\"];\r\n function EngageObjectRedirectController($stateParams, coreEngageService) { \r\n vm = this;\r\n vm.EngageObjectType = $stateParams.type;\r\n vm.EngageObjectId = $stateParams.id;\r\n coreEngageService.RedirectToEngageObject(vm.EngageObjectType, vm.EngageObjectId);\r\n }\t\t\r\n }\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage', [\r\n 'ng',\r\n 'ngAnimate',\r\n 'ngCookies',\r\n 'ngSanitize',\r\n 'ui.router',\r\n 'bizPart',\r\n 'ngMaterial',\r\n 'ui.bootstrap',\r\n 'ngMessages',\r\n 'sticky',\r\n 'multi-transclude',\r\n 'ui.knob',\r\n 'pascalprecht.translate',\r\n 'SignalR',\r\n 'BizContainer',\r\n 'BizContainerHelper',\r\n '720kb.socialshare',\r\n 'ngclipboard',\r\n 'matchMedia',\r\n 'oc.lazyLoad',\r\n 'bizWelcomeGuide',\r\n 'bizReactWrapper'\r\n ]);\r\n\r\n angular.module('bizPartEngage').constant('genericPosition', {\r\n TOP: 1,\r\n LEFT: 2,\r\n RIGHT: 3,\r\n BOTTOM: 4,\r\n CENTER: 5,\r\n });\r\n\r\n angular.module('bizPartEngage').provider('bizLevel', levelProvider);\r\n angular.module('bizPartEngage').provider('bizPortal', portalProvider);\r\n\r\n angular.module('bizPartEngage').provider('bizCore', coreProvider);\r\n angular.module('bizPartEngage').provider('bizUser', userProvider);\r\n\r\n angular.module('bizPartEngage').config(configFunction);\r\n angular.module('bizPartEngage').run(runFunction);\r\n angular\r\n .module('bizPartEngage')\r\n .factory('loadingInterceptor', loadingInterceptorFunction);\r\n\r\n configFunction.$inject = [\r\n '$stateProvider',\r\n '$urlRouterProvider',\r\n '$httpProvider',\r\n 'bizCoreProvider',\r\n '$translateProvider',\r\n '$translatePartialLoaderProvider',\r\n '$locationProvider',\r\n 'bizPortalProvider',\r\n 'bizUserProvider',\r\n '$ocLazyLoadProvider',\r\n ];\r\n runFunction.$inject = [\r\n '$rootScope',\r\n '$http',\r\n '$q',\r\n 'base.service',\r\n 'bizUser',\r\n '$state',\r\n 'core.users.service',\r\n 'bizLevel',\r\n '$translate',\r\n 'bizNotificationService',\r\n 'SignalRFactory',\r\n '$transitions',\r\n 'bizContainerSettings',\r\n '$location',\r\n '$window',\r\n '$translatePartialLoader',\r\n 'core.session.service',\r\n 'bizPortal',\r\n 'genericPosition',\r\n 'bizLoaderService',\r\n '$locale',\r\n 'bizPushNotificationService',\r\n 'bizJourneyService'\r\n ];\r\n loadingInterceptorFunction.$inject = ['$q'];\r\n userProvider.$inject = ['bizPortalProvider', '$translateProvider'];\r\n\r\n function coreProvider() {\r\n var lastUpdate = moment();\r\n\r\n function GetView(stateName, fallback) {\r\n //Adding to make sure we get a new version of the HTML every hour...\r\n if (moment.duration(moment().diff(lastUpdate)).asHours() > 1) {\r\n lastUpdate = moment();\r\n }\r\n\r\n var override = viewOverrides.GetItemByValue('State', stateName);\r\n var themeOverride = portalTheme.Views.GetItemByValue(\r\n 'State',\r\n stateName\r\n );\r\n\r\n if (override) {\r\n return siteRootPath + override.ViewUrl;\r\n } else if (themeOverride) {\r\n return siteRootPath + themeOverride.ViewUrl;\r\n } else {\r\n return siteRootPath + fallback;\r\n }\r\n }\r\n\r\n function GetController(stateName, fallback) {\r\n var override = viewOverrides.GetItemByValue('State', stateName);\r\n\r\n if (override && override.Controller) {\r\n return override.Controller;\r\n } else {\r\n return fallback;\r\n }\r\n }\r\n\r\n function SetViewOverrides(overrides) {\r\n viewOverrides = overrides;\r\n }\r\n\r\n return {\r\n getView: GetView,\r\n getController: GetController,\r\n setViewOverrides: SetViewOverrides,\r\n $get: function () {\r\n return {\r\n getViewOverrides: function () {\r\n return viewOverrides;\r\n },\r\n getView: GetView,\r\n getController: GetController,\r\n setViewOverrides: SetViewOverrides,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function userProvider(portalProvider, $translate) {\r\n if (userData.Token == null) userData.Token = getBizPartAuthToken();\r\n\r\n var LoggedInUser = userData;\r\n var AccessTypeRight = {\r\n Read: 10,\r\n Write: 20,\r\n WriteExtended: 30,\r\n Admin: 40,\r\n };\r\n\r\n function SetLoggedInUser(user) {\r\n LoggedInUser = user;\r\n }\r\n\r\n function HasWriteOrHigherAccess(accessTypeModuleKey) {\r\n var hasAccess = IsAdministrator();\r\n\r\n if (!hasAccess) {\r\n if (accessTypeModuleKey) {\r\n hasAccess = HasModuleAccess(\r\n accessTypeModuleKey,\r\n AccessTypeRight.Write\r\n );\r\n } else {\r\n try {\r\n for (var i = 0; i < LoggedInUser.Roles.length; i++) {\r\n if (hasAccess) {\r\n break;\r\n }\r\n if (LoggedInUser.Roles[i].AccessTypeAccesses) {\r\n for (\r\n var a = 0;\r\n a <\r\n LoggedInUser.Roles[i].AccessTypeAccesses\r\n .length;\r\n a++\r\n ) {\r\n if (\r\n LoggedInUser.Roles[i]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeRight >=\r\n AccessTypeRight.Write &&\r\n LoggedInUser.Roles[i]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeModule.AccessTypeKey !==\r\n 'ENGAGEMENT_GOAL'\r\n ) {\r\n hasAccess = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n hasAccess = false;\r\n }\r\n }\r\n }\r\n\r\n return hasAccess;\r\n }\r\n\r\n function HasModuleAccess(accessTypeModuleKey, accessTypeAccess, ignorePortalPublic) {\r\n if (\r\n (portalProvider.IsPortalPublic() && accessTypeAccess == 10 && !ignorePortalPublic) ||\r\n IsAdministrator()\r\n )\r\n return true;\r\n if (LoggedInUser.Roles) {\r\n try {\r\n //Checking user roles...\r\n for (var i = 0; i < LoggedInUser.Roles.length; i++) {\r\n if (LoggedInUser.Roles[i].AccessTypeAccesses) {\r\n for (\r\n var a = 0;\r\n a <\r\n LoggedInUser.Roles[i].AccessTypeAccesses.length;\r\n a++\r\n ) {\r\n var correctModule =\r\n LoggedInUser.Roles[i].AccessTypeAccesses[a]\r\n .AccessTypeModule.AccessTypeKey ==\r\n accessTypeModuleKey;\r\n if (\r\n correctModule &&\r\n ~~LoggedInUser.Roles[i].AccessTypeAccesses[\r\n a\r\n ].AccessTypeRight >= ~~accessTypeAccess\r\n )\r\n return true;\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n\r\n if (LoggedInUser.AllUnits) {\r\n try {\r\n //Checking user unit roles...\r\n for (var i = 0; i < LoggedInUser.AllUnits.length; i++) {\r\n for (\r\n var r = 0;\r\n r < LoggedInUser.AllUnits[i].Roles.length;\r\n r++\r\n ) {\r\n if (\r\n LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses\r\n ) {\r\n for (\r\n var a = 0;\r\n a <\r\n LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses.length;\r\n a++\r\n ) {\r\n var correctModule =\r\n LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeModule.AccessTypeKey ==\r\n accessTypeModuleKey;\r\n if (\r\n correctModule &&\r\n ~~LoggedInUser.AllUnits[i].Roles[r]\r\n .AccessTypeAccesses[a]\r\n .AccessTypeRight >=\r\n ~~accessTypeAccess\r\n )\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n return false;\r\n }\r\n }\r\n //console.warn('No access to: ', { accessTypeModuleKey: accessTypeModuleKey, accessTypeAccess: accessTypeAccess });\r\n return false;\r\n }\r\n\r\n function IsAdministrator() {\r\n const adminRoleSystemNames = ['ADMINISTRATOR', 'PortalAdmin', 'HostAdmin'];\r\n return LoggedInUser.Roles ? LoggedInUser.Roles.some(role => adminRoleSystemNames.includes(role.SystemName)) : false;\r\n }\r\n\r\n function IsLoggedIn() {\r\n return ~~LoggedInUser.Id > 0;\r\n }\r\n\r\n return {\r\n AccessTypeRight: AccessTypeRight,\r\n HasModuleAccess: HasModuleAccess,\r\n IsAdministrator: IsAdministrator,\r\n HasWriteOrHigherAccess: HasWriteOrHigherAccess,\r\n IsLoggedIn: IsLoggedIn,\r\n SetLoggedInUser: SetLoggedInUser,\r\n $get: function () {\r\n return {\r\n setLoggedInUser: function (user) {\r\n LoggedInUser.Initials = IsLoggedIn() ? `${user.FirstName.slice(0, 1)}${user.LastName.slice(0, 1)}` : '';\r\n moment.locale(cultureCode.substring(0, 2));\r\n\r\n console.log('CULTURE: ' + cultureCode);\r\n },\r\n getLoggedInUser: function () {\r\n return LoggedInUser;\r\n },\r\n AccessTypeRight: AccessTypeRight,\r\n HasModuleAccess: HasModuleAccess,\r\n IsAdministrator: IsAdministrator,\r\n HasWriteOrHigherAccess: HasWriteOrHigherAccess,\r\n IsLoggedIn: IsLoggedIn,\r\n SetLoggedInUser: SetLoggedInUser,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function levelProvider() {\r\n var translate;\r\n function getExperienceTypeLabel(key) {\r\n switch (~~key) {\r\n case 1:\r\n return translate('CORE.LOGIN');\r\n case 2:\r\n return translate('CORE.LOGINXDAYSWEEK');\r\n case 3:\r\n return translate('CORE.LOGINXDAYSMONTH');\r\n case 16:\r\n return translate('CORE.UNIQUEPAGEVISITS');\r\n case 18:\r\n return translate('CORE.EXPERIENCEGAINPERWEEKINUNIT');\r\n case 22:\r\n return translate('CORE.HTML5EDUCATION');\r\n }\r\n }\r\n\r\n function setTranslateProvider(t) {\r\n translate = t;\r\n }\r\n\r\n return {\r\n getExperienceTypeLabel: getExperienceTypeLabel,\r\n setTranslateProvider: setTranslateProvider,\r\n $get: function () {\r\n return {\r\n getExperienceTypeLabel: getExperienceTypeLabel,\r\n setTranslateProvider: setTranslateProvider,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function portalProvider() {\r\n var PublicPortal = false;\r\n\r\n function IsPortalPublic() {\r\n return PublicPortal;\r\n }\r\n\r\n function SetPublicPortal(val) {\r\n PublicPortal = val;\r\n }\r\n\r\n return {\r\n IsPortalPublic: IsPortalPublic,\r\n SetPublicPortal: SetPublicPortal,\r\n $get: function () {\r\n return {\r\n IsPortalPublic: IsPortalPublic,\r\n SetPublicPortal: SetPublicPortal,\r\n };\r\n },\r\n };\r\n }\r\n\r\n function configFunction(\r\n $stateProvider,\r\n $urlRouterProvider,\r\n $httpProvider,\r\n bizCoreProvider,\r\n $translateProvider,\r\n $translatePartialLoaderProvider,\r\n $locationProvider,\r\n portalProvider,\r\n userProvider,\r\n $ocLazyLoadProvider\r\n ) {\r\n $urlRouterProvider.otherwise('/');\r\n $locationProvider.html5Mode(true);\r\n //$locationProvider.hashPrefix('!');\r\n\r\n $ocLazyLoadProvider.config({\r\n modules: GetLazyLoadModules(),\r\n });\r\n\r\n $stateProvider\r\n .state('base', {\r\n templateUrl: bizCoreProvider.getView(\r\n 'base',\r\n 'FrontEnd/views/base.html'\r\n ),\r\n controller: bizCoreProvider.getController('base', 'base'),\r\n controllerAs: 'vm',\r\n })\r\n .state('noaccess', {\r\n url: '/noaccess',\r\n templateUrl: bizCoreProvider.getView(\r\n 'noaccess',\r\n 'FrontEnd/views/noaccess.html'\r\n ),\r\n controller: bizCoreProvider.getController(\r\n 'noaccess',\r\n 'base.noaccess'\r\n ),\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n },\r\n })\r\n .state('login', {\r\n url: '/login',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.core.login',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/login.html'\r\n ),\r\n controller: 'core.login',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n onlyLoggedOut: true,\r\n },\r\n })\r\n .state('logout', {\r\n url: '/logout',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.core.logout',\r\n 'FrontEnd/Core/Views/logout.html'\r\n ),\r\n controller: 'core.logout',\r\n controllerAs: 'vm' \r\n })\r\n .state('activateaccount', {\r\n url: '/activateaccount/:guid',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.core.login',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/login.html'\r\n ),\r\n controller: 'core.login',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n onlyLoggedOut: true,\r\n },\r\n })\r\n .state('forgotpassword', {\r\n url: '/forgotpassword',\r\n templateUrl: bizCoreProvider.getView(\r\n 'core.forgotpassword',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/forgotpassword.html'\r\n ),\r\n controller: 'core.forgotpassword',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true,\r\n },\r\n })\r\n .state('changepassword', {\r\n url: '/forgotpassword/:guid',\r\n templateUrl: bizCoreProvider.getView(\r\n 'core.forgotpassword',\r\n 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/forgotpassword.html'\r\n ),\r\n controller: 'core.changepassword',\r\n controllerAs: 'vm',\r\n data: {\r\n isPublic: true\r\n }\r\n })\r\n .state('base.home', {\r\n url: '/',\r\n templateUrl: bizCoreProvider.getView(\r\n 'base.home',\r\n 'FrontEnd/views/home.html'\r\n ),\r\n controller: bizCoreProvider.getController(\r\n 'base.home',\r\n 'base.home'\r\n ),\r\n controllerAs: 'vm',\r\n })\r\n .state('cleanbase', {\r\n templateUrl: bizCoreProvider.getView(\r\n 'cleanbase',\r\n 'FrontEnd/views/cleanbase.html'\r\n ),\r\n controller: bizCoreProvider.getController('base', 'base'),\r\n controllerAs: 'vm',\r\n });\r\n\r\n $httpProvider.interceptors.push('loadingInterceptor');\r\n $httpProvider.useApplyAsync(true);\r\n\r\n $translatePartialLoaderProvider.addPart('_combined');\r\n $translateProvider.useLoader('$translatePartialLoader', {\r\n urlTemplate: siteRootPath + 'FrontEnd/i18n/{part}/{lang}.json?v=' + bizPartVersion\r\n });\r\n\r\n var culture = cultureCode.substring(0, 2);\r\n\r\n $translateProvider.preferredLanguage(culture);\r\n $translateProvider.fallbackLanguage('en');\r\n\r\n $translateProvider.forceAsyncReload(true);\r\n $translateProvider.useLoaderCache(true);\r\n moment.locale(culture);\r\n $translateProvider.useSanitizeValueStrategy('sce');\r\n\r\n portalProvider.SetPublicPortal(IsPortalSettingTrue('IsPortalPublic'));\r\n\r\n $translateProvider.preferredLanguage(culture);\r\n $translateProvider.forceAsyncReload(true);\r\n $translateProvider.useLoaderCache(true);\r\n $translateProvider.fallbackLanguage('sv');\r\n $translateProvider.useSanitizeValueStrategy('sce');\r\n }\r\n\r\n function runFunction(\r\n $rootScope,\r\n $http,\r\n $q,\r\n baseService,\r\n bizUser,\r\n $state,\r\n userService,\r\n levelProvider,\r\n $translate,\r\n bizNotificationService,\r\n SignalRFactory,\r\n $transitions,\r\n bizContainerSettings,\r\n $location,\r\n $window,\r\n $translatePartialLoader,\r\n sessionService,\r\n portalProvider,\r\n genericPosition,\r\n bizLoaderService,\r\n $locale,\r\n bizPushNotificationService,\r\n bizJourneyService\r\n ) {\r\n var initializationDefer = $q.defer();\r\n $rootScope.CultureDefer = $q.defer();\r\n $rootScope.Initialized = initializationDefer.promise;\r\n $rootScope.CultureInitialized = $rootScope.CultureDefer.promise;\r\n\r\n $rootScope.$on('$translatePartialLoaderStructureChanged', function () {\r\n $translate.refresh();\r\n });\r\n\r\n $rootScope.RequestFullPageLoader =\r\n bizLoaderService.RequestFullPageLoader;\r\n\r\n levelProvider.setTranslateProvider($translate);\r\n\r\n $rootScope.AuthToken = getBizPartAuthToken();\r\n if (typeof isTestMode === 'undefined' || !isTestMode) {\r\n $http.defaults.headers.common['Auth-Token'] = $rootScope.AuthToken;\r\n }\r\n\r\n $http.defaults.headers.common['PortalId'] = portalId;\r\n $http.defaults.headers.common['Cache-Control'] =\r\n 'max-age=1800, private';\r\n $http.defaults.headers.common['Pragma'] = undefined;\r\n $rootScope.logo = portalSettings['logo'];\r\n $rootScope.poweredby = portalSettings['poweredby'];\r\n $rootScope.QueryParams = $location.search();\r\n $rootScope.menuSettings = menuSettings;\r\n $rootScope.genericpositions = genericPosition;\r\n $rootScope.maxWidth = portalSettings['maxWidth'];\r\n\r\n $rootScope.GetFullscreenCalc = GetFullscreenCalc;\r\n $rootScope.getFullscreenWidth = getFullscreenWidth;\r\n $rootScope.scrollWidth = GetScrollWidth;\r\n\r\n $rootScope.DisableMainMenuSticky = !$rootScope.menuSettings.IsSticky;\r\n $rootScope.Theme = portalTheme;\r\n $rootScope.UnitSettings = GetUnitSettings();\r\n $rootScope.IsInIframe = window.location !== window.parent.location;\r\n $rootScope.HasWebpSupport = false;\r\n $rootScope.PasswordRegex = new RegExp(portalSettings['PasswordRegEx']);\r\n $rootScope.PasswordMinLen = 8;\r\n\r\n function GetUnitSettings() {\r\n // console.log('GetUnitSettings');\r\n var unitcookie = getCookie('UnitSettings');\r\n \r\n if(unitcookie === null || unitcookie === '')\r\n return null;\r\n \r\n return JSON.parse(unitcookie);\r\n }\r\n\r\n $rootScope.GetUnitSettingsImage = function () {\r\n if (!$rootScope.UnitSettings) {\r\n return;\r\n }\r\n\r\n var image = $rootScope.UnitSettings.Image;\r\n\r\n var isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (isDarkMode && $rootScope.UnitSettings.ImageDarkMode && $rootScope.UnitSettings.ImageDarkMode.length > 0) {\r\n image = $rootScope.UnitSettings.ImageDarkMode;\r\n }\r\n\r\n return image;\r\n }\r\n\r\n $rootScope.RandomBetween = function (min, max) {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n };\r\n\r\n $rootScope.GetPreloadedPortalSetting = function (key) {\r\n return portalSettings[key];\r\n }\r\n\r\n $rootScope.HasAcceptedCookieOfType = function (type) {\r\n if (!type) return false;\r\n\r\n if (typeof CustomCheckCookieConsentFn === 'function') {\r\n return CustomCheckCookieConsentFn(type);\r\n }\r\n else {\r\n return getLocalStorage('HasAcceptedCookies') === 'true';\r\n }\r\n }\r\n\r\n $rootScope.MiniSettings = {\r\n Header: {\r\n KeepBgClass: false,\r\n PreventHideOnScroll: false\r\n },\r\n Startpage: {\r\n DisableLoadData: false,\r\n },\r\n Login: {\r\n LoginAdminUrl: siteRootPath + \"admin\",\r\n ShowLogo: false,\r\n ShowPortalName: true,\r\n AlreadyVerifiedRedirectUrl: \"login\"\r\n },\r\n Profile: {\r\n ShowMenu: true,\r\n ShowProfileImage: true,\r\n ShowUserType: true,\r\n ShowMobile: false,\r\n ShowMiddleName: false,\r\n ShowGender: false,\r\n ShowCountry: false,\r\n ShowComment: false,\r\n ShowHiddenInPublicLists: false,\r\n DisableFirstName: false,\r\n DisableLastName: false,\r\n DisableMiddleName: false,\r\n DisableEmail: false,\r\n ShowUnregister: true,\r\n ShowWelcomeLink: true,\r\n CustomHeaderPhrase: undefined,\r\n ShowCustomSettings: false,\r\n DisableCustomSettings: false,\r\n ShowMyRelatedUsers: false,\r\n AutoExpandRelatedUserSystemNamesOnClean: [],\r\n AdditionalProfileSubMenuItems: [],\r\n CustomGenderFilterFn: undefined,\r\n HideHiddenInPublicLists: false,\r\n GenderMandatory: false\r\n },\r\n LikeActions: {\r\n HideCurrentRating: false,\r\n ForRolesOnly: []\r\n },\r\n Register: {\r\n HideUserName: false\r\n },\r\n CompleteRegistration: {\r\n ShowMiddleName: false\r\n },\r\n Logout: {\r\n CustomLogoutFn: undefined\r\n }\r\n };\r\n\r\n $rootScope.GetMiniSetting = function (module, key) {\r\n return $rootScope.MiniSettings[module][key];\r\n }\r\n\r\n check_webp_feature('lossy', function (feature, res) {\r\n //console.log(feature, res);\r\n if (res === false) {\r\n $rootScope.HasWebpSupport = false;\r\n hasWebpSupport = false;\r\n }\r\n });\r\n\r\n function getFullscreenWidth() {\r\n if ($(document).height() > $(window).height()) {\r\n return 'calc(100vw - ' + GetScrollWidth() + 'px)';\r\n } else {\r\n return '100vw';\r\n }\r\n }\r\n\r\n function GetFullscreenCalc() {\r\n if (portalSettings.maxWidth.length > 0) {\r\n return 'calc(-100vw / 2 + ' + portalSettings.maxWidth + ' / 2)';\r\n } else {\r\n return 'calc(-100vw / 2 + 100% / 2)';\r\n }\r\n }\r\n\r\n function GetScrollWidth() {\r\n // Got 11px when the container-page was using the setting: Content align: center, changed to left...\r\n // normaly 17px for windows, 0px on OS X depending on settings.\r\n var scrollWidth = window.innerWidth - $(document).width();\r\n\r\n //console.log('scrollWidth', scrollWidth);\r\n\r\n // This is some scaling issue?\r\n if (scrollWidth == 16) {\r\n scrollWidth = 17;\r\n }\r\n\r\n if (scrollWidth > 17 || scrollWidth < 0) scrollWidth = 17;\r\n\r\n return scrollWidth;\r\n }\r\n\r\n $rootScope.$on('$locationChangeSuccess', function (newValue) {\r\n $rootScope.QueryParams = $location.search();\r\n $rootScope.ExpandMainMenu = false;\r\n\r\n if (!$rootScope.PreventScrollTopOnce) $window.scrollTo(0, 0);\r\n\r\n $rootScope.PreventScrollTopOnce = false;\r\n });\r\n\r\n $q.all([baseService.GetLoggedInUser()]).then(LoadDataDone);\r\n\r\n function LoadDataDone(response) {\r\n bizUser.setLoggedInUser(response[0].data);\r\n $rootScope.LoggedInUser = bizUser.getLoggedInUser();\r\n $rootScope.LoggedInUser.CurrentCultureId = currentCultureId;\r\n $rootScope.LoggedInUser.CurrentCulture = cultureCode;\r\n $rootScope.IsLoggedIn = bizUser.IsLoggedIn();\r\n $rootScope.Logout = userService.Logout;\r\n $rootScope.HasModuleAccess = bizUser.HasModuleAccess;\r\n $rootScope.AccessTypeRight = bizUser.AccessTypeRight;\r\n $rootScope.HasWriteOrHigherAccess = bizUser.HasWriteOrHigherAccess;\r\n $rootScope.IsAdministrator = bizUser.IsAdministrator;\r\n bizContainerSettings.CurrentUserId = $rootScope.LoggedInUser.Id;\r\n bizContainerSettings.CurrentUserCurrency =\r\n $rootScope.LoggedInUser.DefaultVirtualCurrencyValue;\r\n $rootScope.ShowXP =\r\n IsPortalSettingTrue('IsLevelSystemEnabled') && bizUser.HasModuleAccess(\r\n 'LEVEL_SYSTEM',\r\n bizUser.AccessTypeRight.Read\r\n );\r\n $rootScope.ShowCurrency = true; //for use later, when currency is actually implemented\r\n bizContainerSettings.CurrentUserId = $rootScope.LoggedInUser.Id;\r\n\r\n if (cultureCode === 'sv-SE') {\r\n $locale.NUMBER_FORMATS.GROUP_SEP = ' ';\r\n }\r\n\r\n initializationDefer.resolve(true);\r\n console.log(\"angularjs initialized complete\")\r\n document.dispatchEvent(new CustomEvent(\"BizpartfrontendInitialized\"));\r\n\r\n if (bizUser.IsLoggedIn()) {\r\n sessionService.Initialize(sessionTimeoutInSeconds);\r\n sessionService.Start();\r\n if (IsPortalSettingTrue('IsPushNotificationsEnabled')) {\r\n bizPushNotificationService.Initialize();\r\n } \r\n }\r\n\r\n if (portalProvider.IsPortalPublic() || bizUser.IsLoggedIn()) {\r\n baseService\r\n .GetMenuItemsForLoggedInUser()\r\n .then(function (response) {\r\n $rootScope.MenuItems = response.data;\r\n });\r\n }\r\n\r\n $rootScope.SendHubMessageToServer(\r\n 'USER_NOTIFICATION',\r\n 'SEND_UNREAD_NOTIFICATIONS'\r\n );\r\n\r\n createFallbackFavicon($rootScope.Theme.PrimaryColor, $rootScope.Theme.PrimaryTextColor);\r\n\r\n if (navigator.connection) {\r\n navigator.connection.addEventListener('change', updateConnectionStatus);\r\n updateConnectionStatus();\r\n }\r\n }\r\n\r\n\r\n // JOURNEY\r\n var journeysDefer = $q.defer();\r\n $rootScope.JourneysInitialized = journeysDefer.promise;\r\n if (IsPortalSettingTrue('IsJourneyEnabled') && bizUser.IsLoggedIn()) {\r\n bizJourneyService.GetEngageJourneys().then((response) => {\r\n journeysDefer.resolve('');\r\n $rootScope.Journeys = response.data;\r\n });\r\n } else {\r\n journeysDefer.resolve('');\r\n $rootScope.Journeys = [];\r\n }\r\n $rootScope.$on('engageobject.finished', HandleEngageObjectFinished);\r\n\r\n $rootScope.GetNextJourneyItem = function(firstIfAllComplete) {\r\n var defer = $q.defer();\r\n $rootScope.JourneysInitialized.then(() => {\r\n if ($rootScope.Journeys) {\r\n var currentJourneyIsDone = false;\r\n var firstObject;\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n if ($rootScope.Journeys[i].IsCurrentJourney || currentJourneyIsDone) {\r\n var currentJourney = $rootScope.Journeys[i];\r\n for (var j = 0; j < currentJourney.EngageObjects.length; j++) {\r\n if (!firstObject) firstObject = currentJourney.EngageObjects[i];\r\n\r\n if (currentJourney.EngageObjects[j].Status !== 3) {\r\n defer.resolve(currentJourney.EngageObjects[j]);\r\n return;\r\n }\r\n }\r\n currentJourneyIsDone = true;\r\n }\r\n }\r\n if (firstIfAllComplete && firstObject) {\r\n defer.resolve(firstObject);\r\n return;\r\n }\r\n } \r\n defer.resolve(null); \r\n });\r\n return defer.promise;\r\n };\r\n\r\n $rootScope.IsJourneyStarted = function () {\r\n var defer = $q.defer();\r\n $rootScope.JourneysInitialized.then(() => {\r\n if ($rootScope.Journeys) {\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n if ($rootScope.Journeys[i].IsCurrentJourney) {\r\n var currentJourney = $rootScope.Journeys[i];\r\n for (var j = 0; j < currentJourney.EngageObjects.length; j++) {\r\n if (currentJourney.EngageObjects[j].Status === 3) {\r\n defer.resolve(true);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n defer.resolve(false);\r\n });\r\n return defer.promise;\r\n }\r\n\r\n $rootScope.SetCurrentJourney = function (id, gotoNextObject, gotoFirstIfDone) {\r\n if ($rootScope.Journeys && $rootScope.Journeys.length) {\r\n bizJourneyService.SetCurrentJourney(id).then(() => {\r\n var currentJourney;\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n $rootScope.Journeys[i].IsCurrentJourney = $rootScope.Journeys[i].Id === id;\r\n $rootScope.$broadcast(\"CURRENT_JOURNEY_CHANGED\", id);\r\n\r\n if ($rootScope.Journeys[i].IsCurrentJourney) {\r\n currentJourney = $rootScope.Journeys[i];\r\n }\r\n }\r\n\r\n if (gotoNextObject && currentJourney) {\r\n var nextObject;\r\n for (var i = 0; i < currentJourney.EngageObjects.length; i++) {\r\n if (!nextObject && currentJourney.EngageObjects[i].Status !== 3) {\r\n nextObject = currentJourney.EngageObjects[i];\r\n }\r\n }\r\n\r\n if (gotoFirstIfDone && !nextObject && currentJourney.EngageObjects.length > 0) {\r\n nextObject = currentJourney.EngageObjects[0];\r\n }\r\n\r\n if (nextObject) {\r\n bizJourneyService.GoToEngageItem(nextObject);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n $rootScope.GetAllJourneysTotalProgress = function () {\r\n var defer = $q.defer();\r\n $rootScope.JourneysInitialized.then(() => {\r\n var objectCount = 0;\r\n var objectDoneCount = 0;\r\n if ($rootScope.Journeys) {\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) { \r\n for (var j = 0; j < $rootScope.Journeys[i].EngageObjects.length; j++) {\r\n objectCount++;\r\n if ($rootScope.Journeys[i].EngageObjects[j].Status === 3) {\r\n objectDoneCount++;\r\n }\r\n }\r\n }\r\n }\r\n var p = 0;\r\n if (objectCount > 0) {\r\n p = (objectDoneCount * 100) / objectCount;\r\n }\r\n defer.resolve(p);\r\n });\r\n return defer.promise;\r\n }\r\n\r\n function HandleEngageObjectFinished(event, args) {\r\n if (args.status === 3 && $rootScope.Journeys) {\r\n var updatedObjectType = args.objectType;\r\n var updatedObjectId = args.objectId;\r\n var updatedToStatus = args.status;\r\n var anyUpdated = false;\r\n for (var i = 0; i < $rootScope.Journeys.length; i++) {\r\n var updateJourneyProgress = false;\r\n var journey = $rootScope.Journeys[i];\r\n if (journey.EngageObjects.length) {\r\n var finishedCount = 0;\r\n for (var j = 0; j < journey.EngageObjects.length; j++) {\r\n var eo = journey.EngageObjects[j];\r\n if (eo.Id === updatedObjectId\r\n && eo.EngageObjectType === updatedObjectType\r\n && eo.Status !== updatedToStatus) {\r\n eo.Status = updatedToStatus;\r\n updateJourneyProgress = true;\r\n anyUpdated = true;\r\n }\r\n if (eo.Status === 3) {\r\n finishedCount++;\r\n }\r\n }\r\n if (updateJourneyProgress) {\r\n journey.TotalProgress = ((finishedCount * 100) / journey.EngageObjects.length);\r\n }\r\n }\r\n }\r\n\r\n if (anyUpdated) {\r\n $rootScope.$broadcast('JOURNEY_OBJECT_UPDATED');\r\n }\r\n }\r\n }\r\n\r\n\r\n //CONTAINER CONFIG\r\n bizContainerSettings.PortalCustomerName = '';\r\n bizContainerSettings.PortalVersion = 1;\r\n bizContainerSettings.PortalDefaultCulture = 1;\r\n bizContainerSettings.UseApiController = true;\r\n bizContainerSettings.UseEngageCore = true;\r\n\r\n if (portalSettings['GoogleAnalyticsId'] && $rootScope.HasAcceptedCookieOfType('statistics')) {\r\n\r\n $rootScope.GoogleAnalyticCustomTrackers = [];\r\n if (portalSettings['GoogleAnalyticsId'].indexOf(';') > 0) {\r\n var items = portalSettings['GoogleAnalyticsId'].split(';');\r\n $window.ga('create', items[0], 'auto');\r\n\r\n for (var i = 1; i < items.length; i++) {\r\n $rootScope.GoogleAnalyticCustomTrackers.push({\r\n Id: items[i],\r\n Name: 'customTracker_' + i,\r\n });\r\n }\r\n\r\n for (\r\n var i = 0;\r\n i < $rootScope.GoogleAnalyticCustomTrackers.length;\r\n i++\r\n ) {\r\n var id = $rootScope.GoogleAnalyticCustomTrackers[i].Id;\r\n var name = $rootScope.GoogleAnalyticCustomTrackers[i].Name;\r\n $window.ga('create', id, 'auto', name);\r\n }\r\n } else {\r\n $window.ga('create', portalSettings['GoogleAnalyticsId'], 'auto');\r\n }\r\n } \r\n\r\n $transitions.onSuccess({}, function ($transition) {\r\n $rootScope.PreviousState = $transition.$from();\r\n $rootScope.CurrentState = $transition.$to();\r\n $rootScope.CurrentStateClass = $rootScope.CurrentState.name.replace(\r\n /\\./g,\r\n '-'\r\n );\r\n\r\n if ($rootScope.HasAcceptedCookieOfType('statistics')) {\r\n if (portalSettings['GoogleAnalyticsId']) {\r\n $window.ga('send', 'pageview', $location.path());\r\n }\r\n\r\n if ($rootScope.GoogleAnalyticCustomTrackers) {\r\n for (\r\n var i = 0;\r\n i < $rootScope.GoogleAnalyticCustomTrackers.length;\r\n i++\r\n ) {\r\n var name = $rootScope.GoogleAnalyticCustomTrackers[i].Name;\r\n $window.ga(name + '.send', 'pageview', $location.path());\r\n }\r\n }\r\n\r\n if (portalSettings['GoogleTagManagerId']) {\r\n\r\n if ($rootScope.LoggedInUser && $rootScope.LoggedInUser.Id > 0 && !$rootScope.GATHasSetUserId) {\r\n $window.dataLayer.push({\r\n userId: $rootScope.LoggedInUser.Id\r\n });\r\n $rootScope.GATHasSetUserId = true;\r\n }\r\n\r\n $window.dataLayer.push({\r\n event: 'pageView',\r\n attributes: {\r\n route: $location.path(),\r\n },\r\n });\r\n }\r\n }\r\n\r\n var path = window.location.pathname;\r\n if (bizUser.IsLoggedIn()) {\r\n userService.AddUserActivity(\r\n path + '#/admin' + $transition.$to().url,\r\n path + '#/admin' + $transition.$from().url,\r\n 'PAGEVISITS'\r\n );\r\n }\r\n\r\n if (portalSettings.maxWidth.length > 0) {\r\n setTimeout(function () {\r\n $('#base-home').css('max-width', portalSettings.maxWidth);\r\n $('#base-home').css('width', '100%');\r\n $('#base-home').css('margin', 'auto');\r\n }, 0);\r\n }\r\n\r\n $rootScope.LastPageLoadTime = moment();\r\n\r\n sessionService.Refresh();\r\n });\r\n\r\n $transitions.onStart({}, function ($transition) {\r\n var to = $transition.$to();\r\n\r\n function EvaluateAccessRule(to, noAccessState = 'noaccess') {\r\n if (to.data && angular.isFunction(to.data.rule)) {\r\n var result = to.data.rule();\r\n if (!result) {\r\n $transition.abort();\r\n $state.go(noAccessState);\r\n }\r\n }\r\n }\r\n\r\n if (IsPortalSettingTrue('IsPortalPublic')) {\r\n EvaluateAccessRule(to, 'base.home');\r\n\r\n return;\r\n }\r\n\r\n if (!bizUser.IsLoggedIn() && (!to.data || !to.data.isPublic)) {\r\n $transition.abort();\r\n $state.go('login');\r\n return;\r\n } else if (\r\n bizUser.IsLoggedIn() &&\r\n to.data &&\r\n to.data.onlyLoggedOut\r\n ) {\r\n $transition.abort();\r\n $state.go('base');\r\n return;\r\n }\r\n\r\n if (baseService.RedirectUrls && baseService.RedirectUrls[to.name]) {\r\n $transition.abort();\r\n $state.go(baseService.RedirectUrls[to.name]);\r\n return;\r\n }\r\n\r\n if (\r\n to.self.data &&\r\n to.self.data.translateParts &&\r\n to.self.data.translateParts.length\r\n ) {\r\n for (var i = 0; i < to.self.data.translateParts.length; i++) {\r\n $translatePartialLoader.addPart(\r\n to.self.data.translateParts[i]\r\n );\r\n }\r\n }\r\n\r\n EvaluateAccessRule(to);\r\n });\r\n\r\n //SIGNALR NOTIFICATIONS!\r\n $rootScope.MsgQueue = [];\r\n\r\n $rootScope.$on('SHOW_CUSTOM_NOTIFICATION', function (event, message) {\r\n bizNotificationService.AddCustomNotification(message);\r\n });\r\n\r\n $rootScope.$on('ConnectionState.Connected', function (event, args) {\r\n SendMessageQueue();\r\n });\r\n\r\n $rootScope.$on('SignalR.serverMessage', function (event, args) {\r\n console.info(\r\n 'Received SignalR.serverMessage with hub server name ' +\r\n args.HubServerName +\r\n ' and hub key ' +\r\n args.HubKey\r\n );\r\n\r\n if (args.HubServerName == 'HubGeneric') {\r\n $rootScope.$broadcast('HUB_' + args.HubKey, args);\r\n } else {\r\n $rootScope.$broadcast('HUB_' + args.HubServerName, args);\r\n }\r\n }); \r\n\r\n $rootScope.$on('HUB_HubNotification', function (event, args) {\r\n var content = JSON.parse(args.Content);\r\n if (content.Key == 'CUSTOM') {\r\n bizNotificationService.AddCustomNotification(content.Message);\r\n } else {\r\n bizNotificationService.AddInformationNotification(\r\n content.Subject,\r\n content.Message\r\n );\r\n }\r\n }); \r\n\r\n $rootScope.SendHubMessageToServer = SendHubMessageToServer;\r\n window.addEventListener(\r\n 'HubClientSendServerMsg',\r\n HubClientSendServerMessage,\r\n false\r\n );\r\n\r\n function SendHubMessageToServer(hubKey, content, hubServerName) {\r\n var serverMsg = {\r\n HubServerName: hubServerName || 'HubGeneric',\r\n HubKey: hubKey,\r\n Content: content,\r\n };\r\n\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent('HubClientSendServerMsg', true, true, {\r\n d: serverMsg,\r\n });\r\n window.dispatchEvent(evt);\r\n }\r\n\r\n function HubClientSendServerMessage(data) {\r\n var result = data.detail.d;\r\n if (result) {\r\n $rootScope.MsgQueue.push(result);\r\n SendMessageQueue();\r\n }\r\n }\r\n\r\n function SendMessageQueue() {\r\n if (SignalRFactory.IsHubconnected) {\r\n while ($rootScope.MsgQueue.length > 0) {\r\n var msg = $rootScope.MsgQueue.splice(0, 1);\r\n SignalRFactory.send(JSON.stringify(msg[0]));\r\n }\r\n }\r\n }\r\n\r\n SignalRFactory.connect();\r\n }\r\n\r\n //TODO: Add so when we get 401 error we give info to user...\r\n function loadingInterceptorFunction($q) {\r\n function isUrlForTemplateCache(url) {\r\n var urlLC = url.toLowerCase();\r\n for (var i = 0; i < htmlTemplateCachePaths.length; i++) {\r\n if (urlLC.indexOf(htmlTemplateCachePaths[i]) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n return {\r\n request: function (request) {\r\n var htmlIndex = request.url.indexOf('.html');\r\n if (\r\n htmlIndex > 0 &&\r\n htmlIndex == request.url.length - 5 &&\r\n isUrlForTemplateCache(request.url) == false\r\n ) {\r\n request.url = request.url + '?v=' + bizPartVersion;\r\n }\r\n\r\n //request.headers.RequestKey = \"TESTING\";\r\n\r\n return request;\r\n },\r\n response: function (response) {\r\n if (\r\n debugTimes.enabled == true &&\r\n response.headers('Server-Timing')\r\n ) {\r\n var regExp = /([\\d]{1,})/gim;\r\n var match = regExp.exec(response.headers('Server-Timing'));\r\n if (match != null && match.length > 0) {\r\n var totalTime = 0;\r\n for (var i = 0; i < match.length; i++) {\r\n totalTime += ~~match[i];\r\n }\r\n\r\n if (totalTime > debugTimes.threshold) {\r\n console.error(\r\n 'Function took ' +\r\n totalTime +\r\n 'ms to execute in the backend. Method: ' +\r\n response.config.url\r\n );\r\n }\r\n }\r\n }\r\n\r\n return response || $q.when(response);\r\n },\r\n responseError: function (rejection) {\r\n //Send error report...\r\n // if(rejection.code == 500) {\r\n\r\n // }\r\n return $q.reject(rejection);\r\n },\r\n };\r\n }\r\n\r\n function OnLoad () {\r\n var token = getParameterByNameFromUrl('token', location.href);\r\n if (!token) {\r\n token = getBizPartAuthToken();\r\n }\r\n\r\n var prConfigs = $.Deferred();\r\n $.ajax({\r\n url: siteRootPath + 'api/frontend/GetFrontEndConfigurations',\r\n dataType: 'json',\r\n method: 'GET',\r\n headers: {\r\n 'Auth-Token': token,\r\n },\r\n }).then(function (configs) {\r\n viewOverrides = configs.ViewOverrides;\r\n\r\n urlReMapper = configs.UrlReMapper;\r\n notificationSettings = configs.NotificationSettings;\r\n menuSettings = configs.MenuSettings;\r\n mascot = configs.Mascot;\r\n journeySettings = configs.JourneySettings;\r\n prConfigs.resolve();\r\n });\r\n\r\n var prUser = $.Deferred();\r\n\r\n initialUrl = getParameterByNameFromUrl('url', location.href);\r\n var lang = getParameterByNameFromUrl('lang', location.href);\r\n var queryString = '';\r\n\r\n if (lang) {\r\n queryString = '?lang=' + lang;\r\n }\r\n\r\n $.ajax({\r\n url: siteRootPath + 'api/User/GetLoggedInUserSession' + queryString,\r\n dataType: 'json',\r\n headers: {\r\n 'Auth-Token': token,\r\n },\r\n }).then(\r\n function (userSession) {\r\n if (userSession.Token && userSession.Token != '') {\r\n setBizPartAuthToken(userSession.Token, userSession.Id);\r\n }\r\n userData = userSession.User;\r\n cultureCode = userSession.CultureCode;\r\n currentCultureId = userSession.CultureId;\r\n sessionTimeoutInSeconds = userSession.SessionTimeInMinutes * 60;\r\n prUser.resolve();\r\n },\r\n function () {\r\n prUser.resolve();\r\n }\r\n );\r\n\r\n var prFavorites = $.Deferred();\r\n $.when(prUser).then(function () {\r\n if (IsPortalSettingTrue('IsFavoritesEnabled') && userData.Id > 0) {\r\n $.ajax({\r\n url: siteRootPath + 'api/favorites/GetFavorites?deepload=false',\r\n dataType: 'json',\r\n method: 'GET',\r\n headers: {\r\n 'Auth-Token': token,\r\n },\r\n }).then(\r\n function (favorites) {\r\n favoriteObjects = favorites;\r\n prFavorites.resolve();\r\n },\r\n function () {\r\n prFavorites.resolve();\r\n }\r\n );\r\n } else {\r\n prFavorites.resolve();\r\n }\r\n });\r\n \r\n\r\n $.when(prConfigs, prUser, prFavorites).then(function () {\r\n angular.bootstrap(document, ['bizPartEngage'], { strictDi: false }); //set to true to debug minification errors un-minified\r\n });\r\n };\r\n\r\n window.addEventListener(\"load\", OnLoad);\r\n\r\n})(window.angular);\r\n","(function (angular) {\r\n\tangular.module('bizPartEngage').controller('base', baseController);\r\n\tangular.module('bizPartEngage').controller('base.noaccess', baseNoaccessController);\r\n\tangular.module('bizPartEngage').controller('base.home', baseHomeController);\r\n\r\n\tbaseController.$inject = [\"$rootScope\", \"$interval\", \"$timeout\", \"$q\", \"base.service\", \"$state\", \"bizUser\", \"$translate\", \"fireworks\", \r\n\t\t\"$mdDialog\", \"pageTitleNotification\", \"core.level.serivce\", \"bizSocialShareService\", \"screenSize\", \"bizCoreService\", \r\n \"$stateParams\", \"bizHideComponentService\", \"bizCore\", \"core.services.favorite\", \"bizJourneyService\"];\r\n\tbaseNoaccessController.$inject = [];\r\n\tbaseHomeController.$inject = [\"$rootScope\", \"modules.cms.service\", \"$stateParams\", \"container\", \"bizContainerService\",\r\n\t\t\"bizContainerUrls\", \"bizContainerSettings\", \"MetadataService\", \"$filter\", \"$compile\", \"bizCoreService\", \"bizJourneyService\", \"$q\"];\r\n\r\n\tfunction baseController($rootScope, $interval, $timeout, $q, baseService, $state, bizUser, $translate, fireworks, \r\n\t\t$mdDialog, pageTitleNotification, levelService, bizSocialShareService, screenSize, bizCoreService, $stateParams, \r\n bizHideComponentService, bizCoreProvider, favoriteService, bizJourneyService) {\r\n\t\tvar vm = this;\r\n\r\n\t\tvm.Initialize = Initialize;\r\n\t\tvm.SetLanguage = SetLanguage;\r\n\t\tvm.GetExperienceValueFromLastCheck = GetExperienceValueFromLastCheck;\r\n\t\tvm.CheckForLevelUp = CheckForLevelUp;\r\n\t\tvm.StopAnimateExperience = StopAnimateExperience;\r\n\t\tvm.GainExperienceInterval = GainExperienceInterval;\r\n vm.ShowDialog = ShowDialog;\r\n vm.ShowWelcomeGuide = ShowWelcomeGuide;\r\n\t\tvm.DialogQueue = [];\r\n\r\n\t\t$rootScope.Navigate = Navigate;\r\n\t\t$rootScope.FocusElement = FocusElement;\r\n\r\n\t\t$rootScope.desktop = screenSize.is('md, lg');\r\n\t\t$rootScope.mobile = screenSize.is('xs, sm');\r\n\t\t \r\n\t\t$rootScope.desktop = screenSize.on('md, lg', function(match){\r\n\t\t\t$rootScope.desktop = match;\r\n\t\t});\r\n\t\t$rootScope.mobile = screenSize.on('xs, sm', function(match){\r\n\t\t\t$rootScope.mobile = match;\r\n\t\t});\r\n\r\n\t\t$rootScope.HasAcceptedCookies = null;\r\n\r\n\t\tfunction getLocalStorageKeyForWelcomeGuide() {\r\n\t\t\tvar user = bizUser.getLoggedInUser();\r\n\t\t\treturn `HasShownWelcomeGuide_${user?.Id ?? -1}`;\r\n\t\t}\r\n\r\n\t\tfunction Initialize() {\r\n\t\t\tbizHideComponentService.Hide($stateParams.hide);\r\n \r\n if ($stateParams.extmode) { \r\n $rootScope.ExtMode = true;\r\n }\r\n\r\n\t\t\tvm.SetLanguage(bizUser);\r\n\t\t\tif (IsPortalSettingTrue('IsLevelSystemEnabled') && bizUser.IsLoggedIn()) {\r\n\t\t\t\tvm.GetExperienceValueFromLastCheck();\r\n\t\t\t}\r\n\t\t\tif ($rootScope.QueryParams && $rootScope.QueryParams['s']) {\r\n\t\t\t\tbizSocialShareService.AddSocialShareClick({\r\n\t\t\t\t\tSocialShareTrackingId: $rootScope.QueryParams['s']\r\n\t\t\t\t});\r\n } \r\n\r\n\t\t\tbaseService.GetCultures().then(GetCulturesSuccess);\r\n\t\t\tfunction GetCulturesSuccess(response) {\r\n\t\t\t\t$rootScope.Cultures = response.data;\r\n\t\t\t\tfor (var i = 0; i < $rootScope.Cultures.length; i++)\r\n\t\t\t\t\t$rootScope.Cultures[i].QueryString = \"?lang\" + '=' + $rootScope.Cultures[i].CultureCode.substring(0, 2);\r\n\t\t\t}\r\n\r\n if (bizUser.IsLoggedIn()) {\r\n bizCoreService.GetUserSetting(\"HasAcceptedCookies\").then(function (response) {\r\n if (response.data === \"true\") {\r\n $rootScope.HasAcceptedCookies = true;\r\n }\r\n else if (response.data === \"false\") {\r\n $rootScope.HasAcceptedCookies = false;\r\n }\r\n });\r\n }\r\n\r\n\t\t\tif ($rootScope.HasAcceptedCookies == null) {\r\n\t\t\t\t$rootScope.HasAcceptedCookies = getLocalStorage(\"HasAcceptedCookies\");\r\n\t\t\t}\t\t\t\r\n\r\n\t\t\tif (bizUser.IsLoggedIn() && !getLocalStorage(getLocalStorageKeyForWelcomeGuide())) {\r\n var welcomeGuideLayoutComponentType = 6;\r\n\r\n $q.all([\r\n baseService.HasLayoutComponent(welcomeGuideLayoutComponentType),\r\n bizCoreService.GetUserSetting(\"HasShownWelcomeGuide\")\r\n ]).then(function (result) {\r\n var hasWelcomeGuide = result[0].data;\r\n var hasShownWelcomeGuide = result[1].data === \"true\";\r\n\r\n if (hasWelcomeGuide && hasShownWelcomeGuide) {\r\n\t\t\t\t\t\tsetLocalStorage(getLocalStorageKeyForWelcomeGuide(), true);\r\n } else if (hasWelcomeGuide && !hasShownWelcomeGuide) {\r\n vm.ShowWelcomeGuide();\r\n }\r\n });\r\n } else {\r\n const previewWelcomeGuidePages = getSessionStorage('previewWelcomeGuide'); \r\n if (previewWelcomeGuidePages) {\r\n deleteSessionStorage('previewWelcomeGuide');\r\n }\r\n \r\n var isPreview = getParameterByNameFromUrl('wgpreview', location.href); \r\n if (previewWelcomeGuidePages && isPreview === 'true') {\r\n vm.ShowWelcomeGuide(JSON.parse(previewWelcomeGuidePages));\r\n } \r\n }\r\n\r\n\t\t\tHandleFavorites(favoriteObjects);\r\n\t\t}\r\n\r\n\t\tfunction Navigate(state, params) {\r\n\t\t\tif(params) {\r\n\t\t\t\t$state.go(state, params);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$state.go(state);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction FocusElement(elementId, shouldFocus) {\r\n\t\t\tif(shouldFocus === undefined || shouldFocus === true) {\r\n\t\t\t\tsetTimeout(function(eId) {\r\n\t\t\t\t\tdocument.getElementById(eId).focus()\r\n\t\t\t\t}, 0 , elementId);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction SetLanguage(user) {\r\n\t\t\t$translate.use(cultureCode.substring(0, 2)).then(function () {\r\n\t\t\t\t$rootScope.CultureDefer.resolve();\r\n\t\t\t\tmoment.locale(cultureCode.substring(0, 2));\r\n\t\t\t});\r\n\r\n\t\t\t$translate.refresh();\r\n\r\n\t\t\t$rootScope.$broadcast('PORTAL_CULTURE_CHANGE');\r\n\t\t}\r\n\r\n\t\tfunction GetExperienceValueFromLastCheck() {\r\n\t\t\tlevelService.GetExperienceValueFromLastCheck().then(GetExperienceValueFromLastCheckSuccess);\r\n\r\n\t\t\tfunction GetExperienceValueFromLastCheckSuccess(response) {\r\n\t\t\t\tif (~~response.data > 0) {\r\n\t\t\t\t\t//We have gained xp.. \r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.CheckForLevelUp();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction CheckForLevelUp() {\r\n\t\t\tlevelService.CheckForLevelUp().then(CheckForLevelUpSuccess);\r\n\r\n\t\t\tfunction CheckForLevelUpSuccess(response) {\r\n\r\n\t\t\t\tif (response && response.data.length == 1 && response.data[0].RequiredExp == 0) {\r\n\t\t\t\t\t// First login, do not show fireworks, level up..?\r\n\t\t\t\t}\r\n\t\t\t\telse if (response && response.data.length == 1 && response.data[0].RequiredExp > 0) {\r\n\t\t\t\t\tlevelUp(response.data[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse if (response && response.data.length > 1) {\r\n\t\t\t\t\t//Need to handle level up on more then 1 different experience types...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.Initialize();\r\n\r\n\t\t$rootScope.$on('HUB_VIRTUAL_CURRENCY_UPDATE_DEFAULT', virtualcurrencyUpdateDefault);\r\n\t\t$rootScope.$on('HUB_EXPERIENCE_UPDATE_DEFAULT', experienceUpdateDefault);\r\n\t\t$rootScope.$on('HUB_EXPERIENCE_GAIN', experienceGain);\r\n\t\t$rootScope.$on('HUB_LEVEL_GAIN', levelGain);\r\n $rootScope.$on('HUB_NEW_CERTIFICATE', newCertificate);\r\n\r\n $rootScope.$on('HUB_EngageObjectFinished', function (event, args) {\r\n var params = JSON.parse(args.Content);\r\n $rootScope.$broadcast('engageobject.finished', params);\r\n });\r\n\r\n $rootScope.$on('HUB_SESSION_TIMER_REFRESH', BizPart.Client.Core.SessionTimer.Refresh);\r\n\r\n\t\t$rootScope.$on('CONTAINER_BUTTON_PRESSED', SetShown);\r\n\t\t\r\n $rootScope.$on('favorites.change', FavoritesChange); \r\n\r\n\t\tfunction FavoritesChange(e, favorites) {\r\n\t\t\tHandleFavorites(favorites);\r\n\t\t}\r\n\r\n\t\tfunction HandleFavorites(favorites) {\r\n\t\t\t$rootScope.FavoriteTagIds = [];\r\n\r\n\t\t\tfor(var i = 0; i < favorites.length; i++) {\r\n\t\t\t\tif(favorites[i].ObjectType == 103) {\r\n\t\t\t\t\t$rootScope.FavoriteTagIds.push(favorites[i].ObjectId);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//console.log('Favorite tag ids: ', $rootScope.FavoriteTagIds);\r\n\t\t}\r\n\r\n\t\tfunction StopAnimateExperience() {\r\n\t\t\t$rootScope.AnimateExperience = false;\r\n }\r\n\r\n function ShowWelcomeGuide(previewPages) {\r\n\r\n if ($rootScope.ExtMode) {\r\n $rootScope.$broadcast('WELCOMEGUIDE.SHOW');\r\n return;\r\n }\r\n\r\n if (previewPages) {\r\n ShowWindow(false, previewPages);\r\n } else {\r\n bizCoreService.GetWelcomeGuide().then(function (response) {\r\n if (response.data && response.data !== \"\" && response.data !== null) {\r\n\t\t\t\t\t\tconst data = JSON.parse(response.data);\r\n\r\n\t\t\t\t\t\tif ((data.useAdvanced === undefined || data.useAdvanced === true) || data.useAdvanced === false && data.pages !== null)\r\n\t\t\t\t\t\t\tShowWindow(data.useAdvanced, data.pages, data.redirect);\r\n }\r\n });\r\n } \r\n\r\n function ShowWindow(showAdvanced, pages, redirect) {\r\n if (showAdvanced === undefined) {\r\n showAdvanced = true;//backwards compatibility, if setting is missing\r\n }\r\n $mdDialog.show({\r\n parent: angular.element(document.body),\r\n templateUrl: siteRootPath + \"FrontEnd/Views/Dialogs/welcome-guide.html\",\r\n clickOutsideToClose: false,\r\n escapeToClose: false,\r\n controller: welcomeGuideController,\r\n controllerAs: \"vm\",\r\n locals: {\r\n showAdvanced: showAdvanced,\r\n\t\t\t\t\t\tpages: pages,\r\n\t\t\t\t\t\tredirect: redirect\r\n },\r\n bindToController: true\r\n }).then(SetShown, SetShown);\r\n\r\n welcomeGuideController.$inject = [\"$mdDialog\"];\r\n function welcomeGuideController($mdDialog) {\r\n var vm = this;\r\n }\r\n\r\n\t\t\t\t$rootScope.$on('WELCOMEGUIDE.COMPLETED', function (e, data) {\r\n\t\t\t\t\t$mdDialog.hide(data);\r\n\t\t\t\t\tif (data.Redirect) {\r\n\t\t\t\t\t\tNavigate(data.Redirect);\r\n\t\t\t\t\t}\r\n });\r\n }\r\n\t\t}\r\n\t\t\r\n\t\tfunction SetShown(data) {\r\n\t\t\tsetLocalStorage(getLocalStorageKeyForWelcomeGuide(), true);\t\t\t\r\n\t\t\tif ($rootScope.IsLoggedIn) {\r\n\t\t\t\tif (!isSimulating) {\r\n\t\t\t\t\tbizCoreService.UpdateUserSetting(\"HasShownWelcomeGuide\", true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n if (data && data.SelectedJourney && data.SelectedJourney.Id) {\r\n $rootScope.SetCurrentJourney(data.SelectedJourney.Id);\r\n if (data.SelectedJourney.EngageObjects && data.SelectedJourney.EngageObjects.length > 0) {\r\n bizJourneyService.GoToEngageItem(data.SelectedJourney.EngageObjects[0]);\r\n } \r\n }\r\n\t\t} \r\n\r\n\t\tfunction ShowDialog(config, onshow, onclose) {\r\n\t\t\tif (vm.ShowingDialog) {\r\n\t\t\t\tvm.DialogQueue.push({ config: config, onshow: onshow, onclose: onclose });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvm.ShowingDialog = true;\r\n\r\n\t\t\tif (!onclose)\r\n\t\t\t\tonclose = function () { };\r\n\r\n\t\t\tif (onshow)\r\n\t\t\t\tonshow();\r\n\r\n\t\t\tvar dialogPromise = $mdDialog.show({\r\n templateUrl: bizCoreProvider.getView('base.dialog', 'FrontEnd/Views/Dialogs/dialog-primary.html'),\r\n\t\t\t\tcontroller: dialogController,\r\n\t\t\t\tcontrollerAs: \"vm\",\r\n\t\t\t\tlocals: config,\r\n\t\t\t\tbindToController: true\r\n\t\t\t});\r\n\r\n\t\t\tdialogPromise.then(onclose, onclose);\r\n\t\t\tdialogPromise.then(function () {\r\n\t\t\t\tvm.ShowingDialog = false;\r\n\t\t\t\tif (vm.DialogQueue.length) {\r\n\t\t\t\t\tvar d = vm.DialogQueue.splice(vm.DialogQueue.length - 1, 1)[0];\r\n\t\t\t\t\tvm.ShowDialog(d.config, d.onshow, d.onclose);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tdialogController.$inject = [\"$mdDialog\"];\r\n\r\n\t\t\tfunction dialogController($mdDialog) {\r\n\t\t\t\tvar vm = this;\r\n\r\n\t\t\t\tvm.Close = Close;\r\n\r\n\t\t\t\tfunction Close() {\r\n\t\t\t\t\t$mdDialog.hide();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction newCertificate(event, args) {\r\n\t\t\tvar content = JSON.parse(args.Content);\r\n\t\t\tconsole.log(content);\r\n\r\n\t\t\tif (document.hasFocus()) {\r\n\t\t\t\tshowNewCert(content);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tpageTitleNotification.On(\"New certification!\");\r\n\t\t\t\t$(window).on('focus', (function () {\r\n\t\t\t\t\tpageTitleNotification.Off();\r\n\t\t\t\t\tshowNewCert(content);\r\n\r\n\t\t\t\t\t$(window).off('focus');\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction showNewCert(certContent) {\r\n\t\t\tvm.ShowDialog({\r\n\t\t\t\tText: 'Grattis! Du har klarat av #NAME#'.replace(\"#NAME#\", certContent.Name),\r\n\t\t\t\tHideButtons: true,\r\n\t\t\t\tCustomContentTemplateUrl: siteRootPath + \"FrontEnd/Modules/Certifications/Views/new-certification-dialog.html\",\r\n\t\t\t\tAuthToken: $rootScope.AuthToken,\r\n\t\t\t\tCert: certContent\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction virtualcurrencyUpdateDefault(event, args) {\r\n\t\t\t$rootScope.LoggedInUser.DefaultVirtualCurrencyValue = ~~args.Content;\r\n\t\t\t$rootScope.$digest();\r\n\t\t}\r\n\r\n\t\tfunction experienceUpdateDefault(event, args) {\r\n\t\t\t$rootScope.LoggedInUser.DefaultExperiencePoints = ~~args.Content;\r\n\t\t\t$rootScope.$digest();\r\n\t\t}\r\n\t\tfunction ShowEngagementTip() {\r\n\t\t\t// vm.ShowDialog({\r\n\t\t\t// \tCustomContentTemplateUrl: siteRootPath + \"FrontEnd/Views/Dialogs/engagement-tip.html\",\r\n\t\t\t\t\r\n\t\t\t// });\r\n\t\t}\r\n\r\n\t\tShowEngagementTip();\r\n\r\n function experienceGain(event, args) {\r\n if (!$rootScope.ShowXP) { \r\n return;\r\n }\r\n\r\n\t\t\tvar content = JSON.parse(args.Content);\r\n\r\n\t\t\t$rootScope.LoggedInUser.DefaultExperiencePointsStart = angular.copy($rootScope.LoggedInUser.DefaultExperiencePoints);\r\n\r\n\t\t\t$rootScope.AnimateExperience = true;\r\n\r\n\t\t\t$timeout(vm.StopAnimateExperience, 2500);\r\n\r\n\t\t\tvm.pointsEarned = content.TotalExperiencePoints;\r\n\t\t\tvm.ExpInterval = $interval(vm.GainExperienceInterval, 50, 0, true, (vm.pointsEarned / 50));\r\n\t\t\tvm.countedPoints = 0;\r\n\t\t}\r\n\r\n\t\tfunction GainExperienceInterval(amount) {\r\n\t\t\tvm.countedPoints += amount;\r\n\t\t\t$rootScope.LoggedInUser.DefaultExperiencePoints += amount;\r\n\r\n\t\t\tif (vm.countedPoints >= vm.pointsEarned) {\r\n\t\t\t\t$rootScope.LoggedInUser.DefaultExperiencePoints = $rootScope.LoggedInUser.DefaultExperiencePointsStart + vm.pointsEarned;\r\n\t\t\t\t$interval.cancel(vm.ExpInterval);\r\n\t\t\t}\r\n\t\t}\r\n\r\n function levelGain(event, args) {\r\n if (!$rootScope.ShowXP) {\r\n return;\r\n }\r\n\r\n\t\t\tvar content = JSON.parse(args.Content);\r\n\t\t\tconsole.log(content);\r\n\t\t\t$rootScope.LoggedInUser.DefaultLevel = content;\r\n\t\t\tif (document.hasFocus()) {\r\n\t\t\t\tlevelUp(content);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tpageTitleNotification.On(\"Level up!\");\r\n\t\t\t\t$(window).on('focus', (function () {\r\n\t\t\t\t\tpageTitleNotification.Off();\r\n\t\t\t\t\tlevelUp(content);\r\n\r\n\t\t\t\t\t$(window).off('focus');\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction levelUp(levelContent) {\r\n\t\t\t$translate('CORE.LEVELUPDIALOG').then(function (translation) {\r\n\t\t\t\tvar textToShow = translation.$$unwrapTrustedValue().replace(\"#LEVEL#\", levelContent.Name);\r\n\r\n\t\t\t\tvm.ShowDialog({\r\n\t\t\t\t\tText: textToShow,\r\n\t\t\t\t\tHideButtons: true\r\n\t\t\t\t}, function () {\r\n\t\t\t\t\tfireworks.show();\r\n\t\t\t\t}, function () {\r\n\t\t\t\t\tfireworks.hide();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\tfunction baseNoaccessController() {\r\n\t\tvar vm = this;\r\n\t}\r\n\r\n\tfunction baseHomeController($rootScope, cmsService, $stateParams, container, bizContainerService, bizContainerUrls, bizContainerSettings, \r\n MetadataService, $filter, $compile, bizCoreService, bizJourneyService, $q) {\r\n\t\tvar vm = this;\r\n\t\tvm.PageIdentifier = portalSettings['StartPageId'];\r\n\t\tvm.Journeys = [];\r\n vm.JourneyItemsPerRow = 0;\r\n\r\n var isStartPageDataLoaded = $q.defer();\r\n var isStartPageDataLoadedPromise = isStartPageDataLoaded.promise;\r\n\t\t\r\n\t\t// if (~~vm.PageIdentifier <= 0)\r\n\t\t// \tvm.PageIdentifier = 1;\r\n\r\n vm.GetCMSPage = GetCMSPage;\r\n vm.GoToNextJourneyItem = GoToNextJourneyItem;\r\n\r\n bizContainerSettings.ContainerRefererType = \"CMS\";\r\n\r\n function GoToNextJourneyItem() {\r\n $rootScope.GetNextJourneyItem(true).then(function (eo) {\r\n if(eo) \r\n bizJourneyService.GoToEngageItem(eo);\r\n }); \r\n } \r\n\r\n\t\tfunction GetCMSPage() {\r\n\t\t\tcmsService.GetCMSPageById(vm.PageIdentifier).then(GetCmsPageSuccess);\r\n\r\n\t\t\tfunction GetCmsPageSuccess(response) {\r\n\t\t\t\tvm.Page = response.data;\r\n\t\t\t\tvm.Page.Container = new container(vm.Page.Container);\r\n\r\n\t\t\t\tvar imageModules = vm.Page.Container.getModules(\"IMAGE\");\r\n\t\t\t\tvar imageUrl = ogDefaultImage;\r\n\t\t\t\tif ((!imageUrl || imageUrl == \"\") && imageModules.length > 0) {\r\n\t\t\t\t\timageUrl = imageModules[0].Content.ImageUrl;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tMetadataService.setMetaTags({\r\n\t\t\t\t\ttitle: vm.Page.Title,\r\n\t\t\t\t\tdescription: vm.Page.Description,\r\n\t\t\t\t\tkeywords: vm.Page.Keywords,\r\n\t\t\t\t\timg: imageUrl\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvm.GetItemWidth = GetItemWidth;\r\n\r\n function GetItemWidth() {\r\n return 100 / vm.JourneyItemsPerRow;\r\n }\r\n\r\n\t\tvm.$onInit = function () {\r\n\t\t\t\r\n\t\t\tfunction getStartpageDataSuccess(response) {\r\n\t\t\t\tif (response.data && response.data !== \"\" && response.data !== null) {\r\n vm.StartPageData = JSON.parse(response.data);\r\n console.log(\"startpage data\", vm.StartPageData);\r\n\r\n vm.StartPageData.MainBanner.Color = 'light';\r\n isStartPageDataLoaded.resolve('');\r\n\t\t\t\t}\r\n else { \r\n\t\t\t\t\t//This is the default settings for a new portal...\r\n\t\t\t\t\tvm.StartPageData = {\r\n\t\t\t\t\t\tMainBanner: {\r\n\t\t\t\t\t\t\tShow: true,\r\n\t\t\t\t\t\t\tImage: { FileUrl: \"\" },\r\n\t\t\t\t\t\t\tButtonLink: \"\",\r\n ButtonType: \"btn\",\r\n Fullscreen: true,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: \"Lorem ipsum dolor sit amet\"\r\n }\r\n ],\r\n TextTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: \"Donec nec enim commodo, lobortis risus sollicitudin, luctus augue. Ut ultricies placerat diam, vitae suscipit turpis volutpat a. Nulla facilisi. Phasellus varius blandit convallis.\"\r\n }\r\n ],\r\n SelectedColor: {\r\n Value: \"dark\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tBlogModule: {\r\n\t\t\t\t\t\t\tShow: true,\r\n\t\t\t\t\t\t\tFilter: \"newest\",\r\n\t\t\t\t\t\t\tText: \"\",\r\n\t\t\t\t\t\t\tButtonType: \"btn\",\r\n Limit: 4,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: cultureCode === 'sv-SE' ? \"Blogg\" : \"Blog\"\r\n }\r\n ],\r\n SelectedButtonType: {\r\n Value: \"btn\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tEducationModule: {\r\n\t\t\t\t\t\t\tShow: true,\r\n Filter: \"newest\",\r\n\t\t\t\t\t\t\tHeader: \"Our educations\",\r\n\t\t\t\t\t\t\tText: \"\",\r\n\t\t\t\t\t\t\tButtonType: \"link\",\r\n Limit: 4,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: cultureCode === 'sv-SE' ? \"Här finns våra online-utbildningar\" : \"Our educations\"\r\n }\r\n ],\r\n SelectedButtonType: {\r\n Value: \"btn\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tVideoModule: {\r\n\t\t\t\t\t\t\tShow: true,\r\n Filter: \"newest\",\r\n\t\t\t\t\t\t\tHeader: \"Our videos\",\r\n\t\t\t\t\t\t\tText: \"\",\r\n\t\t\t\t\t\t\tButtonType: \"link\",\r\n Limit: 3,\r\n HeaderTranslations: [\r\n {\r\n CultureId: currentCultureId,\r\n Value: cultureCode === 'sv-SE' ? \"Våra filmer\" : \"Our videos\"\r\n }\r\n ],\r\n SelectedButtonType: {\r\n Value: \"btn\"\r\n }\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tJourney: {\r\n\t\t\t\t\t\t\tShow: false,\r\n\t\t\t\t\t\t\tJourneyItemsPerRow: 10,\r\n\t\t\t\t\t\t\tView: \"full\",\r\n\t\t\t\t\t\t\tShowTags: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tEvent: {\r\n\t\t\t\t\t\t\tShow: false\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvm.JourneyItemsPerRow = ~~vm.StartPageData.Journey.ItemsPerRow;\r\n\r\n\t\t\t\tif (vm.JourneyItemsPerRow <= 0)\r\n\t\t\t\t\tvm.JourneyItemsPerRow = 10;\r\n\r\n if (vm.StartPageData.Journey && vm.StartPageData.Journey.View === 'mini') {\r\n vm.miniSettings = {\r\n ItemCount: ~~vm.JourneyItemsPerRow > 0 ? ~~vm.JourneyItemsPerRow : 5,\r\n ShowTags: vm.StartPageData.Journey.ShowTags === true\r\n };\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (vm.StartPageData.Journey && vm.StartPageData.Journey.View === 'hero') {\r\n\t\t\t\t\tif (vm.JourneyItemsPerRow < 3)\r\n\t\t\t\t\t\tvm.JourneyItemsPerRow = 3;\r\n\t\t\t\t\tif (vm.JourneyItemsPerRow > 4)\r\n\t\t\t\t\t\tvm.JourneyItemsPerRow = 4;\r\n\t\t\t\t}\r\n\r\n $rootScope.IsJourneyStarted().then((isStarted) => {\r\n if (isStarted) {\r\n vm.StartPageData.MainBanner.JourneyButtonTextTranslations = vm.StartPageData.MainBanner.ButtonTextSecondaryTranslations;\r\n } else {\r\n vm.StartPageData.MainBanner.JourneyButtonTextTranslations = vm.StartPageData.MainBanner.ButtonTextTranslations;\r\n }\r\n });\r\n\r\n isStartPageDataLoaded.resolve('');\r\n\t\t\t}\r\n\r\n\t\t\tif (~~vm.PageIdentifier > 0) {\r\n\t\t\t\tvm.GetCMSPage();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t//Get the standard startpage\r\n //bizCoreService.GetPortalsetting(\"STARTPAGE_DATA\").then(getStartpageDataSuccess);\r\n\r\n\t\t\t\tif ($rootScope.MiniSettings.Startpage.DisableLoadData === false) {\r\n\t\t\t\t\tbizCoreService.GetStartPageData().then(getStartpageDataSuccess);\r\n }\r\n }\r\n\r\n var pList = [\r\n isStartPageDataLoadedPromise,\r\n $rootScope.JourneysInitialized\r\n ];\r\n\r\n $q.all(pList).then(() => {\r\n var journeys = [];\r\n if ($rootScope.Journeys) {\r\n \r\n\t\t\t\t\tvar maxItems = vm.JourneyItemsPerRow;\r\n\t\t\t\t\tif (vm.StartPageData.Journey && vm.StartPageData.Journey.View === 'hero' && vm.JourneyItemsPerRow > 4) {\r\n maxItems = 4; \r\n }\r\n\r\n for (var i = 0; i < $rootScope.Journeys.length && i < maxItems; i++) {\r\n journeys.push($rootScope.Journeys[i]); \r\n }\r\n }\r\n vm.TotalJourneyCount = $rootScope.Journeys.length;\r\n vm.Journeys = journeys;\r\n });\t\t\t\r\n\t\t}\r\n\t}\r\n})(window.angular);","(function(angular) {\r\n\tangular.module('bizPartEngage').directive('compareTo', compareToDirective);\r\n\tangular.module('bizPartEngage').directive('bizGo', bizGoDirective);\r\n\tangular.module('bizPartEngage').directive('bizHideComponent', bizHideComponentDirective);\r\n\tangular.module('bizPartEngage').service('bizHideComponentService', bizHideComponentService);\r\n\tangular.module('bizPartEngage').service('bizPhraseLogService', bizPhraseLogService);\r\n\r\n\tbizHideComponentDirective.$inject = [\"bizHideComponentService\"];\r\n\tbizHideComponentService.$inject = [\"$q\"];\r\n\r\n\tbizPhraseFilter.$inject = [\"$translate\", \"$rootScope\"]\r\n\tbizPhraseDirective.$inject = [\"$rootScope\", \"$translate\", \"$filter\", \"$compile\", \"$timeout\", \"bizPhraseLogService\"];\r\n\r\n\tbizPhraseLogService.$inject = [\"bizCoreService\", \"$q\", \"$http\"];\r\n\r\n\tfunction bizPhraseLogService(bizCoreService, $q, $http) {\r\n\t this.Phrases = [];\r\n\r\n\t this.IsEnabled = function () {\r\n\t if (this.Promise)\r\n\t return this.Promise;\r\n\r\n\t var defer = $q.defer();\r\n\t this.Promise = defer.promise;\r\n\r\n\t bizCoreService.Admin.GetGenericSetting('CULTURE', 'bizPhraseLoggingEnabled', 0).then(function (response) {\r\n\t defer.resolve(response.data);\r\n\t });\r\n\r\n\t return this.Promise;\r\n\t };\r\n\r\n\t this.LogPhrase = function (key, value, culture) {\r\n\t this.IsEnabled().then(function (data) {\r\n\t if (!data || data.Value.toLowerCase() == 'false')\r\n\t return;\r\n\r\n\t $http.get(siteRootPath + \"api/culture/LogBizPhrase\", { params: { key: key, value: value, culture: culture } });\r\n\t })\r\n\t }\r\n\t}\r\n\r\n\tfunction bizHideComponentDirective(bizHideComponentService) {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"A\",\r\n\t\t\tlink: linkFunction\r\n\t\t}\r\n\r\n\t\tfunction linkFunction(scope, elem, attrs) {\r\n\t\t\tbizHideComponentService.Hiding().then(function (components) {\r\n\t\t\t\tif (!components[attrs.bizHideComponent])\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\telem.remove();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n\r\n\tfunction bizHideComponentService($q) {\r\n\t\tvar hiddenComponents = {};\r\n\t\tvar initializing = $q.defer();\r\n\r\n\t\treturn {\r\n\t\t\tHide: Hide,\r\n\t\t\tHiding: Hiding\r\n\t\t};\r\n\r\n\t\tfunction Hide(components) {\r\n\t\t\tif (!components) {\r\n\t\t\t\tcomponents = getLocalStorage(\"bizHideComponents\");\r\n\r\n\t\t\t\tif (!components)\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tsetLocalStorage(\"bizHideComponents\", components);\r\n\r\n\t\t\tcomponents = components.split(\",\");\r\n\t\t\tfor (var i = 0; i < components.length; i++) {\r\n\t\t\t\thiddenComponents[components[i]] = true;\r\n\t\t\t}\r\n\r\n\t\t\tinitializing.resolve(hiddenComponents);\r\n\t\t}\r\n\r\n\t\tfunction Hiding() {\r\n\t\t\treturn initializing.promise;\r\n\t\t}\r\n\t}\r\n\r\n function compareToDirective() {\r\n var directive = {\r\n require: \"ngModel\",\r\n scope: {\r\n otherModelValue: \"=compareTo\"\r\n },\r\n link: compareToLink\r\n }\r\n\r\n function compareToLink(scope, element, attributes, ngModel) {\r\n ngModel.$validators.compareTo = function (modelValue) {\r\n return modelValue == scope.otherModelValue;\r\n };\r\n\r\n scope.$watch(\"otherModelValue\", function () {\r\n ngModel.$validate();\r\n });\r\n }\r\n\r\n return directive;\r\n }\r\n\r\n function bizPhraseDirective($rootScope, $translate, $filter, $compile, $timeout, bizPhraseLogService) {\r\n \tvar directive = {\r\n \t\trestrict: \"A\",\r\n\t\t\tlink: linkFunction\r\n \t};\r\n\r\n \tfunction linkFunction(scope, element, attrs) {\r\n \t\t$rootScope.CultureInitialized.then(function () {\r\n \t\t $translate(attrs.bizPhrase).then(function (translation) {\r\n \t\t element.text(translation);\r\n\r\n \t\t if (!bizPhraseLogService.Phrases.GetItemByValue('Key', attrs.bizPhrase))\r\n \t\t bizPhraseLogService.LogPhrase(attrs.bizPhrase, translation.toString(), $translate.use());\r\n \t\t bizPhraseLogService.Phrases.push({ Key: attrs.bizPhrase });\r\n\r\n \t\t }, function () {\r\n \t\t if (!bizPhraseLogService.Phrases.GetItemByValue('Key', attrs.bizPhrase)) {\r\n \t\t bizPhraseLogService.LogPhrase(attrs.bizPhrase, \"\", $translate.use());\r\n \t\t bizPhraseLogService.Phrases.push({ Key: attrs.bizPhrase });\r\n \t\t }\r\n \t\t\t\tconsole.warn(String.format(\"bizPhrase | Phrase not found for current culture ({0}): {1}\", $translate.use(), attrs.bizPhrase));\r\n \t\t\t});\r\n \t\t});\r\n \t}\r\n\r\n \treturn directive;\r\n }\r\n\r\n function bizPhraseFilter($translate, $rootScope) {\r\n \tvar phrases = {};\r\n \tvar promises = {};\r\n \treturn function (key) {\r\n \t\tif (phrases[key])\r\n \t\t\treturn phrases[key];\r\n\r\n \t\tif (promises[key])\r\n \t\t\treturn;\r\n\r\n \t\tpromises[key] = true;\r\n\r\n \t\t$rootScope.CultureInitialized.then(function () {\r\n \t\t\t$translate(key).then(function (translation) {\r\n \t\t\t\tphrases[key] = translation.toString();\r\n \t\t\t}, function (key) {\r\n \t\t\t\tphrases[key] = undefined;\r\n \t\t\t\tconsole.warn(String.format(\"bizPhrase | Phrase not found for current culture ({0}): {1}\", $translate.use(), key));\r\n \t\t\t});\r\n \t\t});\r\n \t}\r\n }\r\n\r\n\tfunction bizGoDirective() {\r\n\t\tvar directive = {\r\n\t\t\trestrict: \"A\",\r\n\t\t\tlink: bizGoLink\r\n\t\t};\r\n\r\n\t\tfunction bizGoLink(scope, element, attrs) {\r\n\t\t\tvar path = \"\";\r\n\r\n\t\t\tattrs.$observe('bizGo', function (val) {\r\n\t\t\t\tpath = val;\r\n\t\t\t});\r\n\r\n\t\t\telement.bind('click', function () {\r\n\t\t\t\tif (path && path != \"\") {\r\n\t\t\t\t\twindow.location.href = path;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn directive;\r\n\t}\r\n})(window.angular);\r\n","(function (angular) {\r\n angular.module('bizPartEngage').filter('hoursto', function () {\r\n return function (time, isutc) {\r\n if (time) {\r\n var from = moment();\r\n if (isutc) {\r\n var date = new Date();\r\n from = from.add(date.getTimezoneOffset(), 'minutes');\r\n }\r\n var to = moment(time);\r\n var duration = moment.duration(to.diff(from));\r\n return Math.floor(duration.asHours()) + 'H ' + duration.minutes() + 'M';\r\n }\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('date', function () {\r\n return function (value, format) {\r\n if (value)\r\n return moment(value).format(format || 'L');\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('time', function () {\r\n return function (value) {\r\n if (value)\r\n return moment(value).format('LT');\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('timeSince', timeSince);\r\n\r\n timeSince.$inject = [\"$translate\"];\r\n\r\n function timeSince($translate) {\r\n return function(time) {\r\n var justNow = $translate.instant(\"CORE.JUST_NOW\");\r\n return moment(time).fromNowOrNow(undefined, justNow.toString());\r\n }\r\n }\r\n\r\n angular.module('bizPartEngage').filter('datetime', function () {\r\n return function (value, isutc) {\r\n if (value) {\r\n if (isutc) {\r\n var m = moment(value);\r\n return m.subtract(m.utcOffset(), 'm').format('L LT');\r\n }\r\n return moment(value).format('L LT');\r\n }\r\n }\r\n });\r\n\r\n angular.module('bizPartEngage').filter('xptype', xptypeFilter);\r\n\r\n xptypeFilter.$inject = [\"bizLevel\"];\r\n\r\n function xptypeFilter(levelProvider) {\r\n \tvar cache = {};\r\n\r\n function xptypeFilterFunction(value) {\r\n \tif (cache[value]) {\r\n return cache[value];\r\n \t}\r\n \telse {\r\n \t\tcache[value] = \"Loading translation...\";\r\n \t\tlevelProvider.getExperienceTypeLabel(value).then(function (val) {\r\n cache[value] = val;\r\n \t\t}, function (err) {\r\n \t\t\tconsole.log(\"Failed to find translation:\" + err);\r\n \t\t\tcache[value] = \"Failed to load translation\";\r\n \t\t});\r\n }\r\n }\r\n xptypeFilterFunction.$stateful = true;\r\n\r\n return xptypeFilterFunction;\r\n }\r\n})(window.angular);\r\n","(function(angular) {\r\n\tangular.module('bizPartEngage').service('base.service', baseService);\r\n angular.module('bizPartEngage').service('bizNotificationService', bizNotificationService);\r\n angular.module('bizPartEngage').service('bizPushNotificationService', bizPushNotificationService);\r\n\r\n angular.module('bizPartEngage').service('MetadataService', ['$window', '$filter', function ($window, $filter) {\r\n var self = this;\r\n self.setMetaTags = function (tagData) {\r\n $window.document.getElementsByName('title')[0].content = tagData.title;\r\n $window.document.getElementsByName('description')[0].content = tagData.description;\r\n\r\n if (tagData.keywords)\r\n $window.document.getElementsByName('keywords')[0].content = tagData.keywords;\r\n\r\n //Open graph...\r\n if (tagData.title && tagData.title.length > 0)\r\n document.getElementById('og-title').content = tagData.title;\r\n\r\n if (tagData.description && tagData.description.length > 0)\r\n document.getElementById('og-description').content = tagData.description;\r\n\r\n if (tagData.img && tagData.img.length > 0)\r\n document.getElementById('og-image').content = $filter('fullsitepath')(tagData.img);\r\n\r\n if (tagData.video && tagData.video.length > 0)\r\n document.getElementById('og-video').content = $filter('fullsitepath')(tagData.video);\r\n\r\n document.getElementById('og-url').content = location.href;\r\n\r\n if (tagData.appendPortalNameLast && tagData.appendPortalNameLast === true)\r\n $window.document.title = htmlDecode((tagData.title.length > 0 ? tagData.title + \" - \" : '') + portalName);\r\n else\r\n $window.document.title = htmlDecode(portalName + (tagData.title.length > 0 ? \" - \" + tagData.title : '')); \r\n };\r\n }]);\r\n\r\n baseService.$inject = [\"$http\", \"$state\", \"$filter\"];\r\n bizNotificationService.$inject = [\"$timeout\", \"$mdToast\"];\r\n bizPushNotificationService.$inject = [\"$http\", \"$mdToast\"];\r\n\r\n function baseService($http, $state, $filter) {\r\n \tthis.AddTranslatePartsToState = function (stateName, parts) {\r\n \t\tvar state = $state.get(stateName);\r\n \t\tif (!state)\r\n \t\t\treturn;\r\n\r\n \t\tif (!state.data)\r\n \t\t\tstate.data = { translateParts: [] };\r\n\t\t\telse if (!state.data.translateParts)\r\n \t\t\tstate.data.translateParts = [];\r\n\r\n \t\tstate.data.translateParts = state.data.translateParts.concat(parts);\r\n \t}\r\n\r\n this.GetMenuItemsForLoggedInUser = function() {\r\n return $http.get(siteRootPath + 'api/menu/GetMenuItemsForLoggedInUser');\r\n };\r\n\r\n this.GetLoggedInUser = function() {\r\n return $http.get(siteRootPath + 'api/User/GetLoggedInUser');\r\n };\r\n\r\n this.GetCultures = function () {\r\n return $http.get(siteRootPath + 'api/culture/GetCultures');\r\n };\r\n\r\n this.HasLayoutComponent = function (type) {\r\n return $http.get(siteRootPath + 'api/layout/HasLayoutComponent', {\r\n params: {\r\n type: type\r\n }\r\n });\r\n }\r\n\r\n this.GetGlobalSiteTitle = function () {\r\n return $http.get(siteRootPath + 'api/layout/GetGlobalSiteTitle');\r\n }\r\n\r\n this.GetFrontEndModuleSettingValue = function (module, key) {\r\n if (moduleSettings) {\r\n var settings = moduleSettings.GetItemByValue('ModuleName', module);\r\n if (settings && settings.Settings) {\r\n var s = settings.Settings.GetItemByValue('Key', key);\r\n return s ? s.Value : undefined;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n this.UpdateFrontEndModuleSettingValue = function (module, key, value) { \r\n if (moduleSettings) {\r\n var settings = moduleSettings.GetItemByValue('ModuleName', module);\r\n if (settings && settings.Settings) {\r\n var s = settings.Settings.GetItemByValue('Key', key);\r\n if (s) {\r\n s.Value = value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.GetSiteRootPath = function (value) {\r\n return $filter(\"siteroot\")(value)\r\n }\r\n }\r\n\r\n function bizNotificationService($timeout, $mdToast) {\r\n this.AddInformationNotification = function (header, body, timeout) {\r\n var guid = randomString(5);\r\n var html = '
' + header + '
' + body + '
'\r\n var bizNotification = angular.element(document.querySelector('#bizNotification'));\r\n\r\n bizNotification.append(html);\r\n\r\n $timeout(function (id) {\r\n angular.element(document.querySelector('#' + id)).addClass('hide-notification');\r\n\r\n $timeout(function (elemId) {\r\n angular.element(document.querySelector('#' + elemId)).remove();\r\n }, 350, true, id);\r\n\r\n }, timeout || 10000, true, guid);\r\n }\r\n\r\n this.AddCustomNotification = function (content) {\r\n var template = '' + content + '';\r\n $mdToast.show({\r\n position: 'top center',\r\n parent: angular.element(document.body),\r\n hideDelay: 20000,\r\n template: template,\r\n autoWrap: true,\r\n controllerAs: 'vm',\r\n controller: function ($mdToast) {\r\n var vm = this;\r\n vm.close = function () {\r\n $mdToast.hide();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function randomString(len) {\r\n charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\r\n var randomString = '';\r\n for (var i = 0; i < len; i++) {\r\n var randomPoz = Math.floor(Math.random() * charSet.length);\r\n randomString += charSet.substring(randomPoz, randomPoz + 1);\r\n }\r\n return randomString;\r\n }\r\n }\r\n\r\n function bizPushNotificationService($http, $mdToast) {\r\n var messaging;\r\n\r\n this.Initialize = function () {\r\n try {\r\n firebase.initializeApp(firebaseConfig);\r\n messaging = firebase.messaging();\r\n\r\n messaging.onMessage(function (payload) {\r\n console.log('PAYLOAD', payload);\r\n if (payload && payload.data && payload.data.show_on_site === \"True\") {\r\n ShowOnSite(payload);\r\n }\r\n });\r\n navigator.serviceWorker.register(siteRootPath + \"firebase-messaging-sw.js\")\r\n .then((registration) => {\r\n messaging.useServiceWorker(registration);\r\n Notification.requestPermission().then((permission) => {\r\n if (permission === 'granted') {\r\n console.log('Notification permission granted.');\r\n // TODO(developer): Retrieve an Instance ID token for use with FCM.\r\n // ...\r\n GetFCMToken();\r\n } else {\r\n console.log('Unable to get permission to notify.');\r\n }\r\n });\r\n });\r\n\r\n messaging.usePublicVapidKey(\"BJz2MR7KAppIhe0N3M4nX2VH6boXvxpXxdVcPUVDdSL8P7kGFe1s3pYNBhSol3SV22EOkDmbB7wa4uup0G2QUQE\");\r\n } catch (error) {\r\n console.log('ERROR INITIALIZING FIREBASE!');\r\n console.log(error);\r\n } \r\n };\r\n\r\n function ShowOnSite(payload) {\r\n var template = '' + payload.data.body + '';\r\n $mdToast.show({\r\n position: 'top center',\r\n parent: angular.element(document.body),\r\n hideDelay: 10000,\r\n template: template,\r\n autoWrap: true,\r\n controllerAs: 'vm',\r\n controller: function ($mdToast) {\r\n var vm = this;\r\n vm.close = function () {\r\n $mdToast.hide();\r\n }\r\n vm.click = function () {\r\n if (payload.data.click_action) {\r\n location.href = payload.data.click_action;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n function AddPushNotificationId (notificationId, type) {\r\n return $http.get(siteRootPath + \"api/PushNotification/AddPushNotificationId?\" + $.param({ id: notificationId,\r\n type: type || 1 }));\r\n };\r\n\r\n function ValidatePushNotificationId (notificationId) {\r\n return $http.get(siteRootPath + \"api/PushNotification/ValidatePushNotificationId?\" + $.param({id: notificationId}));\r\n };\r\n\r\n function GetFCMToken() {\r\n messaging.getToken().then((currentToken) => {\r\n if (currentToken) {\r\n console.log('Current token: ', currentToken)\r\n ValidatePushNotificationId(currentToken).then(function(valid) {\r\n if(!valid.data) {\r\n AddPushNotificationId(currentToken);\r\n }\r\n else {\r\n console.log('You are already registered with token: ', currentToken);\r\n }\r\n });\r\n\r\n } else {\r\n // Show permission request.\r\n console.log('No Instance ID token available. Request permission to generate one.');\r\n // Show permission UI.\r\n // updateUIForPushPermissionRequired();\r\n // setTokenSentToServer(false);\r\n }\r\n }).catch((err) => {\r\n console.log('An error occurred while retrieving token. ', err);\r\n //showToken('Error retrieving Instance ID token. ', err);\r\n //setTokenSentToServer(false);\r\n });\r\n }\r\n }\r\n})(window.angular);\r\n","\n(function (angular){angular.module('bizPartEngage').run(['$templateCache', function ($templateCache){\n 'use strict';\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/ActivityReminders.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/AdminBar.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/CookieSettings.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/CountdownTimer.html',\r\n \"
Start meeting
Cancel meeting
Reset

har startat mötet

.

Kvar

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/CultureSelector.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/DefaultLevelProgress.html',\r\n \"

{{vm.CurrentLevel.Name}}

0\\\">

{{vm.ExpLeftToNextLevel}} {{'CORE.EXPERIENCEPOINTSTO' | translate}} {{vm.NextLevel.Name}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageJourney.html',\r\n \"

Remaining experience: {{::journey.RemainingExperience}}

Remaining virtual currency: {{::journey.RemainingVirtualCurrency}}


| {{::object.Name}}

Status:

Experience: {{::object.ExperienceGive}}

Virtual currency: {{::object.VirtualCurrencyGive}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageProgress.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageProgressBar.html',\r\n \"

{{vm.label}}  

97 ? 'calc(' + vm.progress + '% - 20px)' : vm.progress + '%') || 0)}\\\" show-profile-image=vm.showProfileImage>
{{vm.progress | number:0}}%
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageProgressSettings.html',\r\n \"
Visa progress för valda ämnen
Visa progress för hela siten
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/EngageStackedObjects.html',\r\n \"
Del {{$index + 1}}

Del {{$index + 1}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Favorite.html',\r\n \"
Spara favorit
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/FavoriteEditList.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/FavoriteList.html',\r\n \"
No favorites found!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Header.html',\r\n \"
Sök
Favoriter
1\\\" ng-class=\\\"{'expanded': vm.ShowCultures}\\\" biz-click-outside=\\\"vm.ShowCultures = false\\\" ng-click=\\\"vm.ShowCultures = !vm.ShowCultures\\\"> Select language {{$root.Cultures.GetItemByValue('Id', $root.LoggedInUser.CurrentCultureId).CultureCode.slice(-2)}}
0\\\" ng-click=\\\"vm.ShowLogin = !vm.ShowLogin\\\"> {{$root.LoggedInUser.FirstName}}
Logga in / Skapa användare
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Leaderboard.html',\r\n \"

{{vm.header}}

{{user.Rank}} {{user.UserFirstName}} {{user.UserLastName}} {{user.DefaultExperiencePoints}}xp
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MainMenu.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MenuJourney.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MenuJourneyCollection.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MenuJourneyStatus.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyNotes.html',\r\n \"
Du har inga goda nyheter
Mina goda nyheter!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyNotesEditDialog.html',\r\n \"
Lägg till nyhet
Nyhet nummer 4 kommer då att försvinna.
Nej Ja

Nyhet: {{$index + 1}}

Färg
Bild
Lägg till bild

Ta bort bild
Avbryt Ok
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyText.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/MyTextEdit.html',\r\n \"
Text
Skicka
{{vm.Error}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/tip-someone.html',\r\n \"Bjud in någon!\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Directives/Views/Unsubscribe.html',\r\n \"

Select categories to unsubscribe from

{{cat.Name}}
Confirm
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/forgotpassword.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/Login5050WithBgImages/Views/login.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/LoginCenterWithBgImages/Views/forgotpassword.html',\r\n \"
Alla rättigheter förbehållna
Powered by
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Themes/LoginCenterWithBgImages/Views/login.html',\r\n \"
Alla rättigheter förbehållna
Powered by
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/completeregister.html',\r\n \"
Slutför konfigurationen av kontot
Skapa konto
Mailadress
{{vm.VerificationCodeSent ? 'Skicka en ny kod' : 'Verifiera mailadressen'}}
Mata in koden nedan som strax dyker upp i din mailkorg.
Verifieringskod
Alla förnamn enligt passet
Mellannamn enligt passet
Efternamn enligt passet
Mobilnummer
Kön
{{gender.DisplayName}}
= 0\\\" full-phone-number=vm.ExtCustomFieldValues[customField.CustomId] label=Mobile bad-input=vm.CustomFieldsMobileBadInput[customField.CustomId]>
Välj lösenord
Bekräfta lösenord
Jag accepterar integritetspolicyn
Jag har tagit del av Integritetspolicy som beskriver hur X behandlar mina personuppgifter. För sådan behandling som kräver mitt samtyck, ger jag härmed mitt samtycke. Jag vet att jag kan återkalla mitt samtycker genom att kontackta X via de kontaktuppgifter som finns i integritetspolicyn.
Slutför
 Sparat
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/exthome.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/forgotpassword.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/login.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/logout.html',\r\n \"
Loggar ut
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mycolleagues.html',\r\n \"

{{'GLOBAL.COLLEAGUES' | translate}}

0\\\" class=\\\"biz-tab sm biz-margin-right\\\" ng-class=\\\"{ 'active': !vm.Tab }\\\" ng-click=\\\"vm.Tab = 0; vm.ShowSpecificUnit = false;\\\"> {{'CORE.MAINUNIT' | translate}}
{{'CORE.MYUNIT' | translate}}
0 && !vm.ShowSpecificUnit\\\">

{{'CORE.SELECTUNIT' | translate}}

{{unit.Name || 'CORE.NOUNITNAME' | translate}}

{{vm.MyUnit.Name || 'CORE.NOUNITNAME' | translate}}

{{user.FirstName}} {{user.LastName}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mycustomsettings.html',\r\n \"

Settings

{{customField.CustomSettings.GroupName}}
*
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/myleaderboards.html',\r\n \"

0\\\" class=\\\"biz-tab sm biz-margin-right\\\" biz-phrase=CORE.MAINUNIT>
0\\\" class=\\\"biz-50 biz-flex column\\\">

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mypage.html',\r\n \"

{{$root.LoggedInUser.FirstName}} {{$root.LoggedInUser.LastName}}

2444

COINS

{{($root.LoggedInUser.DefaultExperiencePoints > 0 ? $root.LoggedInUser.DefaultExperiencePoints : 0)}}

{{'GLOBAL.TOTALEXPERIENCE' | translate}}

{{vm.CertificationCount}}

CERTIFICATES

= 0\\\">{{vm.TotalEducationCount}}

= 0\\\">{{vm.BlogCount}}

= 0\\\">{{vm.VideoCount}}

= 0\\\">{{vm.QuizCount}}


{{'CORE.GAINMOREEXP' | translate}}
{{'CORE.LASTGAINEDEXP' | translate}}
0\\\">{{item.Currency}}c 0\\\">{{item.Exp}}p

{{'GLOBAL.NODATA' | translate}}

{{item.ExperiencePoints}} 0\\\"> ({{item.BonusExperiencePoints}})

{{'GLOBAL.NODATA' | translate}}


{{'CORE.NOTIFICATIONS' | translate}}
-
\\\"\\\" \\\"\\\"

{{'GLOBAL.NODATA' | translate}}


\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/myrelatedusers.html',\r\n \"

Related users

{{rt.Name}}
{{rt.Name}}
*
*
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mysecurity.html',\r\n \"

Security

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/mysettings.html',\r\n \"

Personuppgifter

{{(vm.User.Photo ? 'GLOBAL.CHANGEIMAGE' : 'GLOBAL.ADDIMAGE') | translate}}
*
*
*
0 && $root.MiniSettings.Profile.ShowCountry\\\">
{{gender.DisplayName}}
0 && $root.MiniSettings.Profile.ShowUserType\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/notifications.html',\r\n \"
-
\\\"\\\" \\\"\\\"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/privacypolicy.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/profile.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/register.html',\r\n \"
Skapa konto
{{vm.Message}}
Jag accepterar integritetspolicyn
Jag har tagit del av Integritetspolicy som beskriver hur X behandlar mina personuppgifter. För sådan behandling som kräver mitt samtyck, ger jag härmed mitt samtycke. Jag vet att jag kan återkalla mitt samtycker genom att kontackta X via de kontaktuppgifter som finns i integritetspolicyn.
Skapa konto
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/showterms.html',\r\n \"

No terms were found

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/unsubscribe.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Core/Views/welcome.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Blog/Views/blog-list.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Blog/Views/index.html',\r\n \"
{{'GLOBAL.NODATA' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Blog/Views/view.html',\r\n \"

0\\\" biz-background=\\\"{{::vm.SelectedItem.UserProfileImageUrl | siteroot}}\\\">
{{vm.GetDate(vm.SelectedItem.StartTimeUtc)}}

Mest gillade bloggar

Mest kommenterade

Relaterade Artiklar

Våra senaste inlägg

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Campaign/Views/default.html',\r\n \"
1\\\" class=campaign-menu> {{page.Name}}

No campaign found

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Certifications/Views/default.html',\r\n \"
{{cert.Name}}
{{cert.UserData.ProgressPercent}}% 0\\\" biz-excel-export=\\\"{{'Handlers/Core/Certifications/ShowCertificationHandler.ashx?cert=' + cert.UserData.UserCertId + '&auth=' + vm.AuthToken | siteroot}}\\\"> Ladda ner ditt certifikat!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Certifications/Views/new-certification-dialog.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Dictionary/Views/index.html',\r\n \"

{{letter}}

{{item.Word}}

{{item.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/education-list.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/educationslistdirective.html',\r\n \"
No educations found...
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/html5education.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Education/Views/index.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Event/Views/index-react.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Event/Views/index.html',\r\n \"
{{vm.Event.Name}}
{{vm.Event.Description}}
Time: {{vm.Event.StartDateTimeUtc | time}} - {{vm.Event.EndDateTimeUtc | time}}
Email:
Comment:
Full Book Cancel
0\\\"> External link: {{vm.Event.ExternalUrl}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Event/Views/list-react.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Forum/Views/index.html',\r\n \"

{{'FORUM.LIST' | translate}}

{{'FORUM.FORUM' | translate}} {{'FORUM.POSTS' | translate}} 0\\\"> {{'FORUM.UNREAD' | translate}}
0\\\" ng-bind=forum.UnreadPostCount>
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Forum/Views/viewforum.html',\r\n \"

{{'FORUM.THREAD' | translate}} {{'FORUM.POSTS' | translate}} 0\\\"> {{'FORUM.UNREAD' | translate}}
{{'FORUM.STICKY_THREAD' | translate}} 0\\\" ng-bind=thread.UnreadPostCount>
{{'CORE.NO_ITEMS' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Forum/Views/viewforumthread.html',\r\n \"

{{'FORUM.DELETE.POST' | translate}} {{'FORUM.EDIT.POST' | translate}} {{'FORUM.SAVE.POST' | translate}}
{{'CORE.NO_ITEMS' | translate}}
0\\\" class=forum-post>
{{'FORUM.POST_BTN' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Journey/Views/index.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/MasterRun/Views/index.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/index.html',\r\n \"
No items found...
1\\\"> -1\\\" ng-click=vm.ToggleMediaTypes(type.Id)>{{vm.GetFileTypeTranslations(type)}}

Senaste

Mest gillade

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/video-list.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/viewfile.html',\r\n \"
Image
{{vm.MediaFile.Name}}
1\\\" class=tag-filetype>{{::vm.GetFileTypeTranslations(vm.MediaFileTypes.GetItemByValue('Id', vm.MediaFile.Type))}}
0\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Media/Views/viewtags.html',\r\n \"
{{vm.SelectedTag.Name}}
Image
{{vm.SelectedFile.Name}}
100\\\" class=media-file-read-more-btn ng-click=\\\"vm.SelectedFile.Expanded = true;\\\"> Läs mer
{{vm.SelectedFile.Description}}
{{file.Name}}
{{file.Description}}
Läs mer.
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMission.html',\r\n \"

{{vm.mission.Name}}

0\\\">{{vm.mission.ExperienceGive}}p
0\\\">{{vm.mission.CurrencyGive}}c

{{::vm.mission.Description}}

{{vm.DaysLeft}} {{'GLOBAL.TIME.DAYS' | translate}} {{vm.HoursLeft}} {{'GLOBAL.TIME.HOURS' | translate}} {{vm.MinutesLeft}} {{'GLOBAL.TIME.MINUTES' | translate}}

{{'MISSIONS.COMPLETED' | translate}} {{vm.CompletedPercentage}}%

0\\\">

= 100\\\">{{'MISSIONS.USERSCOMPLETEDYOUAND' | translate}} {{::vm.mission.UsersCompletedMission - 1}} {{'MISSIONS.USERSCOMPLETED' | translate}}

{{::vm.mission.UsersCompletedMission}} {{'MISSIONS.USERSCOMPLETED' | translate}}

{{'MISSIONS.SHOWUSERS' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMissionList.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMissionRules/GenericTemplate.html',\r\n \"

{{rule.Name}}

{{rule.Description}}

{{rule.PercentageComplete}}%
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/directives/bizMissionUser.html',\r\n \"
{{user.FirstName}}

{{user.FirstName}} {{user.LastName}}

{{'GLOBAL.EMAIL' | translate}}: {{user.Email}}

{{'GLOBAL.PHONE' | translate}}: {{user.Phone}}

{{'GLOBAL.CELLPHONE' | translate}}: {{user.Mobile}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/users.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Missions/Views/view.html',\r\n \"

{{'MISSIONS.RULES' | translate}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/Search/Views/index.html',\r\n \"

Sökresultat

Alla resultat {{index.SearchIndexExternalName}}
Your search for \\\"{{vm.SearchedQuery}}\\\" resulted in {{vm.ResultCount}} hits. hit.
Sortera resultat
Från A-Ö
Senaste
{{category.SearchIndexExternalName | uppercase}} ({{vm.ResultItems.GetItemByValue('Index', category.Index).TotalHits}})
{{item.ItemName}} {{vm.GetDate(item.UpdatedDate)}}
{{vm.GetItemPreview(item);}}...
vm.SearchIndexList.GetItemByValue('Index', category.Index).TotalHits\\\" ng-click=\\\"vm.SearchIndexList.GetItemByValue('Index', category.Index).TotalHits = vm.SearchIndexList.GetItemByValue('Index', category.Index).TotalHits + vm.HitsIncement; vm.Search();\\\">Visa mer
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/highscore.html',\r\n \"
{{vm.speedquizName}}
{{$index + 1}}.

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/list.html',\r\n \"

Quiz

{{speedquiz.Name}}

{{speedquiz.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/play-react.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/play.html',\r\n \"
{{'SPEEDQUIZ.LOADING_TEXT' | translate}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Modules/SpeedQuiz/Views/show.html',\r\n \"

SHOW SPEEDQUIZ

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/base.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/cleanbase.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Dialogs/dialog-primary.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Dialogs/engagement-tip.html',\r\n \"

Bra jobbat!

Du klarade utbildningen: Cerebral pares och jag - Del 1

20

5

Här kommer några tips på vad du kan göra:

Motoriska interventioner och träning

Genomför utbildningen och tjäna mer erfarenheter och coins

Cp och jag quiz

Spela speedquiz spelet och tjäna mer erfarenheter och coins

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Dialogs/welcome-guide.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/home.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/Modules/Blog/grid.html',\r\n \"

0\\\" biz-background=\\\"{{::vm.SelectedItem.UserProfileImageUrl | siteroot}}\\\">
{{::vm.GetDate(vm.SelectedItem.StartTimeUtc)}}

Våra senaste inlägg

0 && !vm.SelectedItem)\\\">{{vm.SelectedTag.Name}}

No news items found
Show more
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'FrontEnd/Views/noaccess.html',\r\n \"

No access

\"\r\n );\r\n}]);\n})(window.angular);\n(function (angular){angular.module('bizPartEngage').run(['$templateCache', function ($templateCache){\n 'use strict';\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Campaign/GUI/Modules/Views/User/EventsModule.html',\r\n \"
Select your city
{{event.Description}}
{{event.Location}}
{{event.DateStart | datetime}}
Organizer
{{event.OrganizerName}}
{{event.OrganizerEmail}}
{{event.OrganizerPhone}}
Co-Organizers
{{organizer.Name}} ({{organizer.Email}})
Comment
Register
Unregister
The maximum amount of people has registered for this event.
The latest registration date has passed for this event.
You have already registered for an event.
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Product/Views/User/ProductMasterModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Product/Views/User/ProductSpecificationModule.html',\r\n \"
{{spec.ProductDetailType.Name}} {{spec.Value}}

{{spec.ProductDetailType.Name}} {{spec.Value}}
vm.module.Content.Limit && !vm.ShowMore\\\"> FLER SPECIFIKATIONER
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/BlogListLargeModule.html',\r\n \"
{{::item.Title}}
Read more
0\\\">{{::item.TotalCoins}}c 0\\\">{{::item.TotalPoints}}p
#{{::tag.Name}}
{{::vm.GetPhrase('CONTAINER_CMS_LIKE_ARTICLE') || 'What do you think about the article?'}}
{{::item.UserFullName}}
{{::vm.GetDate(item.PublishedDate)}}
Answer the question Good job! Oops, you answered incorrectly!
{{::item.LinkedTrainingPoll.Question}}
0\\\">{{::item.LinkedTrainingPoll.CoinsToGive}}c 0\\\">{{::item.LinkedTrainingPoll.PointsToGive}}p
{{option.Text}} ({{item.LinkedTrainingPoll.Results.GetItemByValue('Id', option.Id).Votes}} votes)
Answer the question
{{::item.LinkedPoll.Question}}
0\\\">{{::item.LinkedPoll.CoinsToGive}}c 0\\\">{{::item.LinkedPoll.PointsToGive}}p
{{option.Text}} ({{item.LinkedPoll.Results.GetItemByValue('Id', option.Id).Votes}} votes)
Get educated
{{::item.LinkedUserEducation.Name}}
{{::item.LinkedUserEducation.Duration}}
0 || item.Repetition.Coins > 0\\\">
0 || item.LinkedUserEducation.FastCoins > 0\\\">{{::item.Repetition.Coins || item.LinkedUserEducation.FastCoins}}c 0 || item.LinkedUserEducation.FastPoints > 0\\\">{{::item.Repetition.Points || item.LinkedUserEducation.FastPoints}}p Extra points
{{::vm.GetTimeTo(item.LinkedUserEducation.FastPointsAndCoinsExpires)}}h remaining
0\\\"> {{::item.LinkedUserEducation.MaxCoins - item.LinkedUserEducation.UserReceivedCoins}}c 0\\\"> {{::item.LinkedUserEducation.MaxPoints - item.LinkedUserEducation.UserReceivedPoints}}p
i
{{item.LinkedUserEducation.Description}}
No news items found
Get more news items
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/BlogListModule.html',\r\n \"
0 || entry.TotalPoints > 0)\\\"> 0\\\"> {{entry.TotalCoins}}c 0\\\"> {{entry.TotalPoints}}p
{{::entry.Title}}
{{::entry.Title}}
0\\\"> {{entry.TotalCoins}}c 0\\\"> {{entry.TotalPoints}}p
{{vm.GetBlogTranslation(entry)}}
{{vm.GetBlogTranslation(entry)}}
{{entry.ContentStrippedHtml}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/CertificationsModule.html',\r\n \"
{{'' | phrase:\\\"CERTIFICATIONS_RELEASE_DATE\\\":\\\"#DATE#\\\":certificate.PublishedDate}}
%
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/CombinationModule.html',\r\n \"

{{vm.module.Content.Header}}

{{vm.module.Content.Header}}

{{::vm.GetVideoDuration(vm.VideoDuration)}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/CountdownModule.html',\r\n \"
{{vm.DaysLeft}}
DAYS
{{vm.HoursLeft}}
HOURS
{{vm.MinutesLeft}}
MINUTES
{{vm.SecondsLeft}}
SECONDS
{{vm.module.Content.TextToShow}}

Go to: {{vm.module.Content.LinkToShow}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/EducationsModule.html',\r\n \"

{{edu.Name}}

{{edu.Duration}}
{{vm.PrintAcceptedStatus(edu)}}
0 || edu.ExtraPoints > 0\\\" class=fastWrapper> 0\\\">{{edu.ExtraCoins}}c 0\\\">{{edu.ExtraPoints}}p Extra points {{vm.PrintFastExpireDate(edu);}}
0\\\">{{edu.MaxCoins}}c 0\\\">{{edu.MaxPoints}}p 0\\\" ng-src=\\\"{{edu.ImageUrls[0] | siteroot}}\\\">
i
{{edu.Name}}

{{edu.Description}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/EventListModule.html',\r\n \"
{{vm.GetDayAndMonth(event.StartDateTimeUtc).Day}}
{{vm.GetDayAndMonth(event.StartDateTimeUtc).Month}}
{{event.Name}}
0\\\">{{event.Description}}
0\\\">{{event.ShortDescription}}
Time: {{event.StartDateTimeUtc | time}} - {{event.EndDateTimeUtc | time}}
Full Book Cancel
0\\\"> External link: {{event.ExternalUrl}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/EventListModuleParticipationDialog.html',\r\n \"

Event participation: {{vm.Event.Name}}

Attend to this event: {{vm.Event.Name}} Cancel your attendance

When you click SEND we will send you a confirmationlink by email that you have to click to fullfill your booking.

If you would like to cancel your attendance you have to enter the same email address you used in the booking process.

Email:
Comment:
Send Cancel
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/ForumListModule.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/GoogleAnalyticsModule.html',\r\n \"

Google analytics proof of concept

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/HighscoreMasterModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/HighscoreModule.html',\r\n \"
{{vm.module.Content.Label}}
{{score.Rank}}
{{score.User.FirstName | htmldecode}} {{score.User.LastName | htmldecode}}
{{score.Points}}p
No data found
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/Html5EducationsModule.html',\r\n \"

VÃ¥ra utbildningar

Ladda in fler utbildningar  

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/LinkList.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MediaListModule-old.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MediaListModule.html',\r\n \"

VÃ¥ra filmer

Ladda in fler filmer  

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MiniJourneyModule.html',\r\n \"
N/A
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyCertificationsModule.html',\r\n \"

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_HEADER') || 'Certifieringar'}}

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_INTRODUCTIONS_FIRST')}}

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_INTRODUCTIONS_SECOND')}}

{{vm.CurrentTab.GetPhrase('BIZMYCERTIFICATIONS_WATCH_VIDEO')}}
0\\\">

{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCERTS_CERTIFICATION_LBL') || \\\"Certifiering\\\" }} {{dep.Name}}

0\\\">{{vm.GetDepartmentCoins(dep, vm.CertificationList)}} c 0\\\">{{vm.GetDepartmentPoints(dep, vm.CertificationList)}} p
0\\\">

{{cert.Name}}

0\\\" class=cert-permission-department> {{cert.PermissionDepartments[0].Name}}
{{cert.UserData.ProgressPercent}} %
{{cert.Description}}
TILL SHOPPEN
Grattis! Du har l�st upp en ny produkt i shoppen.
Du har l�st upp denna produkten genom ett annat certifikat.
KR�VER CERT.
{{::vm.CurrentTab.GetPhrase(\\\"BIZMYEDUCATIONSBYCATEGORY_FINISH_CERT\\\").replace(\\\"#CERTIFICATE#\\\", cert.Name)}}
Show all
0\\\" class=cert-description> {{cert.Description}}

{{edu.Name}}

{{vm.PrintAcceptedStatus(edu)}}
0\\\">{{reward.Coins}}c 0\\\">{{reward.Points}}p
0 || edu.FastPoints > 0 || edu.ExtraRewards.length > 0\\\" class=fastWrapper> 0\\\">{{edu.FastCoins}}c 0\\\">{{edu.FastPoints}}p {{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCATEGORY_LBLEXTRAPOINTS')}}
{{vm.CurrentTab.GetPhrase('BIZMYEDUCATIONSBYCATEGORY_LBLAPPROVED')}} 0\\\">{{edu.MaxCoins}}c 0\\\">{{edu.MaxPoints}}p
{{edu.Duration}}
i
{{edu.Description}}
0\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyEducationsByCategoryModule.html',\r\n \"
Inga utbildningar hittades.

{{educationCategory.Name}}

{{edu.Name}}

{{edu.Object.Duration}}
Godk�nd
0 || edu.ExtraPoints > 0\\\" class=fastWrapper> -1\\\" ng-show=\\\"edu.Object.ExtraCoins > 0\\\">{{edu.Object.ExtraCoins}}c 0\\\">{{edu.Object.ExtraPoints}}p
{{vm.PrintFastExpireDate(edu.Object);}}
{{vm.PrintStatusText(edu.Object.UserStatus)}} Repetera
0\\\">{{edu.Object.MaxCoins}}c 0\\\">{{edu.Object.MaxPoints}}p
0\\\" ng-src=\\\"{{edu.Object.ImageUrls[0] | siteroot}}\\\">
i
{{edu.Object.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyEducationsCompletedModule.html',\r\n \"
{{vm.Certifications}}
{{vm.GetPhrase('BIZMYEDUCATIONSCOMPLETED_CERTIFICATE') || 'Certificates'}}
{{vm.CertificationEducations}}
{{vm.GetPhrase('BIZMYEDUCATIONSCOMPLETED_CERTIFICATEEDUCATIONS') || 'Certificate educations'}}
{{vm.Educations}}
Base educations
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/MyEducationsMiniListModule.html',\r\n \"

Rekommenderas f�r dig

{{edu.Name}}
0\\\">{{edu.ExtraCoins}}c 0\\\">{{edu.ExtraPoints}}p 0\\\">{{edu.MaxCoins}}c 0\\\">{{edu.MaxPoints}}p

Repetera

{{edu.Name}}
0\\\">{{edu.ExtraCoins}}c 0\\\">{{edu.ExtraPoints}}p 0\\\">{{edu.RemainingCoins}}c 0\\\">{{edu.RemainingPoints}}p
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/ProgressModule.html',\r\n \"
{{vm.module.Content.HeaderText}}
{{point.Comment}}
{{point.AddedPoints}} p
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/ShopModuleModule.html',\r\n \"
Du har {{vm.Currency}} coins kvar att handla för
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/SuggestionsModule.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/CMS/GUI/Modules/Views/User/TagFilterModule.html',\r\n \"
{{vm.module.Content.Label}} / Tags / #{{vm.SelectedTag.Name}}
#{{vm.SelectedTag.Name}}
Select a tag
0\\\"> {{::tag.Name}} {{::tag.Occurence}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/AutomaticProductSaleModule.html',\r\n \"

{{sale.DiscountVoucherWidgetText}}

{{sale.Name}}
{{sale.Price}}c
{{sale.DiscountVoucherPrice}}c
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ButtonModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/EffectsModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/FAQModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/FavoriteModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/FormModule.html',\r\n \"
Missed submission on {{vm.Form.MissingSubmissionDatesUtc[0] | date:'YYYY-MM-DD'}}, submit that first
Tillbaka
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/hotspotdialog.tmpl.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/IFrameModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ImageHotspotsModule.html',\r\n \"
{{vm.CurrentSelectedHotspot.Name}} {{vm.CurrentSelectedHotspot.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ImageModule.html',\r\n \"
{{vm.module.Content.ImageAlt}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/ImageTextModule.html',\r\n \"
{{vm.module.Content.ImageAlt}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/JourneyModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/LikeActionsModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/MissionsModule.html',\r\n \"
0\\\">{{vm.Mission.ExperienceGive}}p
0\\\">{{vm.Mission.CurrencyGive}}c

{{vm.Mission.Name}}

Days {{vm.Mission.DaysLeft}} - Hours {{vm.Mission.HoursLeft}} - Minutes {{vm.Mission.MinutesLeft}}

Completed {{vm.Mission.CompletedPercentage}}%

{{::vm.Mission.Description}}

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/NavigationModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/PaintModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/QuestionModule.html',\r\n \"

{{vm.module.Content.QuestionTitle}}

{{::poll.Text}}

{{alt.Text}} ({{alt.SubmitCount}} votes)
Svara
Svara
There are no questions to answer
You answered the question!
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SegmentModule.html',\r\n \"

Locked content

Läs mer Visa mindre
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SlideshowModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SocialShareModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SpeedquizHighscoreModule.html',\r\n \"
{{type.Name}}
No quizes found
{{quiz.Name}}
{{quiz.ObjectName}}
Show highscore
1\\\"> {{quiz.Name}}
{{quiz.ObjectName}}
  1. {{::($index + 1) > 9 ? \\\"\\\" + ($index + 1) : \\\"0\\\" + ($index + 1)}} {{::score.FirstName}} {{::score.LastName}} {{::score.Score}}p
vm.Limit\\\" ng-click=\\\"vm.Limit = vm.Limit + 20\\\"> Show more
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SpeedquizModule.html',\r\n \"
{{speedquiz.Name}}
{{vm.module.Content.ButtonText || 'Spela'}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/SpeedquizPlay.html',\r\n \"
{{Game.Score}}p
{{Game.Name}}

{{Question.Name}}

{{option.Text}}

0\\\" class=correct> {{CurrentTab.GetPhrase(\\\"SPEEDQUIZ_CORRECT\\\") || \\\"Correct\\\"}}! + {{AddedScore}} {{CurrentTab.GetPhrase(\\\"SPEEDQUIZ_WRONG\\\") || \\\"That was wrong\\\"}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/TextModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Core/GUI/Modules/Views/User/VideoModule.html',\r\n \"
{{vm.module.Content.Header}}
{{vm.module.Content.DescriptionHeader}}
{{vm.module.Content.Description}}
0 && (vm.CoinsUser == true) && !vm.module.HasFinishedBefore\\\">{{::vm.module.Settings.CoinsGain}}c 0 && !vm.module.HasFinishedBefore\\\">{{::vm.module.Settings.PointsGain}}p
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/ChangePasswordModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/CookieButtonModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/FavoriteEditModule.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/Layout/GUI/Modules/Views/User/WelcomeGuideButtonModule.html',\r\n \"
0}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/EducationSummaryModule.html',\r\n \"
Well done, everything is done
You finished the education unsuccessfully What did I miss?
{{vm.GetFinishedCount(segment.Modules)}}/{{segment.Modules.length}}
{{module.Name}}
0\\\">
Functions outside of segment
{{vm.GetFinishedCount(vm.ModulesOutsideSegments)}}/{{vm.ModulesOutsideSegments.length}}
{{module.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/EvaluationModule.html',\r\n \"
Start test
1\\\" ng-click=vm.SlickSettings.method.slickNext() ng-style=\\\"::{'background-color': vm.module.Content.ButtonColor, 'border-color': vm.module.Content.ButtonColor, 'color': vm.module.Content.ButtonTextColor}\\\" biz-phrase=ONLINEEDUCATION_EVALUATION_START>Start test
1\\\" ng-click=vm.SlickSettings.method.slickGoTo(vm.StartIndex) ng-style=\\\"::{'background-color': vm.module.Content.ButtonColor, 'border-color': vm.module.Content.ButtonColor, 'color': vm.module.Content.ButtonTextColor}\\\" biz-phrase=ONLINEEDUCATION_EVALUATION_CONTINUE>Continue
Question /
0}\\\" ng-click=\\\"vm.SelectOption(question, option, $parent.$last)\\\">
1\\\" ng-click=vm.Retry() ng-style=\\\"::{'border-color': vm.module.Content.TestTextColor}\\\" biz-phrase=ONLINEEDUCATION_EVALUATION_RETRY>Retry
You answered {{vm.Correct}}/{{vm.Questions.length}} questions correctly and have completed the test! questions correctly, which is not enough to pass the test.
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/QuestionsMasterModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/QuestionsModule.html',\r\n \"
{{question.QuestionText}}
-1, 'option-button': question.QuestionType != 3, 'correct': question.Answered && option.Value > 0}\\\" ng-click=\\\"vm.SelectOption(option, question)\\\" ng-repeat=\\\"option in question.Options\\\" class=option ng-style=\\\"{'background-color': vm.module.Content.ButtonColor, 'color': vm.module.Content.ButtonTextColor}\\\">
{{option.OptionText}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/OnlineEducation/GUI/Modules/Views/User/TextInputModule.html',\r\n \"
{{vm.module.Content.Question}}
{{vm.module.Content.Button.ButtonText}}
{{vm.module.Content.TextAfter}}
{{vm.module.Content.Answer}} {{vm.Answer}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/TermsAndConditions/GUI/Modules/Views/User/GenericSendSignupModule.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Modules/BizPart.BizContainer/TermsAndConditions/GUI/Modules/Views/User/SignatureModule.html',\r\n \"
{{::vm.module.Content.SignatureText}}
Signature
\"\r\n );\r\n}]);\n})(window.angular);\n(function (angular){angular.module('bizPartEngage').run(['$templateCache', function ($templateCache){\n 'use strict';\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizComments/bizcomment.html',\r\n \"
0\\\" biz-background=\\\"{{comment.AuthorPhoto | siteroot}}\\\">
{{comment.AuthorName}} {{comment.Date | datetime}} Reply Edit

{{comment.Comment}}

This comment has been removed

0\\\">
Update Cancel
0\\\">
Comment Cancel
0\\\" ng-repeat=\\\"comment in vm.Comments | filter: {ParentId: comment.Id} | orderBy:'-Date'\\\" class=comment layout=row ng-include=\\\"'js/AngularModules/BizComments/bizcomment.html' | siteroot\\\" ng-class=\\\"{'comment-editmode': comment.EditMode || comment.Replying}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizComments/bizcomments.html',\r\n \"

Comments ({{vm.Comments.length}})

No type {{t.Name}}
0\\\" ng-click=\\\"vm.ShowComment = !vm.ShowComment\\\">

New comment

0\\\">
Comment
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizDotMenu/template.html',\r\n \"
  • {{vm.GetPhrase('BIZDOTMENU_COPY') || 'Kopiera länk'}} {{vm.GetPhrase('BIZDOTMENU_COPIED') || 'Länk kopierad'}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformedit.html',\r\n \"
Settings
Form name This is the name used to identify this form. It will be shown in stats and admin pages wherever forms are listed or displayed. It will not be displayed outwardly to users.
Start
Expires
Form type
Effect on submit
Send \\\"thank you\\\" email
No email fields added. Please add a field and set the data type to Email under Advanced field options > Data type
There is one field marked as data type Email. This field will be used to determine the address to send the thank you email to.
There are multiple fields marked as data type Email. The first of these fields will be used to determine the address to send the thank you email to.

Allow multiple submissions from same user
Require submissions for each day logged in Max one submission per day


{{vm.Form.Plugin.FieldsName || 'Fields' }}

No {{vm.Form.Plugin.FieldsName || 'fields' | lowercase}} added

Add {{vm.Form.Plugin.FieldName || 'field' | lowercase}}
{{vm.Form.Plugin.FieldName || 'Field'}} Group Actions
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformfieldedit.html',\r\n \"       Edit Delete \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformfieldeditdialog.html',\r\n \"

{{vm.Form.Plugin.FieldName || 'Field'}} settings

Type The type of the field. Changing this will reset some field configurations, such as options
Group
Wizard step
Text
Placeholder
Width (desktop)
Mandatory
{{setting.Name}}
{{::value.Name}}
Data type
Field value listeners Listen to value changes in other fields and perform actions when a certain value has been set. An example of usage is showing this field when another field (like a checkbox) has had its value set to \\\"true\\\".
Field Value Action
Delete
Add listener

Options

 

No options added

Edit Delete
Text
Correct
Preselected Disabled
Description
Image
Add option
OK
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformshow.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformwizard.html',\r\n \"
0\\\" class=form-wizard-steps-x-of-y> {{vm.CurrentWizardStep +1}}/{{(vm.Form.WizardSteps | filter:{'Hidden':false}).length}}
= (vm.Form.WizardSteps | filter:{'Hidden':false}).length - 1\\\" ng-click=\\\"vm.GoToWizardStep(vm.CurrentWizardStep - 1)\\\" class=\\\"biz-btn btn-prev\\\"> Tillbaka = (vm.Form.WizardSteps | filter:{'Hidden':false}).length - 1\\\" ng-click=\\\"vm.GoToWizardStep(vm.CurrentWizardStep + 1)\\\" class=\\\"biz-btn btn-next\\\"> GÃ¥ till steg {{vm.CurrentWizardStep + 2}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/bizformwizardstepedit.html',\r\n \"

Wizard steps

No wizard steps added

Add wizard step
Step Actions
      Edit Delete
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/checkbox.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/checkboxlist.html',\r\n \"
{{option.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/dropdownlist.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/fileupload.html',\r\n \" NOT IMPLEMENTED YET!\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/input.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/phonecountrycode.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/radiobuttonlist.html',\r\n \"
{{option.Name}}
{{option.Description}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/recaptcha.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/slider.html',\r\n \"
{{to.label}} {{model[options.key]}} {{to.unit}} eller fler eller färre
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/textarea.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizFormly/Fields/video.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizGauge/bizGauge.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizGenericTag/bizgenerictag.html',\r\n \"
Tags
Add Tag
Create and add Tag

No tags added

Added tags
{{tag.Name}}
{{vm.GetTagName(tagId)}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizLike/template.html',\r\n \"
{{vm.Item.Likes}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/audio.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/button.html',\r\n \"
Change
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/document.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/documentlink.html',\r\n \"{{vm.File.Name}}\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/download.html',\r\n \"
0\\\">
-1\\\" ng-click=vm.ToggleMediaBankUploadLocation(uploadLocation)>{{ uploadLocation.Name }}
0\\\" class=noFiles> There are no files of the current file type or with the selected search conditions.
{{ file.Name }}
Cancel OK
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/link.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/Mediabank.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/upload.html',\r\n \"
Drag a file or click here to upload
Allowed types: {{vm.AllowedFileTypes}}
File: {{vm.File[0].name}}
Size: {{vm.File[0].size / 1024 | number:0}} kB
File name
File Description

Add
0\\\">
Added tags
{{tag.Name | htmldecode}}
Upload as private file Upload as invisible file Skip resize
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/video.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizMediabank/views/VideoPlayerContainer.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bindCategory.html',\r\n \"
Edit
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bindCategoryEdit.html',\r\n \"

Select items to show on page

{{tag.Name}}
Save Close
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizAlertBanner.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizBlogSearch.html',\r\n \"
No fields found
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizChangeMyDepartment.html',\r\n \"

Change department to see more content!

{{department.Name}}
Save\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizchart.html',\r\n \"
No data found
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizChat.html',\r\n \"
{{::CurrentTab.GetPhrase(\\\"BIZCHAT_CHATROOMLIST_HEADER\\\");}}
  • {{ room.ExternalName }}
{{ GetTopic() }}
{{::CurrentTab.GetPhrase(\\\"BIZCHAT_USERSONLINE\\\");}}: {{usersOnline}}
{{$scope.chat}}
  • {{item.UserName}}
  • {{ smsg.Msg }}
0 || ChatClientInfo.Alias\\\">
{{::CurrentTab.GetPhrase('BIZCHAT_CHAT_SENDMSG_BTN');}}
Set alias
{{::CurrentTab.GetPhrase('BIZCHAT_CHAT_LEAVE_CHAT_BTN');}}
0 && ShowUsersOnline\\\">
{{::CurrentTab.GetPhrase('BIZCHAT_USERLIST_HEADER');}}
  • {{ user.Alias }} {{::CurrentTab.GetPhrase('BIZCHAT_USERTYPE_ADMIN');}} {{::CurrentTab.GetPhrase('BIZCHAT_USERTYPE_OP');}}
0 && (UserState.IsAdmin || UserState.IsOp)\\\">
{{::CurrentTab.GetPhrase('BIZCHAT_BANUSERLIST_HEADER');}}
  • {{ ue.Alias }} {{::CurrentTab.GetPhrase('BIZCHAT_EVENTTYPE_BANNED');}} {{::CurrentTab.GetPhrase('BIZCHAT_EVENTTYPE_MUTED');}} {{::CurrentTab.GetPhrase('BIZCHAT_BANTYPE_GLOBAL');}} 0\\\">{{::CurrentTab.GetPhrase('BIZCHAT_BANTYPE_LOCAL');}} {{ ue.ChatRoomInternalName }} {{::CurrentTab.GetPhrase('BIZCHAT_EVENTTYPE_REASON');}}: {{ ue.Comment }}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizCodeEditorDialog.html',\r\n \"

Source code

Cancel Save
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizContainerModulesList.html',\r\n \"
Activate Container modules
Save
-1\\\" ng-click=vm.ToggleModules(mod)>{{mod.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizCopyUrl.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizCurrency.html',\r\n \" 0\\\" class=\\\"biz-round-info coins\\\"> {{vm.currency}}c \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizDictionary.html',\r\n \"
0\\\">

No items found...

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizExperiencePoints.html',\r\n \" 0\\\" class=\\\"biz-round-info points\\\"> {{vm.points}}xp \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizItemNotFound.html',\r\n \"
Woops, item not found...
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizItemType.html',\r\n \"
0\\\" ng-bind=vm.OverrideName> Artikel Utbildning Video Engage object
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourney.html',\r\n \"

{{\\\"JOURNEY.DESCRIPTION_1\\\" | translate}}

{{\\\"JOURNEY.DESCRIPTION_2\\\" | translate}}

Carousel
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyGridSlick.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyNextOrPrev.html',\r\n \"
0\\\" id=bizjourneybuttons>
Prev
Next Next journey
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyShowOne.html',\r\n \"
{{vm.journeyToShow.Name}}

{{item.Index}}
Bra jobbat!

Du har klarat av allt i den h�r resan.

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyShowOneCarousel.html',\r\n \"\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizJourneyShowOneGrid.html',\r\n \"

({{(vm.Blogs | filter:{'Status': 3}).length}}/{{vm.Blogs.length}})

({{(vm.OnlineEducations | filter:{'Status': 3}).length}}/{{vm.OnlineEducations.length}})

({{(vm.Videos | filter:{'Status': 3}).length}}/{{vm.Videos.length}})

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizLikeActions.html',\r\n \"

Vad tyckte du?

1 && action.Action.Value <= vm.item.AverageLikeValue)\\r\" +\r\n \"\\n\" +\r\n \" || (vm.item.LikeActions.length === 1 && vm.item.LikeActions[0].LikeActionPerformedByUser)}\\\" class=\\\"like-action-icon fa {{action.Action.Icon}}\\\" ng-disabled=vm.HasUserLiked ng-click=\\\"vm.PerformLikeAction(vm.item, action)\\\">
0\\\" ng-click=\\\"vm.ShowCommentInput = !vm.ShowCommentInput;\\\" biz-phrase=LIKE.COMMENT_HEADER>Hjälp oss bli bättre - vad tycker du vi skulle haft med?
Send

Tack för din input!

1 && action.Action.Value <= vm.item.AverageLikeValue)\\r\" +\r\n \"\\n\" +\r\n \" || (vm.item.LikeActions.length === 1 && action.LikeActionPerformedByUser)}\\\" class=\\\"fa {{action.Action.Icon}}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizLikeView.html',\r\n \"
1 && action.Action.Value <= vm.item.AverageLikeValue)\\r\" +\r\n \"\\n\" +\r\n \" || (vm.item.LikeActions.length === 1 && action.LikeActionPerformedByUser)}\\\" class=\\\"fa {{action.Action.Icon}}\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizMediaSwapper.html',\r\n \"
0\\\">
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizNewsletterSignup.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizPhoneCountryCode.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizQuotes.html',\r\n \"

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizTagView.html',\r\n \"
0 && ($root.HideTagListForUser === undefined || $root.HideTagListForUser && $root.HideTagListForUser !== true)\\\"> Tags: #{{::tag.Name}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/bizUnitLogo.html',\r\n \"{{vm.logoAlt}}\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/login.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/save-btn.html',\r\n \" {{vm.saveText || 'Save'}} {{vm.savingText || 'Saving...'}} {{vm.savedText || 'Saved'}} {{vm.errorText || 'Error'}} \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPart/views/tagcloud-clean.html',\r\n \"
1\\\">
Filter
{{::tag.Name}} ({{::tag.Occurrence}})
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPermissions/itemobjectlist.html',\r\n \"
This item cannot be accessed by anyone
+
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPermissions/itemtemplate.html',\r\n \"
Permissions Permissions that the related users (via {{vm.ParentRelation.Name}} relation) must satisfy
Public If public is active, other permissions have no effect.
OR
1\\\" class=\\\"form-control margin-top\\\" items=vm.bizItemPermissionCache[vm.accessModuleKey].Cultures selected-item=vm.SelectedCulture no-select-text=\\\"-- Cultures --\\\" disabled=vm.IsPublic disable-default-select=true>

You can use a specific ip address ex: 192.168.0.1

You can use ip range ex: 192.168.0.1 - 192.168.0.100

You can use CIDR range ex: 192.168.0.0/24

CIDR table:

CIDR

Mask

Addresses

/20

255.255.240.0

4K

/21

255.255.248.0

2K

/22

255.255.252.0

1K

/23

255.255.254.0

512

/24

255.255.255.0

256

Example: 10.0.1.0/24 will give permission to the addresses in the range: 10.0.1.1 - 10.0.1.255

Add Permission

No specific permissions added

Area Unit 1\\\">Culture Department Role Ip restriction Relations
{{::vm.bizItemPermissionCache[vm.accessModuleKey].Areas.GetItemByValue('Id', permission.AreaId).Name}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Units.GetItemByValue('Id', permission.UnitId).Name}} 1\\\">{{::vm.bizItemPermissionCache[vm.accessModuleKey].Cultures.GetItemByValue('Id', permission.CultureId).Name}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Departments.GetItemByValue('Id', permission.UserDepartmentId).SystemName}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Roles.GetItemByValue('Id', permission.RoleId).Name}} {{::vm.bizItemPermissionCache[vm.accessModuleKey].Relations.GetItemByValue('Id', permission.RelationId).Name}}
{{vm.BuildPermissionsString(permission)}}
related users needs: {{vm.BuildPermissionsString(subPerm)}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizPermissions/relationsubitems.html',\r\n \"
Close
Sub permissions does not work with immediate updates
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizReactWrapper/bizreactwrapper.html',\r\n \"
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizSelect/bizselect.html',\r\n \"
{{selectedItem[Key]}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTerms.html',\r\n \" \"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTermsShow.html',\r\n \"


\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTermsStatus.html',\r\n \"
Accepted terms
Show terms
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizTerms/bizTermsStatusShow.html',\r\n \"


Close
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizUnlockable/bizunlockable.html',\r\n \"
Add group Save

{{vm.GetTranslation(group, vm.TranslateTypes.Name).Value || 'Group ' + (vm.KeyGroups.length - $index)}}
Delete

Mediabank Upload

Name Type
{{::vm.GetUnlockableKeyName(unlockable)}} {{::vm.KeyTypes.GetItemByValue('Value', unlockable.KeyObjectType).Name}} Delete

AND

OR

\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizUserSelection/template.html',\r\n \"
{{user.FirstName}} {{user.LastName}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizWelcomeGuide/SimpleWelcomeGuide.html',\r\n \"
1\\\" ng-class=\\\"{'is-first-page': $index === 0, 'is-last-page': $index === vm.pages.length - 1}\\\" ng-click=vm.TriggerPrev()>{{vm.Translations['BACKBTN']}} {{$index === vm.pages.length - 1 ? vm.Translations['COMPLETEBTN'] || 'OK' : vm.Translations['NEXTBTN']}} 1\\\">{{$index+1}}/{{vm.pages.length}}
\"\r\n );\r\n\r\n\r\n $templateCache.put(siteRootPath + 'Js/AngularModules/BizWelcomeGuide/WelcomeGuideJourneySelector.html',\r\n \"
{{journey.Name}} {{journey.Description}}
\"\r\n );\r\n}]);\n})(window.angular);","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n"],"names":["angular","completeRegister","$rootScope","$scope","$stateParams","completeRegisterService","$translate","$timeout","$filter","$sce","userService","vm","this","IsPostCustomFieldValid","customField","formFieldKey","CustomId","MyForm","$error","pattern","IsMandatory","ExtCustomFieldValues","Options","length","undefined","indexOf","CustomFieldsMobileBadInput","IsMobileValid","IsPostCustomField","field","toLowerCase","startsWith","InitFormSettings","settings","ExtCustomFields","i","_settings$ExtCustomFi","options","j","Id","Value","HasPostCustomFields","FormSettings","console","log","CompleteRegistrationGuid","guid","Unauthorized","MobilePattern","MobilePatternSE","GetUser","GetUserByActionGuid","then","response","result","BizPartCoreHelpers","getResponseValue","User","Settings","Initialized","status","UnauthorizedMessage","CompleteRegistration","password","gender","GetGender","passwordValid","AllowSetPassword","GetPassword","mobileValid","Mobile","MobileBadInput","postExtFieldsValid","$valid","Submitting","Submitted","extCustomFieldValues","customId","copy","hasOwnProperty","item","ShowValidation","Gender","VerificationCode","Success","SuccessMessage","trustAsHtml","Message","redirectUrl","ExtraInfo","RedirectUrl","setSessionStorage","RedirectTimeout","location","href","InternalError","GenderClick","Genders","checked","SystemName","number","skipSeMatch","test","LoadTranslations","translations","_translations$CORECO","_translations$CORECO2","msg","toString","mail","ErrorMessage","replace","IsPasswordSecure","Password","RepeatPassword","IsEmailValid","Email","EmailPattern","SendVerificationCode","SendVerificationCodeError","VerificationCodeSent","ShowEmailInvalid","PasswordRegex","IsMainCustomField","UnitLogo","GetUnitSettingsImage","$onInit","GetGenders","genders","filter","g","GetGuidInfo","Type","CreateUserForUnit","AllowEmailDomains","regexDomains","join","RegExp","$on","cancel","module","controller","$inject","window","extHome","$window","width","screen","css","height","top","left","boxShadow","borderRadius","e","data","showWelcomeGuide","parent","postMessage","show","dimBackground","showData","forgotpasswordController","forgotpasswordService","$mdDialog","bizValidationService","$mdToast","bizCoreService","IsIframed","mode","SendForgotPasswordWithEmail","SendPasswordRecoveryEmail","translation","ErrorObject","Object","ShowLogin","$broadcast","Portal","BackgroundImage","IsImagesInitialized","search","GetBackgroundImage","HasAcceptedCookies","getLocalStorage","changepasswordController","$state","Guid","PasswordWasUpdated","IsGuidValid","UpdatePassword","MyForm2","Init","IsResetPasswordGuidValid","loginController","loginService","bizLoaderService","IsInitialized","REMEMBER_ME_VAL_KEY","LoginError","RememberMe","OpenLoginActive","ShowLogo","MiniSettings","Login","ShowPortalName","ActivateAccountInit","ActivateAccountGuid","PhraseSuffix","phraseSuffix","ParentUnitUrlRewrite","parentUnitUrlRewrite","ExternalUnitKey","externalUnitKey","GetCustomImage","UserName","trim","RequestFullPageLoader","SetRememberMeData","deleteLocalStorage","Token","deleteStorage","setBizPartAuthToken","siteRootPath","HasAdminAccess","LoginAdminUrl","initialUrl","RequestFullPageLoaderFinish","setLocalStorage","SetHighlightLogin","InitEmailVerification","FormValid","ActivateAccountInitForm","AcctivateAccountInitSent","InitEmail","GetCurrentPortal","GetPortalsetting","portalSettings","getParameterByNameFromUrl","OpenIdOnly","ActivateAccount","_response$data$ExtraI","_response$data$ExtraI2","ActivateAccountSuccess","rememberMeVal","activatedEmailUserName","getSessionStorage","deleteSessionStorage","setTimeout","document","getElementById","focus","logoutController","Logout","myRelatedUsersController","$q","getGenderOverrideKey","genderSystemName","relationSystemName","toUpperCase","Clean","clean","AddRelatedUser","relationTypeId","RelatedUsers","push","Relations","RelationTypeId","ParentUserId","LoggedInUser","Focus","RemoveRelatedUser","user","index","splice","$setDirty","FilterByRelationType","relations","GetItemsByValue","GetItemByValue","Save","UpdateRelatedUsers","$setPristine","$setUntouched","HasSaved","simple","content","position","GetGenderDisplayNameForRelationType","genderDefaultSystemName","key","GenderOverrides","IsFormValid","Profile","ShowGender","GenderMandatory","all","GetRelationTypes","GetRelatedUsers","RelationTypes","AutoExpandRelatedUserSystemNamesOnClean","autoExpandSystemNames","includes","genderOverrideKeys","mycustomsettingsController","GetProfile","CustomData","currentGroup","_customField$CustomSe4","_customField$CustomSe5","_customField$CustomSe6","group","CustomSettings","GroupName","NewGroup","selected","SelectedOption","$watch","newValue","oldValue","_vm$MyForm","$dirty","GetProfileRestrictedFields","RestrictedFields","CustomSettingsDisabledText","t","SaveCustomProfileData","IsFieldRestricted","find","rf","FieldType","Name","IsFieldMandatory","_customField$CustomSe","_customField$CustomSe2","GroupMandatoryAllOrNone","_customField$CustomSe3","mysecurityController","OldPassword","NewPassword","NewPasswordRepeat","ShowPasswords","UpdateMyPassword","ToggleShowPassword","setAttribute","mypageController","educationService","levelService","eventStatisticsService","engageService","certificationsService","PageMax","UserStats","AuthToken","getBizPartAuthToken","Mascot","mascot","EducationCount","BlogCount","VideoCount","ScormCount","QuizCount","TotalEducationCount","Notifications","NotificationsPage","ActivityLog","ActivityLogPage","GainMoreExperience","GainMoreExperiencePage","LastGainedExperience","LastGainedExperiencePage","CertificationCount","CompletedEducationCount","GetCompletedCount","Education","CertificationEducation","Certification","GetLoggedInUserNotifications","page","GetLoggedInUserExperiencePointHistory","GetAllEventStatisticsForUser","GetSuggestions","GoToSuggestion","ControlType","go","id","GetSuggestionIcon","ShowCertificates","certificateController","GetCertificates","templateUrl","controllerAs","bindToController","GetUserLogStats","eduCount","blogCount","videoCount","scormCount","quizCount","EngageObjectLogs","Passed","EngageObjectType","GetStatCount","types","count","y","Initialize","GetCertificationsForUser","UserCerts","IsPortalSettingTrue","GoToItem","ObjectOwnerUserId","ObjectType","ObjectId","mysettingsController","bizMediabankService","bizMediabankUploadService","bizCoreProvider","profileDialogController","Close","Ok","hide","GendersInitialized","defer","CountriesInitialized","UnitTypesInitialized","UserUnitsInitialized","GetCustomFieldValue","SetSelectedUserType","SetGender","promise","CountryId","userCountry","Countries","c","SelectedCountry","Units","ut","AllowedUnitTypesToEdit","UnitTypeId","unit","SelectedUnit","resolve","HadMiddleNameOnLastFetch","MiddleName","UpdateCustomFieldValue","CompanyNumber","AllowSms","PortalCustomerName","portalCustomerName","NotificationSettings","notificationSettings","SaveMyDetails","showToast","TempFile","SetFile","SuccessCallback","UserTypeId","SelectedUserType","currentUserUnitsForType","u","error","currentUserUnit","removeCurrentUnit","addNewUnit","SaveBasicProfile","IsEditMode","UpdateAllowSMSForLoggedInUser","Unregister","DeleteMe","AskToUnregister","getView","locals","Text","IsSureCheck","err","GetLoggedInUserSetting","callback","GetLoggedInUserSettingAsBoolean","file","File","FileType","FileTypes","Image","FileLocation","UploadLocations","UserProfile","FilePattern","IsPrivate","IsInvisible","IsPrivateControlHidden","IsInvisibleControlHidden","IsUser","UploadFile","name","Photo","FileUrl","SetTempFile","files","GetProfileImageUrl","FavoriteTagFilter","tag","ShowMoreFavorites","Favorite","UserTypes","userGender","DisplayName","CustomGenderFilterFn","GetAllTags","CurrentCultureId","Tags","GetUserTypes","GetAllActiveCountries","GetProfileAllowedUnitsToEdit","AllowedUnitsToEdit","UnitTypeName","_vm$MyForm2","_vm$MyForm3","_newValue$i$SelectedU","_oldValue$i$SelectedU","_newValue$i$SelectedU2","_oldValue$i$SelectedU2","mycolleaguesController","unitService","GetUsersInUnit","unitId","UnitUsers","MyUnit","ShowSpecificUnit","parentId","ParentId","GetUnitsByParent","myleaderboardsController","leaderboardService","InitializeUnit","MonthLeaderboardCallback","MainUnitLeaderboardMonth","YearLeaderboardCallback","MainUnitLeaderboardYear","MonthUnitLeaderboardCallback","UnitLeaderboardMonth","YearUnitLeaderboardCallback","UnitLeaderboardYear","MainUnitLeaderboard","UnitLeaderboard","Limit","GetMainUnitLeaderboard","GetMainUnitLeaderboardBetweenDates","moment","startOf","format","endOf","GetUnitLeaderboard","GetUnitLeaderboardBetweenDates","GetCountryLeaderboard","CountryLeaderboard","CountryLeaderboardMonth","CountryLeaderboardYear","startTime","endTime","notificationsController","bizUser","Back","history","back","registerController","registerService","Register","GenderIsMandatory","AcceptedConditions","IsActive","CultureId","strCulture","Cultures","CultureCode","CreateUser","dataLayer","event","attributes","success","Roles","showTermsController","termsService","GetTerms","GettingsTerms","GetSystemTerms","terms","InteractionsDisabled","Terms","themestestController","unsubscribe","welcomeController","GetWelcomeGuide","pages","showAdvanced","JSON","parse","useAdvanced","bizActivityReminderService","$http","baseUrl","GetActivityReminders","maxReminders","get","params","SetActivityReminderViewed","reminder","post","directive","restrict","bizPhraseLoaderService","reminders","ImageUrl","FirstImageUrl","Reminders","GetPhrasePlaceholders","PhrasePlaceholders","unitName","parentUnitName","ParentUnits","UserInfo","FirstName","LastName","UserIdListUsedIndex","UserIds","LoadPart","service","bizAdminBar","bizAdminBarController","scope","simulating","isAllowedToSimulate","bizAdminBarService","$transitions","GetCultures","populateId","url","moduleType","urlRewrite","deferred","GetIdByUrlRewrite","fUrl","reject","AdminPageMap","Map","accessTypeKey","dynamic","getFinalUrl","title","set","SetEditButton","onSuccess","$transition","CurrentCulture","currentCultureId","ChangeCulture","culture","substring","CancelSimulation","simulation","deleteCookie","SimulatedByUserToken","SimulatedByUserId","ShowSimulateUser","simulateUserDialogController","Users","SearchTerm","PageIndex","PageLength","IncludeInactive","RoleId","SearchUsers","pageIndex","GettingUsers","UserData","CurrentPageEntries","concat","SimulateUser","PreparingSimulation","Date","userSession","UserId","SearchMoreUsers","_newValue$Id","Admin","GetAllRoles","GetAdminUrl","AdminUrl","ShowAdminButton","current","showBtn","stateName","has","adminInfo","HasWriteOrHigherAccess","ShowEditButton","GotoAdminEdit","SimulatingDate","getSimulatedDate","searchTerm","pageLength","includeInactive","roleId","userId","date","objectType","headers","IgnoreLoader","bizCookieSettingsDirective","element","attr","templateurl","bizCookieSettingsController","ToggleCookie","IsLoggedIn","UpdateUserSetting","bizCountdownTimer","bizCore","bizCountdownService","link","attrs","HasModuleAccess","$destroy","remove","bizMyNotesController","$interval","Countdown","interval","StartTimer","ignoreUpdate","HasAccessToStartTimer","StartTime","utc","StartCountdown","Seconds","Minutes","TimerStarted","CancelTimer","CancelCountdown","ResetTime","hubListender","args","Content","Cancelled","GetCountdownForLoggedinUser","countdown","CreatedByUserFullName","elapsedSeconds","diff","elapsedMinutes","Math","floor","secondsLeft","$onDestroy","servicePath","bizCultureSelectorDirective","useGbflagForUs","bizCultureSelectorController","cultures","Flag","GetImageName","ShortCultureCode","GetShortCountryCode","IsVisible","cultureCode","ccParts","split","countryCode","ChangeLanguage","qs","parts","qsParts","bizEngageStackedObjectsDirective","engageObjects","categoryId","horizontal","gotoFunc","bigImage","bizEngageStackedObjectsController","ImageList","category","GenericCategories","catObj","Objects","Order","Selected","SetSelected","obj","SetSelectedImageFirst","newList","Goto","bizEngageProgressBarDirective","label","progress","showProfileImage","bizEngageProgressBarController","bizEngageProgressSettingsDirective","settingsHandler","bizEngageProgressSettingsController","GetSettings","SavedSettings","SaveSettings","OriginalSettings","assign","bizEngageProgressDirective","bizEngageProgressController","HideGeneralJourneyProgress","HideCustomJourneyProgress","getLoggedInUser","SetProgress","GetAllJourneysTotalProgress","General","bizEngageJourneyDirective","bizEngageJourneyController","GetEngageJourneys","EngageJourneys","GetEngageState","engageObject","UrlRewrite","showCustomJourney","template","bizEngageJourneyProgressBarController","GetJourneys","JourneysInitialized","Journeys","objectCount","finishedObjectCount","EngageObjects","Status","round","bizFavorite","objectId","favorite","bizFavoriteController","favoriteService","FavMarkedCssClass","FavUnmarkedCssClass","IsFavorite","ToggleFavorite","FavoriteChangeCallback","GetFavorites","AddFavorite","RemoveFavorite","bizFavoriteList","favorites","bizFavoriteListController","Remove","bizFavoriteEditList","bizFavoriteEditListController","bizGlobalSiteTitleDirective","bizGlobalSiteTitleController","baseService","GetGlobalSiteTitle","SiteTitle","bizHeaderDirective","bizHeaderController","$element","HighLightItem","showOverlay","addClass","removeClass","CloseAllMenus","ShowFavorites","ShowSearch","ShowCultures","$digest","onScroll","scrollTop","pageYOffset","documentElement","scrollDirection","lastScrollTop","offsetLimit","offsetElement","offsetTop","logoHeight","clientHeight","AddBgClass","RemoveBgClass","logo","GoToAdmin","Search","searchText","QueryString","ToggleCollapseHeader","toggleClass","ShowTipSomeone","OpenIdProviderId","Header","KeepBgClass","addEventListener","isSessionStorageTrue","ClickOutsideMenu","newVal","oldVal","bizLayoutComponent","bizLayoutComponentService","$compile","container","GetLayoutComponent","LayoutComponent","Container","compiled","html","servicepath","type","bizLeaderboardDirective","leaderboard","header","IsMe","bizDefaultLevelProgressDirective","bizDefaultLevelProgressController","CurrentLevel","NextLevel","UserExperienceSum","PercentageCompleted","ExpLeftToNextLevel","GetLoggedInUserDefaultLevelProgress","m_Item1","AllLevels","m_Item2","m_Item3","CurrentLevelIndex","GetIndexByValue","RequiredExp","CalculateExperience","sum","needed","bizMenuJourneyStatus","bizMenuJourneyStatusController","bizJourneyService","SetCurrentJourney","SetNextJourneyObject","IsCurrentJourney","CurrentJourney","GoToNextJourneyObject","stopPropagation","GoToEngageItem","NextJourneyObject","nextObject","CloseJourneyPanel","JourneyPanelOpen","bizMenuJourney","journey","fromCollection","bizMenuJourneyController","Round","p","bizMenuJourneyCollection","closeFunc","bizMenuJourneyCollectionController","GoToJourneyPage","bizMainMenuDirective","menuItems","bizMainMenuController","scrollService","bizMainMenuService","GetItemLink","Link","setting","objectTypeSettings","String","State","Identifier","ObjectIdentifier","Navigate","IsActiveItem","state","parentState","ControllerScope","IsAnchorLink","HandleMenuClick","parentItem","Children","Expanded","MenuItems","ExpandMainMenu","hostname","ScrollTo","$","open","CurrentLocation","hash","ShowJourneyWidget","mobile","ShowInstallPWA","pwaDeferredPrompt","HasInstalledPwa","InstallPWA","installPWA","hasSentCloseEvent","bizMyNotes","limit","limitDateFrom","limitDateTo","myNotesService","Notes","EditMyNotesDialog","body","fromDate","toDate","notes","Data","GetMyNotes","from","getDateNow","subtract","to","add","Color","bizMyNotesEditDialogController","AddNote","unshift","image","selectedColor","stringify","SaveMyNotes","ClearPromiseCache","SelectImage","ShowMediabankDialog","uploadSettings","Colors","MyText","bizMyText","settingKey","bizMyTextController","DefaultData","OpenEdit","EditDialogController","Cancel","bizNotificationProvider","notificationSettingType","FAB","STANDARD","DIALOG","$get","bizNotifications","notificationPosition","bizNotificationService","bizNotificationsController","bizEffects","coreEngageService","Fade","IsPulsating","CanFade","DoGroup","ShowNotifications","FadeTimer","GroupedNotifications","FirstItemOfType","MaxSubItemsLength","SubItemsGroupWithinSecounds","MaxNotificationsToShow","AddNotification","not","_vm$LatestNotificatio","notification","NotificationId","ExistInSubitems","LatestNotification","Show","Queue","effect","GroupNotifications","StartFadeTimer","SetFade","Pulsate","SetUrlRewrite","Effect","_vm$Queue","queueNotification","shift","Fading","CancelFadeTimer","GetNotifications","notificationsFromServer","SetProperties","GetPositionClass","Position","TOPLEFT","TOPRIGHT","BOTTOMLEFT","BOTTOMRIGHT","CENTER","val","GetHighestId","time","StopPulsating","ConfirmRead","DateSent","isAfter","IsEngageObject","ObjectUrlRewrite","RedirectToEngageObject","NavigateTo","goalId","Key","FeedbackLink","GetJourneySettings","feedbackPage","FeedbackPage","objectKey","IsHighlighted","SortedNotifications","NoHighlight","duration","asSeconds","InitSlick","SlickLoaded","SlickSettings","arrows","dots","infinite","slidesToShow","slidesToScroll","Items","gi","grouped","nextIndex","subItems","groupNext","nextNot","sameKey","withinTime","slice","UnHighlightAllNotifications","engageObjectList","GetEngageObjectsByObjectIdAndType","GetEngageObjectTypeId","FakeMessageForTesting","min","random","onStart","max","param","CustomNotificationHandlers","Enabled","Handler","clickOutsideToClose","multiple","skipHide","Notification","hideDelay","autoWrap","close","constant","provider","bizOpenLoginBtnsDirective","openIdOnly","GoToOpenIdLogin","GetActiveOpenIdProviders","Providers","bizProfileMenuDirective","getController","bizProfileMenuController","m","_$rootScope$CurrentSt","CurrentState","States","Phrase","Icon","AccessTypeRight","Read","PortalSettingForEnable","bizSearchDirective","ReferrerType","ReferrerId","Expand","ExplicitIndexList","Source","bizSearchController","bizSearchService","GoToResults","SearchText","query","MaxHits","CanSearch","MinSearchTermLength","SearchIndexList","Index","SearchIndexExternalName","TotalHits","HitsIncement","CustomFilters","SearchInIndexes","results","IndexList","ResultItems","ExplicitIndexNumbers","r","GetSearchResultCallbackFn","Results","GoToResult","LogSearch","itemUrl","GetItemUrl","ClearForm","GetCustomValue","customValue","CustomValues","map","s","parseInt","si","some","CustomIndexUrls","GetSearchResultItemUrlFn","StateParameters","ItemIds","ItemId","StateParams","Query","bizSimulateUser","bizSimulateUserController","bizSimulateUserService","isSimulatingShadowUser","GetShadowUserSimulationInfo","ShadowUserSimulationInfo","Preparing","SimulateShadowUser","ShadowUserConfigKey","bizSocialShareDirective","Socialshare","objectName","uiStateName","uiStateParams","object","disabledProviders","likeActions","likeActionObjectType","useMenu","bizSocialShareController","bizSocialShareService","MobileOnly","Share","Sharing","share","TrackingId","Provider","Url","AddSocialShare","substr","SetUrl","absolute","GetShareUrl","ShowShare","PerformLikeAction","action","LikeActionPerformedByUser","LikeActionModel","LikedUserId","CreatedByUsr","LikeKey","ActionId","Action","Comment","Count","OnCopySuccess","textContent","loadedObject","Where","controllerPath","likeActionPath","AddSocialShareClick","click","bizTipSomeone","fromMobileMenu","bizTipSomeoneController","OpenPanel","popupController","OnBtnClick","Clicked","Error","email","message","Sent","escapeToClose","bizUnsubscribeDirective","bizUnsubscribeController","bizUnsubscribeService","IsCategoryOptIn","CategoryType","GetCategoriesByCode","code","categories","cat","Checked","Categories","Logo","Code","GetEncodedQS","ConfirmCategories","Result","catIds","GetCategoryIdsToLink","SaveCategoriesByCode","isChecked","isOptIn","CategoryIds","extCustomFields","settingsPromise","engageJourneyPromise","apiPath","force","GetEngageJourneysByFavoriteTags","GetEngageJourneysForUser","deferrer","responses","Custom","HandleEngageObjectCancelled","objects","objectTypeName","GetEngageObjectTypeById","objectTypeId","deepload","newPassword","res","backgroundImages","images","RandomBetween","GetGlobalLeaderboard","method","GetExperienceValueFromLastCheck","CheckForLevelUp","SaveMyNote","note","portalService","GetPortalSetting","sessionService","Tick","sessionTimer","TimeToShowWarning","ShowingWarning","alert","instant","ok","Refresh","TimeOut","Stop","SessionTime","SessionTimeEnd","Timer","localStorage","setItem","Start","updateBackend","UpdateUserSession","ssoService","SSOCheckIfUserExists","ssoKey","ssoToken","SSOKey","SSOToken","RegisterSSOUser","userName","firstName","lastName","countryIsoCode","CountryIsoCode","includeAccepted","AddUserActivity","refererUrl","activityGroup","SaveMyProfile","GetUserGenericCustomFields","customFieldId","value","oldPassword","allowSms","GetLoggedInUser","GetLoggedInUserFromDB","relatedUsers","SubscribeToNewsletter","configCoreFunction","$stateProvider","bizUserProvider","$translatePartialLoaderProvider","rule","isPublic","extmode","onlyLoggedOut","config","effectsProvider","fireworks","effectSystemName","confetti","showFireworks","launchInterval","loopInterval","SCREEN_WIDTH","innerWidth","SCREEN_HEIGHT","innerHeight","particles","rockets","mousePos","canvas","createElement","context","getContext","launch","x","rocket","Rocket","explosionColor","vel","size","shrink","gravity","launchFrom","loop","fillStyle","fillRect","existingRockets","update","render","distance","sqrt","pow","pos","randomChance","explode","existingParticles","exists","Particle","resistance","flick","alpha","fade","color","apply","showingFireworks","timeout","append","setInterval","hideFireworks","clearInterval","prototype","save","globalCompositeOperation","gradient","createRadialGradient","addColorStop","beginPath","arc","PI","closePath","fill","restore","constructor","particle","angle","speed","cos","sin","Vars","OriginalTitle","Interval","On","intervalSpeed","Off","blogsListController","blogService","MetadataService","bizEngageService","BlogItems","GUISettings","GetBlogEntries","ignoreLoader","_journeySettings","bsMethod","GetNewestBlogEntries","journeySettings","UseJourneyOrderInLists","GetBlogEntriesByJourneyOrder","ItemsFetched","SortMostLiked","SortMostCommented","modules","ContainerId","getModules","VideoUrl","YoutubeId","Description","DisplayDates","FormatCreatedUpdatedDateDisplay","Created","Updated","HandleBlogData","GetGenericSetting","RelatedSettings","SelectedItem","RelatedId","items","BlogItemsCommented","sort","a","b","Comments","BlogItemsLiked","LikeValue","setMetaTags","description","GetMiniJourneySetting","MiniJourneySettings","blogsShowController","bizContainerSettings","EventSource","ContainerRefererType","ContainerRefererObjectId","EntryId","Preview","EntryTitle","GetOneBlogEntry","GetOneBlogEntryError","NoAccess","GetOneBlogEntrySuccess","blogItem","ContainerRefererCreatedByUserId","GettingMoreItems","HandleContainer","Types","Blog","imageModules","imageUrl","videoModules","videoUrl","Title","img","video","HandleMetaData","AllItemsFetched","GetOneBlogEntryByTitle","GetDate","momentDate","isValid","hours","minutes","blogsShowByTagController","tagIds","TagId","categoryIds","CustomBlogTagFilter","CustomBlogCategoryFilterFn","BlogItemsToShow","EntriesPerPage","TotalEntries","CustomHandleBlogPostsFn","PopulateContainer","HandleBlogPosts","entry","SetSelectedItem","TagSystemName","tagSystemName","BlogPostUrlRewrite","blogPostUrlRewrite","GetTag","GetTagSuccess","SelectedTag","Tag","GetTagBySystemName","blogController","entryId","entryTitle","ExpandItem","tagId","GetBlogEntriesLocal","ExpandedItem","TotalLikeActions","LikeActions","GetLikeActionsByValue","positive","AddLikeActionToBlogEntry","totalCount","totalValue","AverageLikeValue","GetRelatedBlogEntries","scrollTo","GetImageUrl","overrideSlides","customPaging","responsive","breakpoint","SlickOverrideResponsiveSlides","GetMoreItems","GetTimeTo","now","asHours","StartEducation","education","IsUnpublished","PublishDate","NavigateToBlogEntry","RedirectToUrlRewrite","GetEntryUrlRewriteById","RelatedEntries","GetRelatedBlogPosts","AddBlogComment","$root","NewComment","NotVisible","expire","ExpireDate","ready","bizModuleBlogListDirective","bizModuleBlogListController","favoritesService","ids","Filter","SelectedFilter","SelectedLimit","_JSON$parse","_JSON$parse2","TagIds","GetBlogPostsSuccess","FavoriteTagIds","GetMostCommentedPosts","GetMostLikedPosts","SelectedBlogs","GetBlogPosts","warn","BlogItemsForMiniObjectList","miniObject","InitObjectMiniList","HandleItems","version","major","minor","relatedToId","ignoreLoadingBar","preview","actionId","comment","GetRelatedEntries","pageSize","overrideCache","GetEntriesByTags","GetBlogEntriesByOrder","order","parameters","updateLatest","systemName","SpecificIds","PageSize","UseComments","pageController","cmsService","bizContainerService","bizContainerUrls","PageIdentifier","GetCMSPage","GettingCMSPage","Page","DisableMainMenuSticky","menuSettings","IsSticky","hasStickyNavigation","keywords","Keywords","uiOnParamsChanged","changedParams","transition","basePath","HasCMSPage","GetCMSPageById","campaignController","campaignService","GetCampaign","GettingCampaign","Campaign","referer","LogGenericObjectVisit","pageUrlRewrite","GoToCampaignStart","startPage","CampaignPages","CampaignPageTypeId","campaignPageController","GoToStart","GetCampaignPage","GettingCampaignPage","CampaignPage","ChangePage","pageId","reload","destroyOnModuleFinish","UseSettings","SetContainerModuleInstanceFinished","ModuleInstanceFinishedSuccess","indexController","certService","CertList","NoImageUrl","GetCertifications","totalXp","Item","ExperienceGive","dictionaryService","SelectedItemId","Dictionary","LettersWithWords","GetDictionary","GetAllEntries","dictionary","d","fl","Word","FirstLetter","cultureId","GetAllEntriesWCategories","arguments","categoriesCommaSep","html5Controller","replyService","ModuleFinishHandler","HTML5ModuleInstanceFinished","OnlineEducationReply","OnlineEducation","getModulesWithSettings","IsSubmitted","SubmitHTML5Education","OnlineEducationFinished","ShowOnlineEducation","ModulesRequiringFinish","OnlineEducationId","GetOnlineEducation","GetHTML5Education","GetHTML5EducationReply","CreatedByUserId","UserStatus","setModuleFinishHandler","modulesWithSettings","IsFinished","mod","ContainerModuleInstanceId","HTML5","GetHTML5EducationByUrlRewrite","reply","bizEducationsListDirective","bizModuleEducationListDirective","bizEducationsListController","DataLoaded","useJourneyOrder","SCORMUserStatus","NotStarted","Started","Failed","GetAllEducationTypes","GetHTML5EducationsForLoggedInUser","GetSCORMEducations","HTML5Educations","SCORMEducations","GetHTML5EducationsForLoggedInUserSuccess","list","edu","HandleCategoryForEduction","GetHTML5EducationsForLoggedInUserByTagId","UserHasPassed","OpenHTML5Education","Entries","IsCategory","TagFilter","bizEducationsListModuleController","GetEducationsSuccess","skipLoadContainer","journeyOrder","educationId","replyId","containerModuleInstanceId","bizDeactivateGoalDirective","goal","postInactivateAction","deleteMode","bizDeactivateGoalController","engagementGoalsService","GetGoals","MoveToGoalList","ParentGoalId","ChildGoals","Inactivate","goalIdToMoveTo","InactivateGoal","SelectGoal","FilterGoals","bizManagerGoalsDirective","bizManagerGoalsController","Statuses","ManagerGoals","GetManagerGoals","GoalSettings","ManagerGoalOverrideHeader","GoalOverrideHeader","GotoToGoal","EditClose","SaveManagerGoals","AddGoal","isManagerGoal","SelectedGoal","SelectedUserGoal","Goal","SelectedStatus","IsManagerGoal","ShowIcon","Goals","GetStatusName","UserSelected","UserGoals","SelectedUser","userGoals","managerGoals","usersInUnit","bizMyGoalsDirective","showActiveFilter","goalFilter","hideActivities","hideEdit","hideTasks","selectedGoal","editProgress","rootGoals","bizMyGoalsController","ActiveStatus","Active","ProgressObjectTypes","Activity","Task","GetGoalsCallback","goals","ReportProgress","ProgressSum","Activities","act","k","ToDoList","tsk","GetChildGoals","SelectedActiveStatus","CompleteToDo","todo","CompleteTask","GotoActivity","activity","IsExpired","task","IsCompleted","DateLocal","SaveProgress","rp","pList","LinkedObjectType","LinkedObjectId","CreateProgress","Saved","GoalId","bizMyRootGoalsDirective","bizMyRootGoalsDirectiveController","bizMyTasksDirective","includeCompleted","showFilter","ignoreTaskId","bizMyTasksController","OrderBy","OrderDesc","ChangeOrderBy","desc","SetCurrentFilterMode","CurrentFilterMode","FilterMode","All","Match","Upcoming","Expired","Completed","GetTasks","inclCompleted","tasks","AddTaskStatus","currentFilterMode","GotoTask","FilterTasks","GetTaskCount","filterMode","bizOneGoalActivityDirective","bizOneGoalActivityController","GetGoalTypes","period","GetSelectedPeriod","EditMode","IsCurrentPeriod","EndDate","SetActivityLoaded","GoalTypes","when","activityIsLoaded","GoalTypeId","SelectedType","pGetGoals","activityGoal","DateLocalDate","saveData","GoalValue","CreateUpdateActivity","newCreated","activityIsLoadedDefer","unbindActivityWatch","DeleteActivity","confirm","DateToLocal","bizOneGoalDirective","isRoot","bizOneGoalController","DefaultNewProgressSteps","NewProgressSteps","EditDate","UploadSettings","labels","colors","cutoutPercentage","display","text","SelectedPeriod","Years","year","StartDate","SelectedYear","goalTypesLoadedDefer","goalTypesLoaded","rootGoalsLoadedDefer","rootGoalsLoaded","FirstTimeCreate","ImageMediabankId","SelectedRootGoal","IsLocked","ChildGoalSuggestions","IsNegative","SelectedToDate","NewProgress","change","progressDate","NewProgressDate","isSame","Progress","CreateUpdateGoal","OriginalType","OriginalIsNegative","DateFromLocal","LockGoal","ev","ariaLabel","targetEvent","LockGoalCallback","GetRootGoals","GetGoal","ShowDeactivate","parentEl","querySelector","ShowDeactivateController","IncreaseNewProgress","SetProgressStep","Dirty","DecreaseNewProgress","FixSortingToDoList","toDoList","GoToActivity","GoToTask","RootGoals","months","EditMonths","SelectedNewMonth","GenerateEditMonths","CreateChildGoalSuggestion","suggestions","monthsPerSplit","goalValueReminder","periodStart","periodEnd","textSuffix","goalValue","endList","month","EndList","RemoveChildGoalSuggestion","SetEditMode","PreEditGoal","PreEditImage","CancelEdit","lblFunction","GoalType","Suffix","percent","ProgressSumInPercent","bizOneGoalTaskDirective","bizOneGoalTaskController","DateSettings","taskIsLoadedDefer","taskIsLoaded","touchUi","buttons","dateWheels","ActivityId","GetActivities","GetActivitiesByGoalDate","activities","AllActivities","goalFilteredActivities","SelectedActivity","Todo","CreateUpdateTask","SetTaskLoaded","SetTaskDates","unbindTaskWatch","DeleteTask","UncompleteTask","bizGoalTaskStatusDirective","bizGoalTaskStatusController","activityController","activityId","GetOneActivity","calendarService","Tasks","events","UserProgressSum","ProgressValue","LoggedInUserId","GetProgressSum","progressValue","GoToNextPeriod","IncreaseSelectedPeriod","GoToPreviousPeriod","DecreaseSelectedPeriod","IsSelectedPeriodInCurrentYear","NegativeGoals","oneGoalController","newRoot","ReportPeriodTypes","DatePickerSettings","DayList","weekdays","GetMeetingInfo","PeriodModeList","GetPeriodModes","PeriodMode","OriginalPeriodMode","GetFrontEndModuleSettingValue","GetMeetings","MeetingInfo","OriginalMeetingInfo","SavePeriodMode","SetPeriodMode","SaveMeetingInfo","SetMeetingInfo","PeriodType","MeetingDay","MeetingList","SaveMeeting","CreateUpdateMeeting","AddMeetingDate","UnitId","meeting","ShowNewMeeting","DeleteMeeting","DeleteMeetingCallback","MeetingHasPassed","goalService","PeriodTypes","PeriodDayBreak","userData","ToolTipDateFormat","CommentCount","userid","PeriodCommentSettings","NewCommentData","PreventReplies","NextPeriodCommentSettings","HideDate","CurrentDate","PeriodLengthInDays","TasksInPeriod","TasksInPreviousPeriod","LoadTasks","PeriodStart","PeriodEnd","completedTasks","notCompletedTasks","CompletedTasksForUser","NotCompletedTasksForUser","NextPeriodStart","NextPeriodEnd","TasksInNextPeriod","GetTodoCount","GetTodoCountForUsersInSameUnit","PreviousPeriodStart","PreviousPeriodEnd","inPeriod","prevPeriod","TasksCompletedInPeriod","TasksNotCompletedInPeriod","NotCompleted","completedInPreviousPeriod","notCompletedInPreviousPeriod","TasksCompletedInPreviousPeriod","TasksNotCompletedInPreviousPeriod","TasksCompletedChange","TaksNotCompletedChange","TasksCompletedChangePercent","TasksNotCompletedChangePercent","GetGoalAndActivityComments","GoalAndActivityComments","allGoals","GetGoalsForUsersInSameUnit","UsersInSameUnit","meetingInfo","isoWeekday","CurrentMeeting","PreviousMeeting","NextMeeting","oneTaskController","GetOneTask","taskId","ExpandStatusStorageKey","ExpandedUserProgress","GetCurrentProgress","prg","UsersProgress","GetGoalsForUsers","ToggleUserProgressExpanded","progressItem","StoreUserProgressExpandStatus","RetrieveUserProgressExpandStatus","EventId","listController","EventFilter","eventService","GetOneEvent","eventId","UpdateParticipationStatus","newStatus","getServicePath","questionFreetextController","questionController","SetSelectedValues","model","GetValues","GetOptionTranslation","option","NameTranslations","questionScaleController","fields","questionYesNoController","FormFieldId","FieldKey","evt","createEvent","initCustomEvent","dispatchEvent","forumsController","forumService","Forums","GetForums","GoToForum","forum","forumController","ForumId","Forum","Threads","GetForum","GoToThread","thread","forumThreadController","deletePostController","ThreadId","Thread","Post","ForumThreadId","GetThread","SubmitPost","ThreadRead","ThreadEntrys","IsEditing","EditPost","DeletePost","DeletePostSuccess","threadId","journeyController","IsJourneyLocked","masterrunController","MasterRunUrl","isMobile","any","mediaController","mediaService","onPlayerStateChange","OnPlay","VideoEnded","OnEnded","OnInit","source","EventInit","MediaFile","VideoType","VideoTypes","Youtube","YoutubePlayer","GetYoutubeId","match","MediaFiles","MediaFileTypes","SelectedTypes","playClicked","VideoPlaying","Extended","LikedExtended","SeenExtended","showLatest","showMostLiked","showMostViewed","showMostCommented","showRelated","fileId","fileUrlRewrite","EventStart","EventEnd","GetMediaFiles","GetMediaFileTypes","GetFileImage","Thumbnail","ToggleMediaTypes","typeId","lastIndexOf","AddLikeActionToMediaFile","GetShowingSettings","GetGenericSettings","overrideToShow","GetOneMediaFile","GetObject","MediabankFile","GetRelatedMediaFiles","Native","Vimeo","RelatedMediaFiles","FilterLiked","GetYoutubeEmbedUrl","FilterAlreadyVisibleFiles","PauseVideo","pause","PlayVideo","currentTime","play","PlayedVideo","PlayYoutube","player","playVideo","videoId","matchMedia","matches","YT","Player","playerVars","rel","GetFileTypeTranslations","NameOverrideTranslations","NavigateToMediaFile","mediatagsController","FilterByTag","SelectedFile","SetSelectedFile","defaultFileTypes","fileTypes","setFirstSelected","idMatchIndex","urlRewriteMatchIndex","isNumeric","NavigateToMediaFileForTag","GetMediaFileUrl","bizModuleVideoListDirective","bizModuleVideoListController","Videos","GetVideosSuccess","getRelatedFiles","includeViews","GetRelatedFiles","IncludeViews","JourneyOrder","keys","missionsController","missionsService","missionsViewController","Mission","MissionId","GetMission","missionId","mission","Rules","GetRuleUrl","CompleteId","missionsUsersController","GetUsers","bizMissionDirective","transclude","bizMissionController","GetNextRule","NextRule","PercentageComplete","CalculateTimeStats","Now","DaysLeft","HoursLeft","MinutesLeft","CalculateCompletedPercent","CompletedPercentage","totalPercentage","amountOfRules","bizMissionRuleDirective","TemplateUrl","KnobData","fgColor","SecondaryColor","bgColor","inputColor","angleOffset","angleArc","readOnly","displayInput","Class","missionListDirective","missionListController","Missions","GetMissions","GetMissionsForUser","endDate","CalculateTimeStatsForAllMissions","ResultCount","SelectedIndex","OrderList","ShowAllIndex","SearchQuery","decodeURIComponent","maxHits","SortBy","IndexesToShow","IndexToShowList","SearchedQuery","StateUrl","GetStateUrl","HandleResults","GetResultHref","OnKeyPress","$event","keyCode","SelectIndex","GetItemPreview","ItemPreview","decodeURI","ShowCategory","ChangeSorting","HasValidDate","isSameOrBefore","speedquizListController","speedquizService","PluginInstanceId","pluginInstanceId","SpeedquizName","Speedquizes","PlaySpeedquiz","speedquiz","GoToHighscore","GetSpeedquizInstancesForLoggedInUser","HasGuiOverrides","speedquizPlayController","SpeedquizId","SpeedquizUrlRewrite","FromOneQuiz","fromOneQuiz","hasCustomerGuiOverrides","ShowGame","IsLoading","GetIframeUrl","portalAlias","postMessageReceived","origin","GetSpeedquizIdByUrlRewrite","removeEventListener","speedquizHighscoreController","speedquizName","Highscore","GetHighscore","ScoreItems","GoBack","GetSpeedquizInstance","quizId","assemblyName","className","Answer","answer","Submit","score","v","portalProvider","EngageObjectRedirectController","EngageObjectId","IsPortalPublic","userProvider","Write","WriteExtended","SetLoggedInUser","accessTypeModuleKey","hasAccess","IsAdministrator","AccessTypeAccesses","AccessTypeModule","AccessTypeKey","accessTypeAccess","ignorePortalPublic","AllUnits","adminRoleSystemNames","role","setLoggedInUser","Initials","locale","configFunction","$urlRouterProvider","$httpProvider","$translateProvider","$locationProvider","$ocLazyLoadProvider","otherwise","html5Mode","GetLazyLoadModules","interceptors","useApplyAsync","addPart","useLoader","urlTemplate","bizPartVersion","preferredLanguage","fallbackLanguage","forceAsyncReload","useLoaderCache","useSanitizeValueStrategy","SetPublicPortal","runFunction","levelProvider","SignalRFactory","$location","$translatePartialLoader","genericPosition","$locale","bizPushNotificationService","unitcookie","initializationDefer","GetScrollWidth","scrollWidth","CultureDefer","CultureInitialized","refresh","setTranslateProvider","isTestMode","defaults","common","portalId","poweredby","QueryParams","genericpositions","maxWidth","GetFullscreenCalc","getFullscreenWidth","Theme","portalTheme","UnitSettings","getCookie","IsInIframe","HasWebpSupport","PasswordMinLen","ImageDarkMode","GetPreloadedPortalSetting","HasAcceptedCookieOfType","CustomCheckCookieConsentFn","PreventHideOnScroll","Startpage","DisableLoadData","AlreadyVerifiedRedirectUrl","ShowMenu","ShowProfileImage","ShowUserType","ShowMobile","ShowMiddleName","ShowCountry","ShowComment","ShowHiddenInPublicLists","DisableFirstName","DisableLastName","DisableMiddleName","DisableEmail","ShowUnregister","ShowWelcomeLink","CustomHeaderPhrase","ShowCustomSettings","DisableCustomSettings","ShowMyRelatedUsers","AdditionalProfileSubMenuItems","HideHiddenInPublicLists","HideCurrentRating","ForRolesOnly","HideUserName","CustomLogoutFn","GetMiniSetting","check_webp_feature","feature","hasWebpSupport","PreventScrollTopOnce","CurrentUserId","CurrentUserCurrency","DefaultVirtualCurrencyValue","ShowXP","ShowCurrency","NUMBER_FORMATS","GROUP_SEP","CustomEvent","sessionTimeoutInSeconds","GetMenuItemsForLoggedInUser","SendHubMessageToServer","createFallbackFavicon","PrimaryColor","PrimaryTextColor","navigator","connection","updateConnectionStatus","journeysDefer","updatedObjectType","updatedObjectId","updatedToStatus","anyUpdated","updateJourneyProgress","finishedCount","eo","TotalProgress","GetNextJourneyItem","firstIfAllComplete","firstObject","currentJourneyIsDone","currentJourney","IsJourneyStarted","gotoNextObject","gotoFirstIfDone","objectDoneCount","PortalVersion","PortalDefaultCulture","UseApiController","UseEngageCore","GoogleAnalyticCustomTrackers","ga","SendMessageQueue","IsHubconnected","MsgQueue","send","PreviousState","$from","$to","CurrentStateClass","path","GATHasSetUserId","route","pathname","LastPageLoadTime","EvaluateAccessRule","noAccessState","isFunction","abort","RedirectUrls","self","translateParts","AddCustomNotification","info","HubServerName","HubKey","AddInformationNotification","Subject","hubKey","hubServerName","serverMsg","detail","connect","loadingInterceptorFunction","request","htmlIndex","urlLC","htmlTemplateCachePaths","isUrlForTemplateCache","debugTimes","enabled","exec","totalTime","threshold","responseError","rejection","TOP","LEFT","RIGHT","BOTTOM","translate","getExperienceTypeLabel","PublicPortal","lastUpdate","GetView","fallback","override","viewOverrides","themeOverride","Views","ViewUrl","GetController","Controller","SetViewOverrides","overrides","setViewOverrides","getViewOverrides","run","factory","token","prConfigs","Deferred","ajax","dataType","configs","ViewOverrides","urlReMapper","UrlReMapper","MenuSettings","JourneySettings","prUser","lang","queryString","SessionTimeInMinutes","prFavorites","favoriteObjects","bootstrap","strictDi","baseController","pageTitleNotification","screenSize","bizHideComponentService","getLocalStorageKeyForWelcomeGuide","_user$Id","HandleFavorites","SetShown","isSimulating","SelectedJourney","showNewCert","certContent","ShowDialog","HideButtons","CustomContentTemplateUrl","Cert","levelUp","levelContent","textToShow","$$unwrapTrustedValue","Hide","ExtMode","SetLanguage","SocialShareTrackingId","GetUserSetting","HasLayoutComponent","hasWelcomeGuide","hasShownWelcomeGuide","ShowWelcomeGuide","previewWelcomeGuidePages","isPreview","use","StopAnimateExperience","AnimateExperience","GainExperienceInterval","amount","countedPoints","DefaultExperiencePoints","pointsEarned","DefaultExperiencePointsStart","ExpInterval","onshow","onclose","ShowingDialog","DialogQueue","dialogPromise","dialogController","previewPages","ShowWindow","redirect","welcomeGuideController","Redirect","FocusElement","elementId","shouldFocus","eId","desktop","is","on","TotalExperiencePoints","DefaultLevel","hasFocus","off","BizPart","Client","Core","SessionTimer","baseNoaccessController","baseHomeController","JourneyItemsPerRow","isStartPageDataLoaded","isStartPageDataLoadedPromise","ogDefaultImage","GoToNextJourneyItem","GetItemWidth","GetStartPageData","StartPageData","MainBanner","ButtonLink","ButtonType","Fullscreen","HeaderTranslations","TextTranslations","SelectedColor","BlogModule","SelectedButtonType","EducationModule","VideoModule","Journey","View","ShowTags","Event","ItemsPerRow","miniSettings","ItemCount","isStarted","JourneyButtonTextTranslations","ButtonTextSecondaryTranslations","ButtonTextTranslations","journeys","maxItems","TotalJourneyCount","bizPhraseLogService","Phrases","IsEnabled","Promise","LogPhrase","bizHideComponentDirective","elem","Hiding","components","bizHideComponent","hiddenComponents","initializing","require","otherModelValue","ngModel","$validators","compareTo","modelValue","$validate","$observe","bind","timeSince","justNow","fromNowOrNow","xptypeFilter","cache","xptypeFilterFunction","$stateful","isutc","getTimezoneOffset","utcOffset","AddTranslatePartsToState","moduleSettings","UpdateFrontEndModuleSettingValue","GetSiteRootPath","len","charSet","randomString","randomPoz","elemId","messaging","firebase","initializeApp","firebaseConfig","onMessage","payload","show_on_site","click_action","ShowOnSite","serviceWorker","register","registration","useServiceWorker","requestPermission","permission","getToken","currentToken","notificationId","valid","AddPushNotificationId","usePublicVapidKey","tagData","getElementsByName","appendPortalNameLast","htmlDecode","portalName","$templateCache","put","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__"],"sourceRoot":""}