{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/surveys/survey-summary.vue?8cba","webpack:///./src/components/shared/error-summary-grid.vue?c3d4","webpack:///./src/views/event-bulk-upload.vue?b8d1","webpack:///./src/components/help-centre/training-nav-menu.vue?3b00","webpack:///./src/components/events/event-overview/assigned-organisations-table.vue?aad6","webpack:///./src/utils/load-options-serializer.js","webpack:///./src/views/location-details.vue?d4d4","webpack:///./src/components/surveys/survey-header.vue?bc77","webpack:///./src/components/help-centre/training-module.vue?09bb","webpack:///./src/views/event-overview.vue?b5a3","webpack:///./src/views/box-office-data.vue?7ba8","webpack:///./src/views/survey-data.vue?9f32","webpack:///./src/components/home/link-widgets.vue?810c","webpack:///./src/views/privacy-policy.vue?cda9","webpack:///./src/layouts/side-nav-outer-toolbar.vue","webpack:///./src/app-navigation.js","webpack:///./src/components/header-toolbar.vue","webpack:///./src/components/user-panel.vue","webpack:///src/components/user-panel.vue","webpack:///./src/components/user-panel.vue?30b9","webpack:///./src/components/user-panel.vue?5d55","webpack:///./src/common/unattendedModeService.js","webpack:///src/components/header-toolbar.vue","webpack:///./src/components/header-toolbar.vue?8d1b","webpack:///./src/components/header-toolbar.vue?9e4a","webpack:///./src/components/side-nav-menu.vue","webpack:///src/components/side-nav-menu.vue","webpack:///./src/components/side-nav-menu.vue?f890","webpack:///./src/components/side-nav-menu.vue?1603","webpack:///./src/mixins/notify.js","webpack:///./src/config/roles.js","webpack:///./src/config/ability.js","webpack:///./src/components/the-footer.vue","webpack:///src/components/the-footer.vue","webpack:///./src/components/the-footer.vue?2d31","webpack:///./src/components/the-footer.vue?674b","webpack:///src/layouts/side-nav-outer-toolbar.vue","webpack:///./src/layouts/side-nav-outer-toolbar.vue?7a3e","webpack:///./src/layouts/side-nav-outer-toolbar.vue?85c6","webpack:///./src/layouts/survey-layout.vue","webpack:///src/layouts/survey-layout.vue","webpack:///./src/layouts/survey-layout.vue?28a5","webpack:///./src/layouts/survey-layout.vue?883a","webpack:///./src/layouts/static-layout.vue","webpack:///src/layouts/static-layout.vue","webpack:///./src/layouts/static-layout.vue?39d1","webpack:///./src/layouts/static-layout.vue?54d4","webpack:///./src/views/home.vue","webpack:///./src/components/home/welcome-widget.vue","webpack:///src/components/home/welcome-widget.vue","webpack:///./src/components/home/welcome-widget.vue?c91c","webpack:///./src/components/home/welcome-widget.vue?2563","webpack:///./src/components/home/illuminate-widgets.vue","webpack:///./src/components/home/widget-link-defs.js","webpack:///src/components/home/illuminate-widgets.vue","webpack:///./src/components/home/illuminate-widgets.vue?c4ad","webpack:///./src/components/home/illuminate-widgets.vue?9ae4","webpack:///./src/components/home/link-widgets.vue","webpack:///src/components/home/link-widgets.vue","webpack:///./src/components/home/link-widgets.vue?2e4f","webpack:///./src/components/home/link-widgets.vue?059a","webpack:///src/views/home.vue","webpack:///./src/views/home.vue?ba59","webpack:///./src/views/home.vue?9a2c","webpack:///./src/views/survey-response.vue","webpack:///./src/components/survey-responses/survey-response-details.vue","webpack:///./src/utils/error-message-extractor.js","webpack:///./src/utils/review-field-names.js","webpack:///./src/components/survey-responses/rework-widget.js","webpack:///src/components/survey-responses/survey-response-details.vue","webpack:///./src/components/survey-responses/survey-response-details.vue?6cca","webpack:///./src/components/survey-responses/survey-response-details.vue?2dff","webpack:///src/views/survey-response.vue","webpack:///./src/views/survey-response.vue?913f","webpack:///./src/views/survey-response.vue?0673","webpack:///./src/views/terms-of-use.vue","webpack:///src/views/terms-of-use.vue","webpack:///./src/views/terms-of-use.vue?1dcc","webpack:///./src/views/terms-of-use.vue?e469","webpack:///./src/views/organisation-overview.vue","webpack:///./src/components/organisations/organisation-details.vue","webpack:///./src/utils/lookup-source-provider.js","webpack:///./src/mixins/check-name-availability.js","webpack:///src/components/organisations/organisation-details.vue","webpack:///./src/components/organisations/organisation-details.vue?7b3f","webpack:///./src/components/organisations/organisation-details.vue?436a","webpack:///./src/components/organisations/organisation-templates.vue","webpack:///./src/components/survey-templates/org-templates-list-col-defs.js","webpack:///./src/components/confirm-delete-popup.vue","webpack:///src/components/confirm-delete-popup.vue","webpack:///./src/components/confirm-delete-popup.vue?58ec","webpack:///./src/components/confirm-delete-popup.vue?9f12","webpack:///src/components/organisations/organisation-templates.vue","webpack:///./src/components/organisations/organisation-templates.vue?4d18","webpack:///./src/components/organisations/organisation-templates.vue?cf4b","webpack:///./src/components/organisations/assigned-box-office-provider-refs-table.vue","webpack:///./src/components/organisations/assigned-bo-provider-list-col-defs.js","webpack:///src/components/organisations/assigned-box-office-provider-refs-table.vue","webpack:///./src/components/organisations/assigned-box-office-provider-refs-table.vue?84f1","webpack:///./src/components/organisations/assigned-box-office-provider-refs-table.vue?55c7","webpack:///src/views/organisation-overview.vue","webpack:///./src/views/organisation-overview.vue?692f","webpack:///./src/views/organisation-overview.vue?6619","webpack:///./src/views/organisations-list.vue","webpack:///./src/components/organisations/org-list-col-defs.js","webpack:///src/views/organisations-list.vue","webpack:///./src/views/organisations-list.vue?715b","webpack:///./src/views/organisations-list.vue?dd7f","webpack:///./src/views/event-overview.vue","webpack:///./src/components/events/event-overview/event-details.vue","webpack:///./src/components/events/event-overview/event-details-form-options.js","webpack:///./src/components/events/event-overview/assigned-organisations-table.vue","webpack:///./src/components/events/event-overview/assigned-org-list-col-defs.js","webpack:///./src/components/shared/sub-discipline-select-box.vue","webpack:///src/components/shared/sub-discipline-select-box.vue","webpack:///./src/components/shared/sub-discipline-select-box.vue?e756","webpack:///./src/components/shared/sub-discipline-select-box.vue?33b1","webpack:///src/components/events/event-overview/assigned-organisations-table.vue","webpack:///./src/components/events/event-overview/assigned-organisations-table.vue?5f1e","webpack:///./src/components/events/event-overview/assigned-organisations-table.vue?c027","webpack:///src/components/events/event-overview/event-details.vue","webpack:///./src/components/events/event-overview/event-details.vue?848a","webpack:///./src/components/events/event-overview/event-details.vue?25e2","webpack:///./src/components/events/event-overview/event-forecast.vue","webpack:///src/components/events/event-overview/event-forecast.vue","webpack:///./src/components/events/event-overview/event-forecast.vue?722f","webpack:///./src/components/events/event-overview/event-forecast.vue?1b8f","webpack:///./src/components/events/event-overview/event-surveys-list.vue","webpack:///./src/components/events/event-overview/event-surveys-list-col-defs.js","webpack:///src/components/events/event-overview/event-surveys-list.vue","webpack:///./src/components/events/event-overview/event-surveys-list.vue?1f51","webpack:///./src/components/events/event-overview/event-surveys-list.vue?b2e3","webpack:///./src/components/confirm-popup.vue","webpack:///src/components/confirm-popup.vue","webpack:///./src/components/confirm-popup.vue?a28a","webpack:///./src/components/confirm-popup.vue?a62e","webpack:///src/views/event-overview.vue","webpack:///./src/views/event-overview.vue?c470","webpack:///./src/views/event-overview.vue?d24d","webpack:///./src/views/survey-create-update-overview.vue","webpack:///./src/components/surveys/survey-details.vue","webpack:///./src/components/surveys/survey-logo-uploader.vue","webpack:///src/components/surveys/survey-logo-uploader.vue","webpack:///./src/components/surveys/survey-logo-uploader.vue?6c12","webpack:///./src/components/surveys/survey-logo-uploader.vue?6fab","webpack:///src/components/surveys/survey-details.vue","webpack:///./src/components/surveys/survey-details.vue?61a7","webpack:///./src/components/surveys/survey-details.vue?bfe4","webpack:///./src/components/surveys/survey-optional-questions.vue","webpack:///./src/components/surveys/survey-questions-table-col-defs.js","webpack:///src/components/surveys/survey-optional-questions.vue","webpack:///./src/components/surveys/survey-optional-questions.vue?b544","webpack:///./src/components/surveys/survey-optional-questions.vue?0ec5","webpack:///./src/components/surveys/survey-summary.vue","webpack:///src/components/surveys/survey-summary.vue","webpack:///./src/components/surveys/survey-summary.vue?00bb","webpack:///./src/components/surveys/survey-summary.vue?5509","webpack:///./src/components/surveys/published-survey-details-banner.vue","webpack:///./src/utils/export-survey-template.js","webpack:///./src/mixins/download-template.js","webpack:///src/components/surveys/published-survey-details-banner.vue","webpack:///./src/components/surveys/published-survey-details-banner.vue?e8dc","webpack:///./src/components/surveys/published-survey-details-banner.vue?4293","webpack:///./src/components/surveys/survey-header.vue","webpack:///src/components/surveys/survey-header.vue","webpack:///./src/components/surveys/survey-header.vue?f049","webpack:///./src/components/surveys/survey-header.vue?4fa3","webpack:///src/views/survey-create-update-overview.vue","webpack:///./src/views/survey-create-update-overview.vue?c158","webpack:///./src/views/survey-create-update-overview.vue?7d48","webpack:///./src/views/events-management.vue","webpack:///./src/components/events/events-list/quarterly-attestations.vue","webpack:///./src/components/confirm-attestation-popup.vue","webpack:///src/components/confirm-attestation-popup.vue","webpack:///./src/components/confirm-attestation-popup.vue?747d","webpack:///./src/components/confirm-attestation-popup.vue?80c9","webpack:///./src/components/events/events-list/quarterly-attestation-box.vue","webpack:///src/components/events/events-list/quarterly-attestation-box.vue","webpack:///./src/components/events/events-list/quarterly-attestation-box.vue?e0fa","webpack:///./src/components/events/events-list/quarterly-attestation-box.vue?b093","webpack:///src/components/events/events-list/quarterly-attestations.vue","webpack:///./src/components/events/events-list/quarterly-attestations.vue?3bec","webpack:///./src/components/events/events-list/quarterly-attestations.vue?17a5","webpack:///./src/components/events/events-list/events-schedule.vue","webpack:///./src/components/events/events-list/event-list-col-defs.js","webpack:///src/components/events/events-list/events-schedule.vue","webpack:///./src/components/events/events-list/events-schedule.vue?64d9","webpack:///./src/components/events/events-list/events-schedule.vue?17ea","webpack:///src/views/events-management.vue","webpack:///./src/views/events-management.vue?0d0d","webpack:///./src/views/events-management.vue?a64b","webpack:///./src/views/location-details.vue","webpack:///src/views/location-details.vue","webpack:///./src/views/location-details.vue?78f2","webpack:///./src/views/location-details.vue?9fec","webpack:///./src/views/locations-list.vue","webpack:///./src/components/locations/location-list-col-defs.js","webpack:///src/views/locations-list.vue","webpack:///./src/views/locations-list.vue?3c17","webpack:///./src/views/locations-list.vue?2353","webpack:///./src/views/user-details.vue","webpack:///src/views/user-details.vue","webpack:///./src/views/user-details.vue?ae10","webpack:///./src/views/user-details.vue?bf2e","webpack:///./src/views/users-list.vue","webpack:///./src/components/users/user-list-col-defs.js","webpack:///src/views/users-list.vue","webpack:///./src/views/users-list.vue?0352","webpack:///./src/views/users-list.vue?9dac","webpack:///./src/views/privacy-policy.vue","webpack:///src/views/privacy-policy.vue","webpack:///./src/views/privacy-policy.vue?b16d","webpack:///./src/views/privacy-policy.vue?bcad","webpack:///./src/views/cookie-notice.vue","webpack:///src/views/cookie-notice.vue","webpack:///./src/views/cookie-notice.vue?54b0","webpack:///./src/views/cookie-notice.vue?58ad","webpack:///./src/views/box-office-data.vue","webpack:///./src/components/box-office/box-office-uploads-list-col-defs.js","webpack:///src/views/box-office-data.vue","webpack:///./src/views/box-office-data.vue?07d5","webpack:///./src/views/box-office-data.vue?1c28","webpack:///./src/views/survey-data.vue","webpack:///src/views/survey-data.vue","webpack:///./src/views/survey-data.vue?4847","webpack:///./src/views/survey-data.vue?b3c3","webpack:///./src/views/insights.vue","webpack:///src/views/insights.vue","webpack:///./src/views/insights.vue?c493","webpack:///./src/views/insights.vue?deb8","webpack:///./src/views/insights-public.vue","webpack:///src/views/insights-public.vue","webpack:///./src/views/insights-public.vue?8c37","webpack:///./src/views/insights-public.vue?3ee7","webpack:///./src/components/api-authorization/ApiAuthorizationRoutes.js","webpack:///./src/views/help-centre.vue","webpack:///./src/components/help-centre/training-session-defs.js","webpack:///./src/components/help-centre/training-module-definitions.js","webpack:///./src/components/help-centre/training-module.vue","webpack:///src/components/help-centre/training-module.vue","webpack:///./src/components/help-centre/training-module.vue?bb2d","webpack:///./src/components/help-centre/training-module.vue?68f4","webpack:///./src/components/help-centre/training-table.vue","webpack:///./src/components/help-centre/training-table-col-defs.js","webpack:///src/components/help-centre/training-table.vue","webpack:///./src/components/help-centre/training-table.vue?50f9","webpack:///./src/components/help-centre/training-table.vue?e2b1","webpack:///./src/components/help-centre/training-nav-menu.vue","webpack:///src/components/help-centre/training-nav-menu.vue","webpack:///./src/components/help-centre/training-nav-menu.vue?c459","webpack:///./src/components/help-centre/training-nav-menu.vue?70c7","webpack:///src/views/help-centre.vue","webpack:///./src/views/help-centre.vue?d92a","webpack:///./src/views/help-centre.vue?7cfa","webpack:///./src/views/event-bulk-upload.vue","webpack:///./src/components/shared/error-summary-grid.vue","webpack:///./src/components/shared/error-summary-grid-col-defs.js","webpack:///./src/components/shared/bulk-upload-error-defs.js","webpack:///src/components/shared/error-summary-grid.vue","webpack:///./src/components/shared/error-summary-grid.vue?376e","webpack:///./src/components/shared/error-summary-grid.vue?3028","webpack:///src/views/event-bulk-upload.vue","webpack:///./src/views/event-bulk-upload.vue?d36a","webpack:///./src/views/event-bulk-upload.vue?3407","webpack:///./src/router.js","webpack:///./src/views/organisation-overview.vue?f290","webpack:///./src/components/home/illuminate-widgets.vue?53e3","webpack:///./src/store/modules/auth.js","webpack:///./src/store/modules/notify.js","webpack:///./src/common/processing-status.js","webpack:///./src/store/modules/survey-response.js","webpack:///./src/store/modules/events.js","webpack:///./src/store/modules/locations.js","webpack:///./src/store/modules/organisations.js","webpack:///./src/store/modules/users.js","webpack:///./src/store/modules/surveys.js","webpack:///./src/store/index.js","webpack:///./src/components/help-centre/training-table.vue?53ff","webpack:///./src/assets/illuminate_logo.svg","webpack:///./src/components/api-authorization/AuthorizeService.js","webpack:///./src/components/home/welcome-widget.vue?1079","webpack:///./src/components/events/events-list/quarterly-attestations.vue?d0f8","webpack:///./src/components/organisations/assigned-box-office-provider-refs-table.vue?a8eb","webpack:///./src/App.vue?31f7","webpack:///./src/components/surveys/survey-details.vue?78b0","webpack:///./src/App.vue","webpack:///./src/components/api-authorization/AuthorizeRoute.vue","webpack:///./src/components/api-authorization/Navigate.vue","webpack:///src/components/api-authorization/Navigate.vue","webpack:///./src/components/api-authorization/Navigate.vue?6300","webpack:///./src/components/api-authorization/Navigate.vue?a6eb","webpack:///src/components/api-authorization/AuthorizeRoute.vue","webpack:///./src/components/api-authorization/AuthorizeRoute.vue?40b3","webpack:///./src/components/api-authorization/AuthorizeRoute.vue?1b90","webpack:///./src/utils/media-query.js","webpack:///src/App.vue","webpack:///./src/App.vue?98c8","webpack:///./src/App.vue?bff9","webpack:///./src/app-info.js","webpack:///./src/config/defineAbility.js","webpack:///./src/main.js","webpack:///./src/views/help-centre.vue?9d1d","webpack:///./src/views/insights-public.vue?f947","webpack:///./src/components/events/event-overview/event-surveys-list.vue?4444","webpack:///./src/components/events/event-overview/event-details.vue?1185","webpack:///./src/layouts/survey-layout.vue?0b53","webpack:///./src/views/insights.vue?7dcf","webpack:///./src/layouts/side-nav-outer-toolbar.vue?8071","webpack:///./src/views/cookie-notice.vue?88ee","webpack:///./src/utils/error-action.js","webpack:///./src/utils/error-types.js","webpack:///./src/utils/error-handler.js","webpack:///./src/components/surveys/survey-logo-uploader.vue?37b7","webpack:///./src/components/confirm-popup.vue?1272","webpack:///./src/components/header-toolbar.vue?d88b","webpack:///./src/components/surveys/published-survey-details-banner.vue?0b72","webpack:///./src/components/confirm-delete-popup.vue?3503","webpack:///./src/components/side-nav-menu.vue?373c","webpack:///./src/views/home.vue?e10f","webpack:///./src/views/users-list.vue?c7cd","webpack:///./src/components/organisations/organisation-details.vue?8643","webpack:///./src/components/events/events-list/events-schedule.vue?28ad","webpack:///./src/assets/welcome-widget-min.jpeg","webpack:///./src/common/constants.js","webpack:///./src/components/the-footer.vue?12f4","webpack:///./src/views/events-management.vue?c283","webpack:///./src/utils/axios-instance.js","webpack:///./src/components/api-authorization/ApiAuthorizationConstants.js","webpack:///./src/common/helperFunctions.js","webpack:///./src/components/confirm-attestation-popup.vue?ff04","webpack:///./src/views/organisations-list.vue?5050","webpack:///./src/config/subjects.js","webpack:///./src/components/events/event-overview/event-forecast.vue?e13c","webpack:///./src/components/user-panel.vue?eb5b","webpack:///./src/components/organisations/organisation-templates.vue?9f78","webpack:///./src/assets/illuminate-widget-crop.jpg","webpack:///./src/views/locations-list.vue?5393","webpack:///./src/components/surveys/survey-optional-questions.vue?6076","webpack:///./src/views/terms-of-use.vue?f2b3","webpack:///./src/components/events/events-list/quarterly-attestation-box.vue?fdaa","webpack:///./src/components/survey-responses/survey-response-details.vue?1e75","webpack:///./src/views/survey-create-update-overview.vue?8089","webpack:///./src/layouts/static-layout.vue?bd1f"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","serializeLoadOptions","loadOptions","filter","keys","forEach","isNotEmpty","JSON","stringify","render","_vm","this","_c","_self","staticClass","attrs","headerMenuTogglerEnabled","toggleMenu","title","menuOpened","drawerOptions","menuMode","menuRevealMode","minMenuSize","shaderEnabled","hideOnOutsideClick","on","$event","scopedSlots","_u","fn","_","$route","path","menuItems","handleSideBarClick","openMenu","closeMenu","ref","scrollViewRef","_t","scrollToTop","showModal","staticRenderFns","text","icon","subject","subjects","home","insights","boxOffice","organisation","location","user","refreshKey","isAuthenticated","onLogoutClick","_e","isSurvey","menuToggleEnabled","toggleMenuFunc","surveyLogo","require","isUnattendedMode","onRestartSurveyClicked","userPanelMenuMode","indexOf","_k","keyCode","onUserButtonEnter","arguments","userMenuItems","proxy","_v","_s","userInitials","concat","firstName","surname","menuPositionConfig","handleItemClick","props","String","Array","my","at","computed","_objectSpread","mapState","getCapitalizedInitial","methods","mapActions","toUpperCase","itemData","onClick","created","getUser","components","DxContextMenu","DxList","component","setUnattendedModeForSurvey","quickcode","sessionStorage","setItem","getUnattendedModeStatusForSurvey","unattendedMode","getItem","resetUnattendedModeForSurvey","removeItem","Boolean","Function","logOutFunc","width","height","userName","loginPath","ApplicationPaths","Login","mounted","_this","_subscription","authService","subscribe","populateState","params","addEventListener","handleResize","beforeDestroy","unsubscribe","removeEventListener","innerWidth","innerHeight","$router","LogOut","replace","reload","_populateState","_asyncToGenerator","regeneratorRuntime","mark","_callee","_yield$Promise$all","_yield$Promise$all2","wrap","_context","prev","next","sent","_slicedToArray","stop","$refs","userButton","$el","click","DxButton","DxToolbar","DxItem","UserPanel","forwardClick","openTree","closeTree","treeViewRef","items","handleMenuInitialized","handleSelectionChange","selectedItem","compactMode","_len","args","_key","$emit","option","pointerEvent","stopPropagation","updateSelection","nodeClass","selectedClass","leafNodeClass","element","rootNodes","querySelectorAll","from","node","classList","remove","selectedNode","querySelector","parentElement","contains","add","treeView","selectItem","instance","collapseAll","watch","DxTreeView","notification","newValue","notify","position","offset","dismissAfter","GlobalAdmin","id","role","display","Admin","User","_AbilityBuilder","AbilityBuilder","can","cannot","rules","roles","assessmentReview","customQuestionnaire","masterQuestionnaire","project","projectBusinessUnit","projectQuestionnaire","projectInsight","projectUser","thirdParty","thirdPartyAssessment","surveyResponse","surveyResponseReview","scopingQuestion","scopingQuestionnaire","standardQuestionnaire","survey","fields","pwcRoleEdit","clientRoleEdit","pwcUser","clientUser","Date","getFullYear","linkClicked","isAuthd","_linkClicked","_x","_mounted","_callee2","_context2","x","isXSmall","isSmall","isXLarge","mixins","mapMutations","menuTemporaryOpened","scrollView","scrollTo","left","top","logoutUser","checkTimer","curTime","getTime","lastUserActiveTime","localStorage","sessionIdleLength","setTimers","logoutTimer","resetTimer","response","$ability","update","defineAbilitiesFor","routeMeta","currentRoute","meta","requiresAuth","$can","errorCode","showHelpModal","events","interval","timerLength","_this2","allMenuItems","item","_this3","setInterval","getTermsAcceptanceStatus","DxDrawer","DxScrollView","HeaderToolbar","SideNavMenu","TheFooter","destroyed","clearInterval","_m","userFullName","baseUrl","contactUsClicked","origin","open","viewEventsClicked","linkDefs","routeName","action","_l","link","class","WelcomeWidget","IlluminateWidget","LinkWidgets","isInUnattendedMode","isProcessing","questionnaire","submitted","introduction","eventName","eventVenue","currentPageNo","visiblePageCount","calcPageCountProgress","progressBarAttributes","directives","rawName","isFirstPage","expression","previousClicked","nextClicked","completeClicked","confirmVisible","cancelConfirm","confirmSubmit","canSubmitAnotherResponse","submitAnotherResponse","fromResponse","reviewFieldNames","FOR_REWORK","REWORK_COMMENTS","COMPLIANCEASSESSMENT","COMMENTS","ATTACHMENTS","FINDINGS","freeze","createReviewRootPanel","questionName","containerName","primaryPanelName","secondaryPanelName","reviewFields","createReviewField","fieldName","defaultValue","converterToSurvey","converterToModel","previousReviewKeyName","currentReviewKeyName","getReviewKeyName","previous","getFieldValueForSurvey","answers","getFieldValueFromSurvey","surveyData","sendBackForRework","reworkComments","combineQuestionAnswerAndReview","questionKeyNames","questionnaireAnswers","primaryReviewAnswers","_step","_iterator","_createForOfIteratorHelper","done","questionKeyName","_i","_Object$keys","field","f","DxLoadPanel","DxPopup","DxProgressBar","Survey","progressValue","renderQuestionCount","validationKey","surveyResponseId","clearQuestionnaire","mapGetters","surveyAnswers","currentQuestionType","page","currentPage","elts","elements","question","getType","review","answersReviews","completionMethod","SurveyCompletionMethod","UnattendedMode","Authenticated","Anonymous","processing","newQuestionnaire","stopListeningSurveyEvents","parsedSchema","addNpoNameToSchema","surveySchema","Model","showNavigationButtons","showQuestionNumbers","showCompletedPage","onGetQuestionTitle","questionsOnPageMode","converter","Showdown","Converter","onTextMarkdown","options","str","makeHtml","substring","html","onAfterRenderQuestionInput","sender","dropdownListModel","listModel","renderElements","getElementsByClassName","style","marginBottom","startListeningSurveyEvents","notifyError","save","prevPage","catch","schema","orgDisplayName","orgDisplayNamePossessive","endsWith","pages","qs","includes","replaceAll","discipline","sc","choices","k","index","visibleIndex","getQuestionIndexOnPage","onlyVisible","questions","list","addQuestionsToList","_nextClicked","validate","abrupt","nextPage","submit","getQuestionnaireAnswers","getAllQuestions","getValue","fromEntries","entries","_ref","_ref2","_save","saveQuestionnaire","hasErrors","_confirmSubmit","_callee3","_context3","doComplete","handleSurveyValueChanged","setAnswers","onValueChanged","getSurvey","_this4","getQuestionnaire","hasLogo","getSurveyLogo","removeQuickcodeKeyAndResponseIdFromLocalStorage","populateAuthStatus","_populateAuthStatus","_callee4","isauthenticated","_context4","getLocalKeyAndResponseIdFromQuickCode","obj","parse","saveQuickcodeKeyAndResponseIdToLocalStorage","_callee5","_this5","_context5","createFromQuickCode","keyIdentifier","nodeName","preventDefault","metaInfo","content","SurveyResponseDetails","showAcceptButton","acceptButtonClick","showButton","_acceptButtonClick","updateTermsAcceptanceStatus","saveTermsAcceptanceStatus","onBackClicked","isEditMode","orgDetails","userAction","$subjects","onSaveOrgClicked","onDeleteOrgClicked","tabs","currTab","tab","deleteOrgFunction","popupVisible","divClick","setUnsavedChanges","maxLength","checkNameAvailabilityCall","editorOptions","npoStatus","exemptFromSurveying","layout","dataSource","discplinesDataSource","address","postcode","postCodeRegex","regions","upperAuths","upperAuthoritiesDataSource","constituencies","constituenciesDataSource","aceArea","activeStatuses","isUploadingLogo","of","logoRefreshKey","allowedFileExtensions","maxFileUploadSize","uploadUrl","getUploadHeaders","attachmentsValueChanged","onLogoUploadSuccessful","onLogoUploadStarted","onLogoUploadError","orgLogo","isActiveStatusTooltipVisible","isLogoTooltipVisible","isKnownAsTooltipVisible","sources","createSource","store","CustomStore","loadMode","load","_load","$axios","sort","a","b","map","valueExpr","displayExpr","LookupSourceProvider","originalName","checkNameAvailability","_checkNameAvailability","url","$http","t0","nameAvailable","_x2","watchOriginalName","defaultDropDownOptions","stylingMode","applyValueMode","VUE_APP_API_HOSTNAME","process","DxAsyncRule","DxForm","DxLabel","DxRequiredRule","DxSimpleItem","DxStringLengthRule","DxPatternRule","DxTooltip","DxFileUploader","refPostCode","savedSuccessfully","DataSource","loadDisciplines","loadUpperAuthorities","loadConstituencies","orgNpoStatuses","Npo","Ipso","Cpp","Other","organisationalTemplates","orgActiveStatuses","active","disabled","activeStatus","lookup","LookupCodes","Region","searchEnabled","ExemptFromSurveying","AceArea","logoFile","logoUploadConfig","fileExtensions","validCharacters","files","authTokenTimeout","authToken","computeRef","fetchOrgDetails","clearOrgDetails","getLogo","getElementsByName","textTransform","_checkNameAvailabilityCall","_loadDisciplines","_loadUpperAuthorities","_loadConstituencies","unsavedChanges","dataField","fileName","test","_files","isValid","$statusMessage","addClass","append","headers","Authorization","getToken","_getToken","getAccessToken","addTooltips","_callee6","_context6","exemptFromSurveyingId","logoBlob","orgTemplatesListRefKey","organisationalTemplatesDataSource","noDataText","columns","cell","formatAvailableFromTo","numberOfSurveysUsingTemplate","onDeleteTemplateClicked","currentDeleteSurveyTemplateName","deleteSurveyTemplateFunction","surveyTemplateDeletePopupVisible","orgTemplatesListColDefs","dataType","visible","showInColumnChooser","caption","allowHiding","format","sortOrder","cellTemplate","cssClass","titleMessage","closePopup","deleteMessage","onDelete","entityName","titleName","DxDataGrid","DxPager","DxFilterRow","DxHeaderFilter","DxColumnFixing","DxExport","DxColumnChooser","DxRemoteOperations","DxPaging","DxSearchPanel","ConfirmDeletePopup","loadOrganisationalTemplates","pageSize","selector","desc","surveyTemplateToDelete","organisationId","deleteSurveyTemplate","_loadOrganisationalTemplates","totalCount","summary","groupCount","template","availableFrom","availableTo","fromDate","toDate","day","month","year","fromDateString","toLocaleDateString","toDateString","surveyTemplate","_deleteSurveyTemplateFunction","refresh","notifySuccess","finish","onAssignProviderRefClicked","dataGridRefreshKey","dataGridRef","organisationBoxOffices","onEditProviderRefClicked","onDeleteProviderRefClicked","onPopupClosed","isEditBO","boxOfficeProviderDetails","onAddEditProviderRefClicked","boxOfficeProvider","boxOfficeProviderDataSource","searchMode","searchExpr","placeholder","onOpened","onBOProviderDropDownOpened","deferRendering","providerOrgRef","providerKey","createModel","loadBoxOfficeProviders","initialBODetails","removeBOProviderRef","boxOfficeProviderId","grid","_onAddEditProviderRefClicked","BODets","validationGroup","validateAssignedProvider","deepCopyJson","objectEquals","addBOProviderRef","_onEditProviderRefClicked","_loadBoxOfficeProviders","searchOptions","currentlySelectedIds","configureLookupSearch","isManual","_x3","isEditBOMode","providerList","currentProvider","initialProvider","findIndex","hasDupes","DxTabPanel","OrganisationDetails","OrganisationTemplates","OrganisationBoxOfficeList","initialOrgDetailsObj","createOrganisation","updateOrganisaton","deleteOrganisation","preventNav","areUnsavedChanges","returnValue","cancel","_onSaveOrgClicked","brokenRules","_deleteOrgFunction","query","tabIndex","parseInt","beforeMount","$once","beforeRouteLeave","to","answer","confirm","organisationListRefKey","onDataGridToolbarPreparing","buttonHideWidth","onAddOrgClicked","viewOrganisation","headerFilter","nameTooltipVisible","toolbarItems","toolbarOptions","locateInMenu","unshift","eventDetails","canUserEdit","onSaveEventClicked","dupePopupVisible","deletePopupVisible","tabPanelRef","onDuplicateEventClicked","deleteEventFunction","formRefKey","locationDataSource","onInitialized","onLocationInitialized","isTicketed","onTicketingValueChanged","boxOfficeProvidersDataSource","disableBoxOfficeBoxes","validateBoxOffice","grantiemId","eventType","distributionType","subDisciplineId","dateSerializationFormat","displayFormat","max","endDate","dateOutOfRangeMessage","validateDateRange","min","startDate","isFunded","assignedOrgs","defaultNumberBoxOptions","showSpinButtons","minSearchLength","showDataBeforeSearch","searchPlaceholder","IsTicketed","EventType","DistributionType","subDiscipline","occurrences","totalTicketsAvailable","estAttendance","actAttendance","readOnly","IsFunded","onAssignOrgClicked","eventOrganisations","onEditEventOrgClicked","onPopupOpened","popupRefreshKey","orgLookupRef","orgsDataSource","editingEventOrg","inputAttrOrg","onOrgDropDownOpened","model","callback","$$v","$set","orgValidatorRef","knownAs","alternativeName","region","relTypeSelBoxRef","relTypesDataSource","inputAttrRelType","relationshipType","relTypeValidatorRef","subDiscSelBoxRef","onSubDiscValueChanged","subDiscDropDownRef","subDisciplineFormatter","inputAttr","subDisciplinesDataSource","subDiscColumns","selectedSubDiscKeys","onSubDiscDropdownSelectionChanged","DxDropDownBox","DxDropDownOptions","DxSelection","DxScrolling","currSubDisc","dropDownInstance","allDisciplines","subDisciplines","curDisc","disciplineName","disciplineId","selectedSubDisc","selectedRowsData","saveInitialSubDiscipline","byKey","getFromDataSource","val","DxLookup","DxSelectBox","DxValidator","SubDisciplineSelectBox","loadOrgs","_byKey","loadRelationshipTypes","orgInitalLoadComplete","dataGridInstance","orgValidatorInstance","relTypeValidatorInstance","relTypeSelBoxInstance","orgLookupInstance","initalOrganisationId","shouldAssignOrgByDefault","isAdd","initalOrganisationExists","go","resetValidators","reset","getInitialSubDiscipline","_loadOrgs","orgsFilter","activeEntityFilter","getRemoveCurrentOrgsFilter","setIntialOrganisation","_setIntialOrganisation","orgs","resp","addInitialEventOwnerOrg","org","addOrg","relationshipTypeId","eventOwnerRelationshipType","relationshipTypeName","_loadRelationshipTypes","eventOrgRelationshipType","_x4","_onEditEventOrgClicked","_this$eventDetails$ev","_this$eventDetails$ev2","editingOrg","subDisc","repaint","_x5","removeOrg","_onAddOrgClicked","_this$eventDetails$ev3","_this$eventDetails$ev4","subDisciplineName","_x6","AssignedOrganisationsTable","DxCustomRule","DxRadioGroup","loadLocations","fetchLocationDetails","subDiscGridRef","boxOfficeRefreshKey","todaysDate","isTicketedId","eventTicketingLookups","formData","formInstance","clearLocationDetails","_loadLocations","getDataSource","updateData","boxOfficeReferenceId","dateValue","validateSubDiscipline","showTickets","totalAttendance","DxGroupItem","totalTicketsNumBoxStep","estAttendanceStep","est","estimatedAttendance","act","knownAttendance","ticketingValueChanged","calcNumBoxStep","isAddSurveyDisabled","onAddSurveyClicked","surveyDataSource","viewSurvey","formatDate","createdAt","isDraft","isActive","onAddSurveyResponseClicked","DxToolbarItem","loadSurveys","surveyDetails","surveyToDelete","currentDeleteSurveyName","find","fetchSurveyDetails","clearSurveyDetails","createSurvey","_loadSurveys","date","getMonth","getDate","getHours","getMinutes","_onAddSurveyResponseClicked","surveyId","quickCode","_onAddSurveyClicked","confirmationMessage","onConfirm","confirmMessage","EventDetails","EventForecast","EventSurveysList","ConfirmPopup","initialEventDetailsObj","creatingDuplicatedEvent","showTabContent","isEventOwner","actingAsRelationshipTypeValue","tabPanelInstance","createEvent","updateEvent","deleteEvent","fetchEventDetails","clearEventDetails","fetchDuplicateEventName","setDuplicatingEvent","eventDets","validateAssignedOrgs","isEmpty","_deleteEventFunction","_onSaveEventClicked","orgsResult","eventId","occurencesAtLocation","handleDuplicatedEvent","_handleDuplicatedEvent","loadEvent","_loadEvent","handlePageLoad","_handlePageLoad","routeTo","editMode","duplicatingEvent","beforeRouteEnter","vm","beforeRouteUpdate","onSaveSurveyClicked","isNew","surveyHasResponses","deleteButtonClicked","isArchived","showPublishPopup","showQuickCode","currItem","onPreviousClicked","onNextClicked","surveyDetailsRef","_ref3","subtitle","_ref4","deleteSurveyFunction","deletePopUpClosed","publishPopupVisible","onCreateClicked","closePublishPopup","showLoader","assignedEventOwnerOrganisations","formRef","templateDataSource","onTemplateValueChanged","templateDisabled","intro","organisationDisplayName","displayNameRegex","disciplineDisplayName","getOrganisationsDataSource","inputAttrLogo","onOrgValueChanged","selectedOrgId","fileUploaderRef","onUploadFile","logoBase64","defaultLogoOptionsNames","default","defaultOrgOptions","fileUploaderInstance","_onUploadFile","file","fileToBase64","logoOrganisationId","getDefaultOrgOptionId","optionName","eventOwnersWithLogo","_onOrgValueChanged","selectedOrg","getLogoFromEndpoint","base64","size","split","pop","finally","defaultLookupOptions","SurveyLogoUpload","eventDataSource","loadEvents","orgDataSource","_byKey2","loadTemplates","fetchSurveyTemplateDetails","eventRef","initialSurveyDetailsObj","numberOfResponses","_onTemplateValueChanged","previousValue","optionalQuestions","optionalQuestionTemplateId","optionalTemplate","getOptionalQuestionsFromSchema","surveyTemplateId","elt","_loadTemplates","_x7","_loadEvents","_callee7","_context7","_x8","_callee8","_context8","_x9","questionDataSource","questionSelectionChanged","selectedRowKeys","templateSelectRef","isSelectionDisabled","inputAttrTemplate","templateValueChanged","calculateChoicesValue","getCheckboxMode","allowFiltering","checkboxMode","currentOptionalTemplate","isOrgSurveyTemplate","surveyTemplateDetails","updateSurvey","deleteSurvey","rowData","formattedRowData","questionType","questionChoices","join","loadTemplateQuestionsFromSchema","questionTheme","seq","choicesText","titleCase","sequence","templateSelectBoxRefreshKey","$forceUpdate","surveyTemplateName","createAsOrganisationTemplate","canSaveAsOrgTemplate","onCheckBoxValueChanged","orgTemplateFreshKey","orgSurveyTemplateName","orgSurveyTemplateDescription","questionsDataSource","DxCheckBox","DxTextBox","mandatoryQs","optionalQs","gettingSurvey","loadingList","array","newArray","mandQs","q","startsWith","parseSchemaToQuestionsTable","isMandatory","templateName","optionalNames","theme","_loop","qType","qId","checkboxText","responseMand","responseOpt","optionalQuestionTemplate","surveyUrl","downloadSurveyResponseExport","downloadQrCode","isSurveyActive","onStartUnattendedModeClicked","downloadOfflineTemplate","uploadTemplateClicked","unattendedPopupVisible","startUnattendedModeFunction","qTypes","dropdown","checkbox","radiogroup","matrixdropdown","number","exportSurveyTemplate","_exportSurveyTemplate","orgName","rows","parseQuestions","getRowsFromQuestions","dateFormat","dateUTC","generateExcel","properties","responses","curQ","inputType","optionsList","matrixCols","otherText","Text","noneText","sheetName","workbook","Workbook","worksheet","addWorksheet","row","addRow","addDataValidation","styleExcel","xlsx","writeBuffer","blob","Blob","fs","numCols","col","getColumn","font","getRow","alignment","wrapText","vertical","horizontal","col1","border","right","color","argb","bold","row3","hidden","row4","bottom","addConditionalFormatting","numberToLetters","formulae","fill","pattern","bgColor","rowsOptionsSplit","answersSheet","values","rowIndex","optionsSplit","qInputType","numRows","column","addSingleOptionValidation","addDateValidation","addNumberValidation","regex","setDefaultValue","colIndex","getCell","formula","dataValidation","allowBlank","showErrorMessage","operator","errorStyle","errorTitle","num","letters","Math","floor","downloadTemplate","_downloadTemplate","responseType","fileDownload","ContentDisposition","parameters","filename","QrcodeVue","_downloadQrCode","download","toDataURL","body","onEndUnattendedModeClicked","_unused","_downloadOfflineTemplate","_downloadSurveyResponseExport","tabTitle","clickPrevious","clickNext","tabSubtitle","parentEventId","SurveyDetails","SurveyOptionalQuestions","SurveySummary","PublishedSurveyDetailsBanner","SurveyHeader","isLoading","isSurveyProcessing","isEventProcessing","isOrgProcessing","validateSurveyDetails","_validateSurveyDetails","_onCreateClicked","_onNextClicked","createSubSet","v","picked","activeFrom","activeTo","schemaReadOnly","_cancel","_deleteSurveyFunction","_onSaveSurveyClicked","onAddEventClicked","onUploadEventsClicked","orgLookupKey","quarterlyAttestationsRef","selectedFilterQuarterNum","selectedFilterYear","onQuarterBoxClicked","showEventsSchedule","eventScheduleRef","onEventsScheduleFiltersChanged","attAccordionRef","attDataSource","canCollapse","currentAttestation","moveMobileCarousel","quarterNum","isConfirmed","isCurrentQuarter","isInFuture","numEventOwnerEvents","numPartnerEvents","onQuarterConfirmButtonClicked","onCarouselWheel","moveCarouselLeft","getIsSelectedQuarter","onQuarterBoxFocused","moveCarouselRight","confirmQuarterNum","confirmQuarterYear","confirmAttestation","showFYConfirmationVersion","checkBoxes","textSpan","domProps","isConfirmEnabled","allBoxesChecked","every","resetCheckBoxValues","boxCssClass","onBoxClicked","numEventsEventOwner","numEventsPartner","showConfirmButton","onConfirmClicked","onFocus","Number","showShadow","canBeConfirmed","getBoxCssClass","getShadeCssClass","confirmButtonRef","__default__","DxAccordion","ConfirmAttestationPopup","QuarterlyAttestationBox","currentIndex","loadAttestations","attestationsLoaded","attAccordionInstance","showAttestations","transformStyle","newVal","scrollToAttestation","_loadAttestations","parsedQuarters","parseAttestations","attestationsResponse","currDateTime","attestations","quarters","fyQuarter","getFyQuarterFromDate","yearInt","qStartDate","getQuarterStartDate","quarter","setAttestation","attestationData","attestationIndex","newIndex","numQuarters","direction","deltaY","_confirmAttestation","post","quarterNumber","eventsDataSource","yearsDataSource","selectedYear","onYearOrQuarterChanged","quartersDataSource","selectedQuarterNum","owningOrganisation","viewEvent","filterLoaded","yearsSplit","setFilterValues","getFilterData","_getFilterData","currentQuarter","currentYear","years","getCurrentOrFirstQuarter","getCurrentOrFirstYear","yearList","currentYearFormatted","currentYearExists","some","quarterList","currentQuarterValue","QuarterlyAttestations","EventsSchedule","eventsLoaded","holdCurrYear","currentUser","fetchOrgsOnMount","_fetchOrgsOnMount","orgDS","dsItems","locationDetails","onSaveLocationClicked","inputAttrCountry","countries","countryDataSource","disableAddressInput","validateAddressField","deleteLocationFunction","initialLocationDetailsObj","loadCountries","selectedCountryValue","onCountryValueChanged","ukCountryLookupValues","createLocation","updateLocation","deleteLocation","_loadCountries","valueId","countryId","Country","_onSaveLocationClicked","_deleteLocationFunction","addressLine1","addressLine2","city","isUkCountry","locationListRefKey","onAddLocationClicked","viewLocation","filterOnlineVenue","userDetails","fullName","onSaveUserClicked","isCurrentUser","isEmailDisabled","email","userRoles","onRoleChanged","orgDropDownRef","accessLocations","accessLocationsToString","isOrgDisabled","handleOrgAccessKeydown","orgColumns","selectedOrgKeys","onOrgDropdownSelectionChanged","checkBoxMode","formValidationGroup","validateOrganisations","deleteUserFunction","DxEmailRule","initialUserDetailsObj","userActiveState","Active","Disabled","roleDataSource","selectedActiveState","orgDropDownInstance","createUser","updateUser","deleteUser","fetchUserDetails","clearUserDetails","_onSaveUserClicked","json","filterInactiveEntity","locationStrings","screenWidth","dropDownWidth","componentContainer","orgContainerRef","clientWidth","_deleteUserFunction","userListRefKey","viewUser","onAddUserClicked","getRoleDisplay","appUserRole","activeState","sortIndex","organisationRefKey","selectedOrganisation","orgLookupValidatorRef","downloadTemplateFile","onUploadSuccessful","onUploadStarted","onUploadError","isImportSuccess","isImportFailure","failureMessages","msg","uploadsListRefKey","uploadsDataSource","messages","status","boxOfficeUploadListColDefs","DxValidationGroup","loadUploads","hasProcessing","successMessages","boxOfficeTimeout","templateFilename","refresherRunning","_loadUploads","organisationData","cancelButton","_clickAction","clearUploaderState","refreshUploads","_refreshUploads","orgLookupValidatorInstance","_downloadTemplateFile","uploadsGrid","loading","successMessage","failureMessage","uploadResponse","updateActiveTime","filtersList","loadPowerBI","selectedPeriod","pbiFullscreen","models","pbi","powerbi","Service","hpmFactory","wpmpFactory","routerFactory","showFilter","insightsFilter","pageTitle","selectedInsightsFilter","getFiltersList","_getFiltersList","_loadPowerBI","reportName","embedDetails","accessToken","embedUrl","embedInsightId","embedContainer","config","pbiComponent","powerBIEmbedDetails","token","insightId","getElementById","tokenType","TokenType","Embed","permissions","Permissions","All","settings","filterPaneEnabled","navContentPaneEnabled","hideErrors","layoutType","LayoutType","Custom","customLayout","displayOption","DisplayOption","FitToPage","bootstrap","embed","setComponentTitle","getCurrentReport","isDefault","_powerBIEmbedDetails","insightName","insight","fullscreen","pbiEdit","switchValue","ariaPressed","switchMode","beforedestroy","report","pin","queryParams","URLSearchParams","search","ApiAuthorizationRoutes","defaultLayout","LoginActions","LoginFailed","LoginCallback","Profile","Register","LogoutActions","Logout","LogOutCallback","LogoutCallback","LoggedOut","navDrawerOpened","onModuleChanged","onModuleFocused","closeDrawer","currentModule","viewType","viewTypes","guides","table","trainingSessions","sessionTitle","sessionDescription","duration","bookingLink","recordingLink","transcriptFilename","trainingModuleDefinitons","navSectionTitle","sections","introText","tType","visibleTo","subSections","videoLink","sessions","_getTrainingSessions","inPast","today","trainingModule","section","canUserSeeOption","mod","downloadClicked","_downloadClicked","success","getRole","trainingTable","isDateInPast","openLinkInNewTab","downloadTranscript","trainingTableColDefs","_downloadTranscript","trainingModules","navSection","onSideNavOptionClicked","TrainingNavMenu","TrainingModule","TrainingTable","trainingModuleDefinitions","trainingSideNavBarViewType","drawerMenuButtonOptions","each","onDownloadTemplateFile","isUploading","showErrorBreakdown","errorsList","errorCount","groupedErrors","fixes","fix","errors","description","errorSummaryGridColDefs","bulkUploadErrors","RequiredFieldEmpty","CharacterLimitExceeded","AlreadyExists","NotFound","InvalidPostcode","DateOutOfRange","DateFormat","IntegerFormat","MultipleVenues","DxMasterDetail","gridRefKey","errorsDataSource","groupErrors","columnName","getErrorTypeAsText","getErrorDescription","getFixesForErrorType","errorTypes","foundErrorType","ErrorSummaryGrid","_onDownloadTemplateFile","Chunks","ensureValidIntParam","paramName","optional","paramValue","intValue","isNaN","0","Vue","use","Router","router","routes","Home","beforeEnter","route","surveyLayout","SurveyResponse","LocationsList","LocationDetail","OrganisationsList","OrganisationOverview","EventsList","EventBulkUpload","EventOverview","TermsOfUse","_layout","staticLayout","PrivacyPolicy","_layout2","CookieNotice","UsersList","UserDetails","SurveyOverview","BoxOffice","SurveyData","Insights","InsightsPublic","HelpCentre","_toConsumableArray","beforeEach","touAccepted","redirect","fullPath","onError","handleRouterError","_getTermsAcceptanceStatus","state","auth","termsAgreedStatus","dispatch","namespaced","actions","setTermsAcceptedStatus","commit","isAccepted","setUser","mutations","getters","dismissInterval","info","warning","notifyInfo","notifyWarning","processingStatus","UNSET","PROCESSING","READY","setQuestionnaire","setStatus","setSurveyLogo","logo","_saveQuestionnaire","payload","put","_getQuestionnaire","_createFromQuickCode","_getSurveyLogo","clear","setEventDetails","eventOrg","idx","_create","_update","delete","_delete2","_delete","_fetchEventDetails","_fetchDuplicateEventName","_ref5","incrementEventSuffix","_clear","_ref6","parts","setLocationDetails","locationId","_fetchLocationDetails","setOrgDetails","setOrgLogo","orgBORef","_fetchOrgDetails","getOrgLogo","_getOrgLogo","setuserDetails","userId","_fetchUserDetails","setSurveyDetails","setSurveyTemplateDetails","FormData","method","_fetchSurveyDetails","_fetchSurveyTemplateDetails","_deleteSurveyTemplate","_x10","_ref7","Vuex","createStore","Store","authModule","notifyModule","surveyResponseModule","eventsModule","locations","locationsModule","organisations","organisationsModule","users","usersModule","surveys","surveysModule","AuthorizeService","_classCallCheck","_defineProperty","_createClass","_isAuthenticated","_getUser","_user","profile","ensureUserManagerInitialized","userManager","_getAccessToken","access_token","_signIn","silentUser","popUpUser","signinSilent","createArguments","updateState","log","_popUpDisabled","signinPopup","t1","signinRedirect","t2","signIn","_completeSignIn","signinCallback","completeSignIn","_signOut","signoutPopup","signoutRedirect","signOut","_completeSignOut","signoutCallback","completeSignOut","notifySubscribers","_callbacks","subscription","_nextSubscriptionId","subscriptionId","subscriptionIndex","found","useReplaceToNavigate","AuthenticationResultStatus","Fail","Success","Redirect","_ensureUserManagerInitialized","_callee9","_context9","fetch","ApiAuthorizationClientConfigurationUrl","ok","ApplicationName","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","prefix","UserManager","addUserSignedOut","removeUser","cssClasses","screen","Small","ready","authenticated","redirectUrl","authenticationChanged","populateAuthenticationState","returnUrl","protocol","host","pathname","hash","QueryParameterNames","ReturnUrl","encodeURIComponent","_populateAuthenticationState","_authenticationChanged","Navigate","Breakpoints","XSmall","Medium","Large","XLarge","handlers","xSmallMedia","matchMedia","smallMedia","mediumMedia","largeMedia","xLargeMedia","media","addListener","handler","sizes","matches","getScreenSizeInfo","screenSizes","cl","$appInfo","screenSizeChanged","AuthorizeRoute","defineAbility","VueMeta","abilitiesPlugin","ability","productionTip","errorHandler","handleVueError","appInfo","axiosStatic","vuexStore","editorStylingMode","h","App","$mount","LOGOUT","ERROR","NOTIFY","ErrorAction","NODE_ENV","DEBUG","getErrorMessage","parseError","handleHttpError","ErrorTypes","ThirdPartyTypes","BoxOfficeProvider","71","72","BulkUpload","axios","baseURL","interceptors","hostName","Message","DefaultLoginRedirectPath","ApiAuthorizationPrefix","IdentityRegisterPath","IdentityManagePath","toLowerCase","word","y","constructor","_typeof","sortSelector","sortDesc","customFilter","searchOperation","searchValue","onlineStatus","getQuarterFromMonth","_getLogoFromEndpoint","uri","image","btoa","Uint8Array","reduce","byte","fromCharCode","getFileNameFromContentDisposition","File","contentDisposition","filenameRegex","exec","reader","FileReader","onloadend","readAsDataURL","client","updateRole","saveDraft","seeOwningOrganisation","escalateForSecondaryReview","submitPrimaryReview","submitSecondaryReview"],"mappings":"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","file":"js/app.18b56893.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"error\":\"error\"}[chunkId]||chunkId) + \".\" + {\"chunk-2d0c0a56\":\"199c32af\",\"chunk-486ffd51\":\"d13fae86\",\"error\":\"809a979e\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-486ffd51\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"error\":\"error\"}[chunkId]||chunkId) + \".\" + {\"chunk-2d0c0a56\":\"31d6cfe0\",\"chunk-486ffd51\":\"c1fc85e1\",\"error\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-summary.vue?vue&type=style&index=0&id=07af3821&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-summary-grid.vue?vue&type=style&index=0&id=8e409284&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-bulk-upload.vue?vue&type=style&index=0&id=24238656&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-nav-menu.vue?vue&type=style&index=0&id=7b2853f8&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./assigned-organisations-table.vue?vue&type=style&index=0&id=69b6c8ed&prod&lang=scss&scoped=true\"","import { isNotEmpty } from \"../common/helperFunctions\";\n\nexport const serializeLoadOptions = (loadOptions, filter) => {\n  let result = {};\n  loadOptions = loadOptions || {}\n  filter = filter || Object.keys(loadOptions)\n  filter.forEach(function(i) {\n    if(i in loadOptions && isNotEmpty(loadOptions[i])) {\n      result[i]=JSON.stringify(loadOptions[i]);\n    }\n  })\n  return result;\n}","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./location-details.vue?vue&type=style&index=0&id=050d3628&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-header.vue?vue&type=style&index=0&id=4bda8614&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-module.vue?vue&type=style&index=0&id=5c5c4f6a&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-overview.vue?vue&type=style&index=0&id=623e6836&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./box-office-data.vue?vue&type=style&index=0&id=4ba36b93&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-data.vue?vue&type=style&index=0&id=129679c3&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./link-widgets.vue?vue&type=style&index=0&id=12cada3b&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./privacy-policy.vue?vue&type=style&index=0&id=2b67df54&prod&scoped=true&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"side-nav-outer-toolbar\"},[_c('header-toolbar',{staticClass:\"layout-header\",attrs:{\"menu-toggle-enabled\":_vm.headerMenuTogglerEnabled,\"toggle-menu-func\":_vm.toggleMenu,\"title\":_vm.title}}),_c('dx-drawer',{staticClass:\"layout-body\",attrs:{\"position\":\"before\",\"template\":\"menu\",\"opened\":_vm.menuOpened,\"opened-state-mode\":_vm.drawerOptions.menuMode,\"reveal-mode\":_vm.drawerOptions.menuRevealMode,\"min-size\":_vm.drawerOptions.minMenuSize,\"shading\":_vm.drawerOptions.shaderEnabled,\"hide-on-outside-click\":_vm.drawerOptions.hideOnOutsideClick},on:{\"update:opened\":function($event){_vm.menuOpened=$event}},scopedSlots:_vm._u([{key:\"menu\",fn:function(_){return _c('side-nav-menu',{staticClass:\"dx-swatch-additional\",attrs:{\"compact-mode\":!_vm.menuOpened,\"selected-item\":_vm.$route.path,\"items\":_vm.menuItems},on:{\"click\":_vm.handleSideBarClick,\"openMenu\":_vm.openMenu,\"closeMenu\":_vm.closeMenu}})}}])},[_c('dx-scroll-view',{ref:_vm.scrollViewRef,staticClass:\"main-content with-footer\"},[_c('div',{staticClass:\"footer-fix\"},[_vm._t(\"default\"),_c('TheFooter',{on:{\"scrollToTop\":_vm.scrollToTop,\"clicked\":function($event){_vm.showModal = true}}})],2)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import subjects from \"./config/subjects\";\n\nexport default [\n  {\n    text: \"Home\",\n    path: \"/\",\n    icon: \"fas fa-home\",\n    subject: subjects.home.subject,\n  },\n  {\n    text: \"Events & Surveys\",\n    path: \"/events-list\",\n    icon: \"fas fa-calendar-alt\",\n    subject: subjects.event.subject,\n  },\n  {\n    text: \"Insights\",\n    path: \"/insights\",\n    icon: \"fas fa-chart-bar\",\n    subject: subjects.insights.subject,\n  },\n  {\n    text: \"Ticketing Data\",\n    path: \"/box-office-data\",\n    icon: \"fas fa-ticket-alt\",\n    subject: subjects.boxOffice.subject,\n  },\n  {\n    text: \"Organisations\",\n    path: \"/organisations-list\",\n    icon: \"fas fa-project-diagram\",\n    subject: subjects.organisation.subject,\n  },\n  {\n    text: \"Locations\",\n    path: \"/locations-list\",\n    icon: \"fas fa-location-arrow\",\n    subject: subjects.location.subject,\n  },\n  {\n    text: \"Users\",\n    path: \"/users-list\",\n    icon: \"fas fa-user\",\n    subject: subjects.user.subject,\n  },\n  {\n    text: \"Training\",\n    path: \"/training\",\n    icon: \"fas fa-question-circle\",\n    subject: subjects.home.subject,\n  },\n];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('header',{staticClass:\"header-component\"},[_c('div',{key:_vm.refreshKey},[_c('dx-toolbar',{staticClass:\"header-toolbar\",scopedSlots:_vm._u([{key:\"menuUserItem\",fn:function(_){return (_vm.isAuthenticated)?_c('dx-button',{staticClass:\"logout-button\",attrs:{\"text\":\"Logout\",\"icon\":\"runner\",\"menu-mode\":\"context\",\"on-click\":_vm.onLogoutClick}}):_vm._e()}}],null,true)},[(!_vm.isSurvey)?_c('dx-item',{attrs:{\"visible\":_vm.menuToggleEnabled,\"location\":\"before\",\"css-class\":\"menu-button\",\"tabindex\":\"0\"},scopedSlots:_vm._u([{key:\"default\",fn:function(_){return _c('dx-button',{attrs:{\"icon\":\"menu\",\"styling-mode\":\"text\"},on:{\"click\":_vm.toggleMenuFunc}})}}],null,false,3484013288)}):_vm._e(),_c('dx-item',{attrs:{\"location\":\"before\",\"css-class\":_vm.surveyLogo ? 'toolbar-logo-survey' : 'toolbar-logo'},scopedSlots:_vm._u([{key:\"default\",fn:function(_){return _c('div',{},[(!_vm.isSurvey)?_c('router-link',{attrs:{\"to\":\"/\"}},[(_vm.surveyLogo)?_c('img',{attrs:{\"src\":_vm.surveyLogo,\"alt\":\"logo\"}}):_c('img',{staticClass:\"ace-logo\",attrs:{\"src\":require(\"../assets/illuminate_logo.svg\"),\"alt\":\"Illuminate\"}})]):_c('div',[(_vm.surveyLogo)?_c('img',{attrs:{\"src\":_vm.surveyLogo,\"alt\":\"logo\"}}):_c('img',{staticClass:\"ace-logo\",attrs:{\"src\":require(\"../assets/illuminate_logo.svg\"),\"alt\":\"Illuminate\"}})])],1)}}])}),_c('dx-item',{attrs:{\"location\":\"after\"},scopedSlots:_vm._u([{key:\"default\",fn:function(_){return _c('div',{},[(_vm.isUnattendedMode && _vm.isSurvey)?_c('dx-button',{staticClass:\"refresh-button\",attrs:{\"text\":\"Restart survey\",\"icon\":\"fas fa-redo-alt\",\"on-click\":_vm.onRestartSurveyClicked}}):_vm._e()],1)}}])}),(_vm.isAuthenticated)?_c('dx-item',{attrs:{\"location\":\"after\",\"locate-in-menu\":_vm.userPanelMenuMode,\"menu-item-template\":\"menuUserItem\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('div',{attrs:{\"tabindex\":\"0\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onUserButtonEnter.apply(null, arguments)}}},[_c('dx-button',{ref:\"userButton\",staticClass:\"user-button authorization\",attrs:{\"height\":\"100%\",\"styling-mode\":\"text\"}},[_c('user-panel',{attrs:{\"menu-items\":_vm.userMenuItems,\"menu-mode\":\"context\"}})],1)],1)]},proxy:true}],null,false,636792352)}):_vm._e()],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"user-panel\"},[_c('div',{staticClass:\"user-info\"},[_c('div',{staticClass:\"image-container\"},[_c('div',{staticClass:\"user-image\"},[_vm._v(_vm._s(_vm.userInitials))])]),(_vm.user === null || _vm.user === undefined)?_c('div'):_c('div',{staticClass:\"user-name\"},[_vm._v(\"\\n      \"+_vm._s(`${_vm.user.firstName} ${_vm.user.surname}`)+\"\\n    \")])]),(_vm.menuMode === 'context')?_c('dx-context-menu',{attrs:{\"target\":\".user-button\",\"items\":_vm.menuItems,\"width\":170,\"position\":_vm.menuPositionConfig,\"show-event\":\"dxclick\",\"css-class\":\"user-menu\"},on:{\"item-click\":_vm.handleItemClick}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"user-panel\">\n    <div class=\"user-info\">\n      <div class=\"image-container\">\n        <div class=\"user-image\">{{ userInitials }}</div>\n      </div>\n      <div v-if=\"user === null || user === undefined\"></div>\n      <div\n        v-else\n        class=\"user-name\"\n      >\n        {{ `${user.firstName} ${user.surname}` }}\n      </div>\n    </div>\n\n    <dx-context-menu\n      v-if=\"menuMode === 'context'\"\n      target=\".user-button\"\n      :items=\"menuItems\"\n      :width=\"170\"\n      :position=\"menuPositionConfig\"\n      show-event=\"dxclick\"\n      css-class=\"user-menu\"\n      @item-click=\"handleItemClick\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapState, mapActions} from \"vuex\";\nimport DxContextMenu from \"devextreme-vue/context-menu\";\nimport DxList from \"devextreme-vue/list\";\n\nexport default {\n  props: {\n    menuMode: String,\n    menuItems: Array,\n  },\n  data() {\n    return {\n      menuPositionConfig: {\n        my: \"top center\",\n        at: \"bottom center\",\n      },\n    };\n  },\n  computed: {\n    ...mapState(\"auth\", [\"user\"]),\n    userInitials() {\n      if (this.user) {\n        return `${this.getCapitalizedInitial(\n          this.user.firstName,\n        )}${this.getCapitalizedInitial(this.user.surname)}`;\n      }\n      return null;\n    },\n  },\n  methods: {\n    ...mapActions(\"auth\", [\"getUser\"]),\n    getCapitalizedInitial(text) {\n      if (text && text.length > 0) {\n        return text[0].toUpperCase();\n      }\n\n      return null;\n    },\n    handleItemClick(e) {\n      if (e.itemData.onClick) {\n        e.itemData.onClick();\n      }\n    },\n  },\n  created() {\n    this.getUser();\n  },\n  components: {\n    DxContextMenu,\n    DxList,\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../themes/generated/variables.base.scss\";\n@import \"../themes/custom-variables.scss\";\n\n.user-info {\n  display: flex;\n  align-items: center;\n\n  .dx-toolbar-menu-section & {\n    padding: 10px 6px;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n  }\n\n  .image-container {\n    overflow: hidden;\n    border-radius: 50%;\n    height: 32px;\n    width: 32px;\n    background-color: #3d287c;\n\n    .user-image {\n      width: 100%;\n      height: 100%;\n      /*background: url(\"https://js.devexpress.com/Demos/WidgetsGallery/JSDemos/images/employees/06.png\")\n        no-repeat #fff;*/\n      background-size: cover;\n      text-align: center;\n      font-size: $font-size-component;\n      color: $white;\n      line-height: 32px;\n    }\n  }\n\n  .user-name {\n    font-size: $font-size-body;\n    color: $base-text-color;\n    margin: 0 9px;\n  }\n}\n\n.user-panel {\n  .dx-list-item .dx-icon {\n    vertical-align: middle;\n    color: $base-text-color;\n    margin-right: 16px;\n  }\n  .dx-rtl .dx-list-item .dx-icon {\n    margin-right: 0;\n    margin-left: 16px;\n  }\n}\n\n.dx-context-menu.user-menu.dx-menu-base {\n  &.dx-rtl {\n    .dx-submenu .dx-menu-items-container .dx-icon {\n      margin-left: 16px;\n    }\n  }\n  .dx-submenu .dx-menu-items-container .dx-icon {\n    margin-right: 16px;\n  }\n  // May need when adding more items to user panel\n  // .dx-menu-item .dx-menu-item-content {\n  //   padding: 12px 15px 4px;\n  // }\n}\n\n.dx-theme-generic .user-menu .dx-menu-item-content .dx-menu-item-text {\n  padding-left: 4px;\n  padding-right: 4px;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user-panel.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user-panel.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./user-panel.vue?vue&type=template&id=405f6c12&scoped=true\"\nimport script from \"./user-panel.vue?vue&type=script&lang=js\"\nexport * from \"./user-panel.vue?vue&type=script&lang=js\"\nimport style0 from \"./user-panel.vue?vue&type=style&index=0&id=405f6c12&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"405f6c12\",\n  null\n  \n)\n\nexport default component.exports","/**\n * Sets unattended mode status = true for a given survey.\n * @param {string} quickcode - The quickcode of the survey.\n * @returns {void}\n */\nexport function setUnattendedModeForSurvey(quickcode){\n    sessionStorage.setItem(`${quickcode} - unattendedMode`, true);\n}\n\n/**\n * Retrieves the unattended mode status for a survey.\n * @param {string} quickcode - The quickcode of the survey.\n * @returns {boolean} - The unattended mode status for the survey.\n */\nexport function getUnattendedModeStatusForSurvey(quickcode){\n    const unattendedMode = sessionStorage.getItem(`${quickcode} - unattendedMode`);\n    return unattendedMode === \"true\";\n}\n\n/**\n * Resets the unattended mode status for a survey.\n * @param {string} quickcode - The quickcode of the survey.\n * @returns {void}\n */\nexport function resetUnattendedModeForSurvey(quickcode){\n    sessionStorage.removeItem(`${quickcode} - unattendedMode`);\n}","<template>\n  <header class=\"header-component\">\n    <div :key=\"refreshKey\">\n      <dx-toolbar class=\"header-toolbar\">\n        <dx-item\n          v-if=\"!isSurvey\"\n          :visible=\"menuToggleEnabled\"\n          location=\"before\"\n          css-class=\"menu-button\"\n          tabindex=\"0\"\n        >\n          <!-- eslint-disable vue/no-unused-vars vue/no-parsing-error -->\n          <dx-button\n            icon=\"menu\"\n            styling-mode=\"text\"\n            @click=\"toggleMenuFunc\"\n            slot-scope=\"_\"\n          />\n        </dx-item>\n\n        <dx-item\n          location=\"before\"\n          :css-class=\"surveyLogo ? 'toolbar-logo-survey' : 'toolbar-logo'\"\n        >\n          <div slot-scope=\"_\">\n            <router-link\n              to=\"/\"\n              v-if=\"!isSurvey\"\n            >\n              <img\n                :src=\"surveyLogo\"\n                alt=\"logo\"\n                v-if=\"surveyLogo\"\n              />\n              <img\n                v-else\n                class=\"ace-logo\"\n                src=\"../assets/illuminate_logo.svg\"\n                alt=\"Illuminate\"\n              />\n            </router-link>\n            <div v-else>\n              <img\n                :src=\"surveyLogo\"\n                alt=\"logo\"\n                v-if=\"surveyLogo\"\n              />\n              <img\n                v-else\n                class=\"ace-logo\"\n                src=\"../assets/illuminate_logo.svg\"\n                alt=\"Illuminate\"\n              />\n            </div>\n          </div>\n        </dx-item>\n\n        <dx-item location=\"after\">\n          <div slot-scope=\"_\">\n            <dx-button\n              v-if=\"isUnattendedMode && isSurvey\"\n              class=\"refresh-button\"\n              text=\"Restart survey\"\n              icon=\"fas fa-redo-alt\"\n              :on-click=\"onRestartSurveyClicked\"\n            />\n          </div>\n        </dx-item>\n\n        <dx-item\n          v-if=\"isAuthenticated\"\n          location=\"after\"\n          :locate-in-menu=\"userPanelMenuMode\"\n          menu-item-template=\"menuUserItem\"\n        >\n          <template v-slot:default>\n            <div\n              tabindex=\"0\"\n              @keydown.enter=\"onUserButtonEnter\"\n            >\n              <dx-button\n                class=\"user-button authorization\"\n                height=\"100%\"\n                ref=\"userButton\"\n                styling-mode=\"text\"\n              >\n                <user-panel\n                  :menu-items=\"userMenuItems\"\n                  menu-mode=\"context\"\n                />\n              </dx-button>\n            </div>\n          </template>\n        </dx-item>\n        <dx-button\n          v-if=\"isAuthenticated\"\n          class=\"logout-button\"\n          text=\"Logout\"\n          icon=\"runner\"\n          menu-mode=\"context\"\n          slot-scope=\"_\"\n          slot=\"menuUserItem\"\n          :on-click=\"onLogoutClick\"\n        />\n      </dx-toolbar>\n    </div>\n  </header>\n</template>\n\n<script>\nimport DxButton from \"devextreme-vue/button\";\nimport DxToolbar, {DxItem} from \"devextreme-vue/toolbar\";\nimport UserPanel from \"./user-panel\";\nimport {ApplicationPaths} from \"./api-authorization/ApiAuthorizationConstants\";\nimport authService from \"./api-authorization/AuthorizeService\";\nimport {mapState} from \"vuex\";\nimport {getUnattendedModeStatusForSurvey} from \"@/common/unattendedModeService\";\n\nexport default {\n  props: {\n    menuToggleEnabled: Boolean,\n    title: String,\n    toggleMenuFunc: Function,\n    logOutFunc: Function,\n    isSurvey: Boolean,\n  },\n  data() {\n    return {\n      refreshKey: 0,\n      window: {\n        width: 0,\n        height: 0,\n      },\n      isAuthenticated: false,\n      isUnattendedMode: false,\n      userName: null,\n      loginPath: ApplicationPaths.Login,\n      userMenuItems: [\n        {\n          text: \"Logout\",\n          icon: \"runner\",\n          onClick: this.onLogoutClick,\n        },\n      ],\n    };\n  },\n  mounted() {\n    this._subscription = authService.subscribe(() => this.populateState());\n    this.populateState();\n    this.isUnattendedMode = getUnattendedModeStatusForSurvey(\n      this.$route.params.quickcode,\n    );\n  },\n  created() {\n    window.addEventListener(\"resize\", this.handleResize);\n    this.handleResize();\n  },\n  beforeDestroy() {\n    authService.unsubscribe(this._subscription);\n    window.removeEventListener(\"resize\", this.handleResize);\n  },\n  methods: {\n    handleResize() {\n      this.window.width = window.innerWidth;\n      this.window.height = window.innerHeight;\n      this.refreshKey++;\n    },\n    onLogoutClick() {\n      this.$router.push({path: `${ApplicationPaths.LogOut}`, replace: true});\n    },\n    onRestartSurveyClicked() {\n      window.location.reload();\n    },\n    async populateState() {\n      const [isAuthenticated, user] = await Promise.all([\n        authService.isAuthenticated(),\n        authService.getUser(),\n      ]);\n      this.isAuthenticated = isAuthenticated;\n      this.userName = user && user.name;\n      this.refreshKey++;\n    },\n    onUserButtonEnter() {\n      this.$refs.userButton.$el.click();\n    },\n  },\n  computed: {\n    ...mapState(\"surveyResponse\", [\"surveyLogo\"]),\n    userPanelMenuMode() {\n      return this.window.width < 500 ? \"always\" : \"never\";\n    },\n  },\n  components: {\n    DxButton,\n    DxToolbar,\n    DxItem,\n    UserPanel,\n  },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"../themes/custom-variables.scss\";\n\n.dx-toolbar.header-toolbar .dx-toolbar-items-container .dx-toolbar-after {\n  padding: 0 40px;\n\n  .screen-x-small & {\n    padding: 0 20px;\n  }\n}\n\n.dx-toolbar .dx-toolbar-label {\n  font-size: $font-size-heading !important;\n  font-weight: normal;\n  width: fit-content;\n}\n\n.dx-toolbar .dx-toolbar-item.dx-toolbar-button.menu-button {\n  width: $side-panel-min-width;\n  text-align: center;\n  padding: 0;\n\n  .dx-button.dx-state-focused {\n    border: 1px solid $black;\n  }\n}\n\n.header-title .dx-item-content {\n  padding: 0;\n  margin: 0;\n}\n\n.logout-button {\n  background: white;\n  color: black;\n  .dx-button-content {\n    display: flex;\n  }\n}\n\n@media (max-width: 345px) {\n  .ace-logo {\n    width: 55px !important;\n    height: 41.64px;\n    object-fit: cover;\n    object-position: 0px 0px;\n  }\n}\n\n@media (min-width: 576px) {\n  .menu-button {\n    display: none !important;\n  }\n}\n\n.dx-theme-generic {\n  .dx-toolbar {\n    padding: 10px 0;\n  }\n\n  .user-button > .dx-button-content {\n    padding: 3px;\n  }\n}\n\n.refresh-button {\n  .dx-icon {\n    font-size: 14px !important;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header-toolbar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header-toolbar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./header-toolbar.vue?vue&type=template&id=704a489a\"\nimport script from \"./header-toolbar.vue?vue&type=script&lang=js\"\nexport * from \"./header-toolbar.vue?vue&type=script&lang=js\"\nimport style0 from \"./header-toolbar.vue?vue&type=style&index=0&id=704a489a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"side-navigation-menu\",on:{\"click\":_vm.forwardClick,\"mouseenter\":_vm.openTree,\"mouseleave\":_vm.closeTree}},[_vm._t(\"default\"),_c('div',{staticClass:\"menu-container\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.openTree.apply(null, arguments)}}},[_c('dx-tree-view',{ref:_vm.treeViewRef,attrs:{\"expand-event\":\"click\",\"width\":\"100%\",\"selection-mode\":\"single\",\"key-expr\":\"path\",\"select-nodes-recursive\":true,\"select-by-click\":true,\"items\":_vm.items},on:{\"initialized\":_vm.handleMenuInitialized,\"item-click\":_vm.handleItemClick,\"selection-changed\":_vm.handleSelectionChange,\"content-ready\":_vm.handleSelectionChange}})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div\n    class=\"side-navigation-menu\"\n    @click=\"forwardClick\"\n    @mouseenter=\"openTree\"\n    @mouseleave=\"closeTree\"\n  >\n    <slot />\n    <div\n      class=\"menu-container\"\n      @keydown.enter=\"openTree\"\n    >\n      <dx-tree-view\n        expand-event=\"click\"\n        width=\"100%\"\n        selection-mode=\"single\"\n        key-expr=\"path\"\n        :select-nodes-recursive=\"true\"\n        :select-by-click=\"true\"\n        :items=\"items\"\n        :ref=\"treeViewRef\"\n        @initialized=\"handleMenuInitialized\"\n        @item-click=\"handleItemClick\"\n        @selection-changed=\"handleSelectionChange\"\n        @content-ready=\"handleSelectionChange\"\n      />\n    </div>\n  </div>\n</template>\n\n<script>\nimport DxTreeView from \"devextreme-vue/ui/tree-view\";\n\nconst treeViewRef = \"treeViewRef\";\n\nexport default {\n  props: {\n    items: Array,\n    selectedItem: String,\n    compactMode: Boolean,\n  },\n  data() {\n    return {\n      treeViewRef,\n    };\n  },\n  methods: {\n    forwardClick(...args) {\n      this.$emit(\"click\", args);\n    },\n\n    openTree(args) {\n      this.$emit(\"openMenu\", args);\n    },\n\n    closeTree(args) {\n      this.$emit(\"closeMenu\", args);\n    },\n\n    handleMenuInitialized(event) {\n      event.component.option(\"deferRendering\", false);\n    },\n\n    handleItemClick(e) {\n      if (!e.itemData.path || this.compactMode) {\n        return;\n      }\n\n      if (e.itemData.path === this.$route.path && !this.compactMode) {\n        return;\n      }\n\n      this.$router.push(e.itemData.path);\n\n      const pointerEvent = e.event;\n      pointerEvent.stopPropagation();\n    },\n\n    handleSelectionChange(e) {\n      this.updateSelection();\n      const nodeClass = \"dx-treeview-node\";\n      const selectedClass = \"dx-state-selected\";\n      const leafNodeClass = \"dx-treeview-node-is-leaf\";\n      const element = e.element;\n\n      const rootNodes = element.querySelectorAll(\n        `.${nodeClass}:not(.${leafNodeClass})`,\n      );\n      Array.from(rootNodes).forEach((node) => {\n        node.classList.remove(selectedClass);\n      });\n\n      let selectedNode = element.querySelector(\n        `.${nodeClass}.${selectedClass}`,\n      );\n\n      while (selectedNode && selectedNode.parentElement) {\n        if (selectedNode.classList.contains(nodeClass)) {\n          selectedNode.classList.add(selectedClass);\n        }\n        selectedNode = selectedNode.parentElement;\n      }\n    },\n\n    updateSelection() {\n      if (!this.treeView) {\n        return;\n      }\n\n      this.treeView.selectItem(this.$route.path);\n    },\n  },\n  mounted() {\n    this.treeView = this.$refs[treeViewRef] && this.$refs[treeViewRef].instance;\n    this.updateSelection();\n    if (this.compactMode) {\n      this.treeView.collapseAll();\n    }\n  },\n  watch: {\n    $route() {\n      this.updateSelection();\n    },\n    compactMode() {\n      if (this.compactMode) {\n        this.treeView.collapseAll();\n      }\n    },\n  },\n  components: {\n    DxTreeView,\n  },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"../themes/custom-variables.scss\";\n\n.side-navigation-menu {\n  display: flex;\n  flex-direction: column;\n  min-height: 100%;\n  height: 100%;\n  width: 250px !important;\n  background: $brand-primary;\n\n  .menu-container {\n    min-height: 100%;\n    display: flex;\n    flex: 1;\n\n    .dx-treeview {\n      // ## Long text positioning\n      white-space: nowrap;\n      // ##\n\n      // ## Icon width customization\n      .dx-treeview-item {\n        padding-left: 0;\n        padding-right: 0;\n        color: $white;\n\n        .dx-icon {\n          width: $side-panel-min-width !important;\n          margin: 0 !important;\n        }\n\n        .dx-treeview-item-content {\n          padding-top: 6px;\n        }\n      }\n      // ##\n\n      // ## Arrow customization\n      .dx-treeview-node {\n        padding: 0 0 !important;\n      }\n\n      .dx-treeview-toggle-item-visibility {\n        right: 10px;\n        left: auto;\n      }\n\n      .dx-rtl .dx-treeview-toggle-item-visibility {\n        left: 10px;\n        right: auto;\n      }\n      // ##\n\n      // ## Item levels customization\n      .dx-treeview-node {\n        &[aria-level=\"1\"] {\n          font-weight: normal;\n          border-bottom: 1px solid $grey1;\n        }\n\n        &[aria-level=\"2\"] .dx-treeview-item-content {\n          font-weight: normal;\n          padding: 0 $side-panel-min-width;\n        }\n\n        &[aria-level=\"2\"] .dx-treeview-item {\n          background: darken($brand-primary, 3);\n        }\n      }\n      // ##\n    }\n\n    // ## Selected & Focuced items customization\n    .dx-treeview {\n      .dx-treeview-node-container {\n        .dx-treeview-node {\n          &.dx-state-selected:not(.dx-state-focused) > .dx-treeview-item {\n            background-color: lighten($black, 3);\n          }\n\n          &.dx-state-focused > .dx-treeview-item {\n            background-color: $brand-primary;\n          }\n\n          &.dx-state-focused.dx-state-selected > .dx-treeview-item {\n            background-color: lighten($black, 3);\n          }\n\n          &.dx-state-selected > .dx-treeview-item * {\n            color: $white;\n          }\n\n          &:not(.dx-state-focused) > .dx-treeview-item.dx-state-hover {\n            background-color: lighten($brand-primary, 5);\n            color: $white;\n          }\n\n          .dx-treeview-toggle-item-visibility {\n            color: $white;\n          }\n        }\n      }\n    }\n\n    .dx-theme-generic .dx-treeview {\n      .dx-treeview-node-container\n        .dx-treeview-node.dx-state-selected.dx-state-focused\n        > .dx-treeview-item\n        * {\n        color: inherit;\n      }\n    }\n    // ##\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-nav-menu.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-nav-menu.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./side-nav-menu.vue?vue&type=template&id=e47f6744\"\nimport script from \"./side-nav-menu.vue?vue&type=script&lang=js\"\nexport * from \"./side-nav-menu.vue?vue&type=script&lang=js\"\nimport style0 from \"./side-nav-menu.vue?vue&type=style&index=0&id=e47f6744&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { mapState } from 'vuex'\nimport notify from 'devextreme/ui/notify';\n\nexport default {\n  computed: {\n    ...mapState('notify', ['notification'])\n  },\n  watch: {\n    notification: function (newValue) {\n      if(newValue) {\n        notify({\n          message: newValue.message,\n          position: {\n            my: 'center top',\n            at: 'center top',\n            offset: '0 70'\n          }},\n          newValue.type,\n          newValue.dismissAfter);\n      }\n    }\n  }\n}","export default {\n  GlobalAdmin: {id: 0, role: \"GlobalAdmin\", display: \"ACE Admin\"},\n  Admin: {id: 1, role: \"Admin\", display: \"Organisation Admin\"},\n  User: {id: 2, role: \"User\", display: \"General User\"},\n};\n","import {AbilityBuilder} from \"@casl/ability\";\nimport roles from \"./roles\";\nimport subjects from \"@/config/subjects\";\n\nexport default function (user) {\n  // Master role building switch.\n  const {can, cannot, rules} = new AbilityBuilder();\n  if (user === null || user === undefined) {\n    can(\"read\", subjects.home.subject);\n    return rules;\n  }\n\n  switch (user.roles[0]) {\n    case roles.GlobalAdmin.role:\n      // Global Admins can perform all actions,\n      // but they can't make Admin changes\n      can(\"manage\", \"all\");\n      cannot(\"manage\", \"Admin\");\n      break;\n\n    // All non-admin/GlobalAdmin users shouldn't be able to access anything unless explicitly on a page-by-page basis.\n    // (no more can(\"manage\", \"all\") from here on in)\n    case roles.Admin.role:\n      can(\"read\", [subjects.home.subject, subjects.organisation.subject]);\n      can(\"update\", [subjects.organisation.subject]);\n      can(\"manage\", [\n        subjects.assessmentReview.subject,\n        subjects.customQuestionnaire.subject,\n        subjects.masterQuestionnaire.subject,\n        subjects.project.subject,\n        subjects.projectBusinessUnit.subject,\n        subjects.projectQuestionnaire.subject,\n        subjects.projectInsight.subject,\n        subjects.projectUser.subject,\n        subjects.thirdParty.subject,\n        subjects.thirdPartyAssessment.subject,\n        subjects.surveyResponse.subject,\n        subjects.surveyResponseReview.subject,\n        subjects.scopingQuestion.subject,\n        subjects.scopingQuestionnaire.subject,\n        subjects.standardQuestionnaire.subject,\n        subjects.location.subject,\n        subjects.event.subject,\n        subjects.survey.subject,\n        subjects.user.subject,\n        subjects.boxOffice.subject,\n        subjects.insights.subject,\n      ]);\n      cannot(\"update\", subjects.projectUser.subject, [\n        subjects.projectUser.fields.pwcRoleEdit,\n        subjects.projectUser.fields.clientRoleEdit,\n      ]);\n      cannot(\"create\", subjects.projectUser.subject, [\n        subjects.projectUser.fields.pwcUser,\n        subjects.projectUser.fields.clientUser,\n      ]);\n      break;\n\n    case roles.User.role:\n      can(\"read\", [\n        subjects.home.subject,\n        subjects.location.subject,\n        subjects.event.subject,\n        subjects.insights.subject,\n      ]);\n      can(\"manage\", [\n        subjects.assessmentReview.subject,\n        subjects.customQuestionnaire.subject,\n        subjects.masterQuestionnaire.subject,\n        subjects.project.subject,\n        subjects.projectBusinessUnit.subject,\n        subjects.projectQuestionnaire.subject,\n        subjects.projectInsight.subject,\n        subjects.projectUser.subject,\n        subjects.thirdParty.subject,\n        subjects.thirdPartyAssessment.subject,\n        subjects.surveyResponse.subject,\n        subjects.surveyResponseReview.subject,\n        subjects.scopingQuestion.subject,\n        subjects.scopingQuestionnaire.subject,\n        subjects.standardQuestionnaire.subject,\n      ]);\n      cannot(\"update\", subjects.surveyResponseReview.subject, [\n        \"approve\",\n        \"submitSecondaryReview\",\n      ]);\n\n      cannot(\"update\", subjects.projectUser.subject, [\n        subjects.projectUser.fields.pwcRoleEdit,\n        subjects.projectUser.fields.clientRoleEdit,\n        subjects.projectUser.fields.pwcUser,\n        subjects.projectUser.fields.clientUser,\n      ]);\n      cannot(\"create\", subjects.projectUser.subject, [\n        subjects.projectUser.fields.pwcUser,\n        subjects.projectUser.fields.clientUser,\n      ]);\n      break;\n\n    default:\n      can(\"read\", subjects.home.subject);\n  }\n  return rules;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"container-fluid footer p-0\"},[_c('footer',{staticClass:\"footer-container\"},[_c('div',{staticClass:\"copyright-section\"},[_vm._v(\"\\n      © Arts Council England \"+_vm._s(new Date().getFullYear())+\". All rights\\n      reserved.\\n    \")]),_c('div',{staticClass:\"links-container\"},[_c('a',{staticClass:\"footer-link\",attrs:{\"tabindex\":\"0\",\"role\":\"button\"},on:{\"click\":function($event){return _vm.linkClicked('privacy-policy')},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.linkClicked('privacy-policy')}}},[_vm._v(\"\\n        Privacy Policy\\n      \")]),(_vm.isAuthd)?_c('a',{staticClass:\"footer-link\",attrs:{\"tabindex\":\"0\",\"role\":\"button\"},on:{\"click\":function($event){return _vm.linkClicked('terms-of-use')},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.linkClicked('terms-of-use')}}},[_vm._v(\"\\n        Terms of Use\\n      \")]):_vm._e(),_c('a',{staticClass:\"footer-link\",attrs:{\"tabindex\":\"0\",\"role\":\"button\"},on:{\"click\":function($event){return _vm.linkClicked('cookie-notice')},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.linkClicked('cookie-notice')}}},[_vm._v(\"\\n        Cookie Notice\\n      \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"container-fluid footer p-0\">\n    <footer class=\"footer-container\">\n      <div class=\"copyright-section\">\n        &copy; Arts Council England {{ new Date().getFullYear() }}. All rights\n        reserved.\n      </div>\n\n      <div class=\"links-container\">\n        <a\n          class=\"footer-link\"\n          @click=\"linkClicked('privacy-policy')\"\n          @keydown.enter=\"linkClicked('privacy-policy')\"\n          tabindex=\"0\"\n          role=\"button\"\n        >\n          Privacy Policy\n        </a>\n        <a\n          v-if=\"isAuthd\"\n          class=\"footer-link\"\n          @click=\"linkClicked('terms-of-use')\"\n          @keydown.enter=\"linkClicked('terms-of-use')\"\n          tabindex=\"0\"\n          role=\"button\"\n        >\n          Terms of Use\n        </a>\n        <a\n          class=\"footer-link\"\n          @click=\"linkClicked('cookie-notice')\"\n          @keydown.enter=\"linkClicked('cookie-notice')\"\n          tabindex=\"0\"\n          role=\"button\"\n        >\n          Cookie Notice\n        </a>\n      </div>\n    </footer>\n  </div>\n</template>\n\n<script>\nimport authService from \"./api-authorization/AuthorizeService\";\n\nexport default {\n  props: [\"showModal\", \"isSurvey\"],\n\n  components: {},\n  data() {\n    return {\n      isAuthd: false,\n      refreshKey: 0,\n    };\n  },\n  methods: {\n    async linkClicked(path) {\n      this.$emit(\"scrollToTop\");\n      this.$router.push({\n        name: path,\n      });\n    },\n  },\n  async mounted() {\n    authService.isAuthenticated().then((x) => {\n      this.isAuthd = x;\n      this.refreshKey++;\n    });\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../themes/generated/variables.base.scss\";\n\n.link {\n  text-transform: none;\n}\n\n.p {\n  margin: unset;\n}\n\n.footer-container {\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  gap: 20px;\n  margin-left: 20px;\n  margin-right: 20px;\n  min-height: 64px;\n  align-items: center;\n}\n\n.links-container {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  flex-wrap: nowrap;\n  gap: 10px;\n}\n\n@media (width < 715px) {\n  .footer-container {\n    flex-direction: column-reverse;\n    justify-content: center;\n    gap: 5px;\n    margin-top: 5px;\n    margin-bottom: 5px;\n  }\n}\n\n@media (width < 330px) {\n  .footer-container {\n    margin-top: 8px;\n    margin-bottom: 8px;\n  }\n  .links-container {\n    flex-direction: column;\n    justify-content: center;\n    flex-wrap: wrap;\n    gap: 2px;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./the-footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./the-footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./the-footer.vue?vue&type=template&id=4a29ecee&scoped=true\"\nimport script from \"./the-footer.vue?vue&type=script&lang=js\"\nexport * from \"./the-footer.vue?vue&type=script&lang=js\"\nimport style0 from \"./the-footer.vue?vue&type=style&index=0&id=4a29ecee&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4a29ecee\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"side-nav-outer-toolbar\">\n    <header-toolbar\n      class=\"layout-header\"\n      :menu-toggle-enabled=\"headerMenuTogglerEnabled\"\n      :toggle-menu-func=\"toggleMenu\"\n      :title=\"title\"\n    />\n    <dx-drawer\n      class=\"layout-body\"\n      position=\"before\"\n      template=\"menu\"\n      :opened.sync=\"menuOpened\"\n      :opened-state-mode=\"drawerOptions.menuMode\"\n      :reveal-mode=\"drawerOptions.menuRevealMode\"\n      :min-size=\"drawerOptions.minMenuSize\"\n      :shading=\"drawerOptions.shaderEnabled\"\n      :hide-on-outside-click=\"drawerOptions.hideOnOutsideClick\"\n    >\n      <dx-scroll-view :ref=\"scrollViewRef\" class=\"main-content with-footer\">\n        <div class=\"footer-fix\">\n          <slot></slot>\n          <TheFooter @scrollToTop=\"scrollToTop\" @clicked=\"showModal = true\"></TheFooter>\n        </div>\n      </dx-scroll-view>\n\n      <!-- eslint-disable vue/no-unused-vars -->\n      <side-nav-menu\n        slot=\"menu\"\n        slot-scope=\"_\"\n        class=\"dx-swatch-additional\"\n        :compact-mode=\"!menuOpened\"\n        :selected-item=\"$route.path\"\n        :items=\"menuItems\"\n        @click=\"handleSideBarClick\"\n        @openMenu=\"openMenu\"\n        @closeMenu=\"closeMenu\"\n      />\n      <!-- eslint-enable -->\n    </dx-drawer>\n  </div>\n</template>\n\n<script>\nimport { mapState, mapActions, mapMutations } from \"vuex\";\nimport DxDrawer from \"devextreme-vue/drawer\";\nimport DxScrollView from \"devextreme-vue/scroll-view\";\nimport allMenuItems from \"../app-navigation\";\nimport HeaderToolbar from \"../components/header-toolbar\";\nimport SideNavMenu from \"../components/side-nav-menu\";\nimport notify from \"../mixins/notify\";\nimport defineAbilitiesFor from \"../config/ability\";\nimport TheFooter from \"../components/the-footer\";\nimport { ApplicationPaths } from \"../components/api-authorization/ApiAuthorizationConstants\";\nimport { isNotEmpty } from \"../common/helperFunctions\";\n\nexport default {\n  props: {\n    title: String,\n    isXSmall: Boolean,\n    isSmall: Boolean,\n    isXLarge: Boolean,\n  },\n  mixins: [notify],\n  methods: {\n    ...mapActions(\"auth\", [\"getTermsAcceptanceStatus\"]),\n    ...mapActions(\"auth\", [\"saveTermsAcceptanceStatus\"]),\n    ...mapMutations(\"auth\", [\"updateTermsAcceptanceStatus\"]),\n    ...mapActions(\"auth\", [\"getUser\"]),\n    openMenu() {\n      if (!this.menuOpened) {\n        this.menuTemporaryOpened = true;\n        this.menuOpened = true;\n      }\n    },\n    scrollToTop() {\n      this.scrollView.scrollTo({ left: 0, top: 0 });\n    },\n    closeMenu() {\n      if (this.menuOpened) {\n        this.menuTemporaryOpened = false;\n        this.menuOpened = false;\n      }\n    },\n    toggleMenu(e) {\n      const pointerEvent = e.event;\n      pointerEvent.stopPropagation();\n      if (this.menuOpened) {\n        this.menuTemporaryOpened = false;\n      }\n      this.menuOpened = !this.menuOpened;\n    },\n    handleSideBarClick() {\n      if (this.menuOpened === false) this.menuTemporaryOpened = true;\n      this.menuOpened = true;\n    },\n\n    logoutUser: function () {\n      this.$router.push({ path: `${ApplicationPaths.LogOut}`, replace: true });\n    },\n    checkTimer: function () {\n      let curTime = new Date().getTime();\n      let lastUserActiveTime = localStorage.getItem(\"lastUserActivityTime\");\n      \n      if ((curTime - lastUserActiveTime) >= this.sessionIdleLength) {\n        this.logoutUser();\n      }\n    },\n    setTimers: function () {\n      this.logoutTimer = setTimeout(this.logoutUser, this.sessionIdleLength);\n      localStorage.setItem(\"lastUserActivityTime\", new Date().getTime());\n    },\n\n    resetTimer: function () {\n      clearTimeout(this.logoutTimer);\n      this.setTimers();\n    },\n  },\n  created() {\n    if (!this.user) {\n      this.getUser().then((response) => {\n        this.$ability.update(defineAbilitiesFor(response));\n\n        //check for if user can read the page\n        const routeMeta = this.$router.currentRoute.meta;\n        if (routeMeta.requiresAuth === true && isNotEmpty(routeMeta.subject)) {\n          if (!this.$can(\"read\", routeMeta.subject)) {\n            // User cannot access the route thus\n            // should receive 403 Forbidden error code\n            this.$router.push({ name: \"error\", params: { errorCode: 403 } });\n          }\n        }\n      });\n    }\n  },\n\n  data() {\n    return {\n      scrollViewRef: \"scrollViewRef\",\n      menuOpened: false,\n      menuTemporaryOpened: false,\n      showModal: false,\n      showHelpModal: false,\n      events: [\"click\", \"mousedown\", \"scroll\", \"keypress\", \"load\"],\n      logoutTimer: null,\n      interval: null,\n      sessionIdleLength: 900000,\n      timerLength: 10000,\n    };\n  },\n  computed: {\n    ...mapState(\"auth\", [\"user\"]),\n    ...mapState(\"auth\", [\"termsAgreedStatus\"]),\n    scrollView: function () {\n      return this.$refs[this.scrollViewRef].instance;\n    },\n    menuItems() {\n      // only present links in the side menu to users if they have read access\n      return allMenuItems.filter((item) => this.$can(\"read\", item.subject));\n    },\n    drawerOptions() {\n      //const shaderEnabled = !this.isXLarge;\n      const shaderEnabled = true;\n      return {\n        //menuMode: this.isXLarge ? \"shrink\" : \"overlap\",\n        menuMode: \"overlap\",\n        menuRevealMode: this.isXSmall ? \"slide\" : \"expand\",\n        minMenuSize: this.isXSmall ? 0 : 60,\n        menuOpened: false,\n        hideOnOutsideClick: shaderEnabled,\n        shaderEnabled,\n      };\n    },\n    headerMenuTogglerEnabled() {\n      return true;\n    },\n  },\n  mounted() {\n    this.scrollToTop();\n\n    this.events.forEach(function (event) {\n      window.addEventListener(event, this.resetTimer);\n    }, this);\n\n    this.interval = window.setInterval(() => {\n      this.checkTimer();\n    }, this.timerLength);\n\n    this.setTimers();\n\n    this.getTermsAcceptanceStatus();\n  },\n  watch: {\n    //isXLarge() {\n    //  if (!this.menuTemporaryOpened) {\n    //    this.menuOpened = this.isXLarge;\n    //  }\n    //},\n    $route() {\n      if (this.menuTemporaryOpened || !this.isXLarge) {\n        this.menuOpened = false;\n        this.menuTemporaryOpened = false;\n      }\n    },\n  },\n  components: {\n    DxDrawer,\n    DxScrollView,\n    HeaderToolbar,\n    SideNavMenu,\n    TheFooter,\n  },\n\n  destroyed() {\n    this.events.forEach(function (event) {\n      window.removeEventListener(event, this.resetTimer);\n    }, this);\n    window.clearInterval(this.interval);\n    clearTimeout(this.logoutTimer);\n  },\n};\n</script>\n\n<style lang=\"scss\">\n.side-nav-outer-toolbar {\n  flex-direction: column;\n  display: flex;\n  height: 100%;\n  width: 100%;\n}\n\n.layout-header {\n  z-index: 1501;\n}\n\n.layout-body {\n  flex: 1;\n  min-height: 0;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-nav-outer-toolbar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-nav-outer-toolbar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./side-nav-outer-toolbar.vue?vue&type=template&id=1c3cc64c\"\nimport script from \"./side-nav-outer-toolbar.vue?vue&type=script&lang=js\"\nexport * from \"./side-nav-outer-toolbar.vue?vue&type=script&lang=js\"\nimport style0 from \"./side-nav-outer-toolbar.vue?vue&type=style&index=0&id=1c3cc64c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"side-nav-outer-toolbar\"},[_c('header-toolbar',{staticClass:\"layout-header\",attrs:{\"menu-toggle-enabled\":false,\"toggle-menu-func\":_vm.toggleMenu,\"title\":_vm.title,\"isSurvey\":true}}),_c('dx-scroll-view',{staticClass:\"main-content with-footer\"},[_c('div',{staticClass:\"footer-fix\"},[_vm._t(\"default\"),_c('TheFooter',{attrs:{\"isSurvey\":true},on:{\"clicked\":function($event){_vm.showModal = true}}})],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"side-nav-outer-toolbar\">\n    <header-toolbar\n      class=\"layout-header\"\n      :menu-toggle-enabled=\"false\"\n      :toggle-menu-func=\"toggleMenu\"\n      :title=\"title\"\n      :isSurvey=\"true\"\n    />\n\n    <dx-scroll-view class=\"main-content with-footer\">\n      <div class=\"footer-fix\">\n        <slot></slot>\n        <TheFooter\n          @clicked=\"showModal = true\"\n          :isSurvey=\"true\"\n        ></TheFooter>\n      </div>\n    </dx-scroll-view>\n  </div>\n</template>\n\n<script>\nimport DxScrollView from \"devextreme-vue/scroll-view\";\nimport HeaderToolbar from \"../components/header-toolbar\";\nimport TheFooter from \"../components/the-footer\";\nimport notify from \"../mixins/notify\";\n\nexport default {\n  props: {\n    title: String,\n    isXSmall: Boolean,\n    isSmall: Boolean,\n    isXLarge: Boolean,\n  },\n  mixins: [notify],\n  data() {\n    return {};\n  },\n  components: {\n    DxScrollView,\n    HeaderToolbar,\n    TheFooter,\n  },\n  methods: {\n    toggleMenu() {},\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n.side-nav-outer-toolbar {\n  flex-direction: column;\n  display: flex;\n  height: 100%;\n  width: 100%;\n}\n\n.layout-header {\n  z-index: 1501;\n}\n\n.layout-body {\n  flex: 1;\n  min-height: 0;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-layout.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-layout.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-layout.vue?vue&type=template&id=327269da&scoped=true\"\nimport script from \"./survey-layout.vue?vue&type=script&lang=js\"\nexport * from \"./survey-layout.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-layout.vue?vue&type=style&index=0&id=327269da&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"327269da\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"side-nav-outer-toolbar\"},[_c('header-toolbar',{staticClass:\"layout-header\",attrs:{\"menu-toggle-enabled\":false,\"toggle-menu-func\":_vm.toggleMenu,\"title\":_vm.title}}),_c('dx-scroll-view',{ref:_vm.scrollViewRef,staticClass:\"main-content with-footer\"},[_c('div',{staticClass:\"footer-fix\"},[_vm._t(\"default\"),_c('TheFooter',{on:{\"scrollToTop\":_vm.scrollToTop,\"clicked\":function($event){_vm.showModal = true}}})],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"side-nav-outer-toolbar\">\n    <header-toolbar\n      class=\"layout-header\"\n      :menu-toggle-enabled=\"false\"\n      :toggle-menu-func=\"toggleMenu\"\n      :title=\"title\"\n    />\n\n    <dx-scroll-view\n      :ref=\"scrollViewRef\"\n      class=\"main-content with-footer\"\n    >\n      <div class=\"footer-fix\">\n        <slot></slot>\n        <TheFooter\n          @scrollToTop=\"scrollToTop\"\n          @clicked=\"showModal = true\"\n        ></TheFooter>\n      </div>\n    </dx-scroll-view>\n  </div>\n</template>\n\n<script>\nimport DxScrollView from \"devextreme-vue/scroll-view\";\nimport HeaderToolbar from \"../components/header-toolbar\";\nimport TheFooter from \"../components/the-footer\";\n\nexport default {\n  props: {\n    title: String,\n    isXSmall: Boolean,\n    isSmall: Boolean,\n    isXLarge: Boolean,\n  },\n  data() {\n    return {\n      scrollViewRef: \"scrollViewRef\",\n    };\n  },\n  components: {\n    DxScrollView,\n    HeaderToolbar,\n    TheFooter,\n  },\n  methods: {\n    toggleMenu() {},\n    scrollToTop() {\n      this.scrollView.scrollTo({left: 0, top: 0});\n    },\n  },\n  computed: {\n    scrollView: function () {\n      return this.$refs[this.scrollViewRef].instance;\n    },\n  },\n  mounted() {\n    this.scrollToTop();\n  },\n};\n</script>\n\n<style lang=\"scss\">\n.side-nav-outer-toolbar {\n  flex-direction: column;\n  display: flex;\n  height: 100%;\n  width: 100%;\n}\n\n.layout-header {\n  z-index: 1501;\n}\n\n.layout-body {\n  flex: 1;\n  min-height: 0;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./static-layout.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./static-layout.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./static-layout.vue?vue&type=template&id=4c333a4c\"\nimport script from \"./static-layout.vue?vue&type=script&lang=js\"\nexport * from \"./static-layout.vue?vue&type=script&lang=js\"\nimport style0 from \"./static-layout.vue?vue&type=style&index=0&id=4c333a4c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-container\"},[_vm._m(0),_c('div',{staticClass:\"widgets-container\"},[_c('div',{staticClass:\"widget\"},[_c('welcome-widget')],1),_c('div',{staticClass:\"middle-col\"},[_c('div',{staticClass:\"widget\"},[_c('illuminate-widget')],1),_c('div',[_c('link-widgets')],1)])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"banner-container\"},[_c('div',{staticClass:\"banner\"},[_c('span',{staticClass:\"banner-bold\"},[_vm._v(\"Action Required:\")]),_c('span',[_vm._v(\"\\n         Dear user, the Illuminate platform will be receiving some new enhancements in FY25/26, some of which will impact the way you use the platform, and your reporting requirements. Please navigate\\n        \"),_c('a',{staticClass:\"banner-link\",attrs:{\"href\":\"https://www.artscouncil.org.uk/developing-creativity-and-culture/illuminate/illuminate-faqs/illuminate-platform-enhancements-2025?auHash=QIEO3FSA5TsYSgyyeppR6aFKGrkj6XybXEWsoaRuk6s\"}},[_vm._v(\"here\")]),_vm._v(\"\\n        to view the full list of enhancements.\\n      \")])])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"welcome-widget-container widget-container\"},[_vm._m(0),_c('div',{staticClass:\"widget-text-section grey-bottom-border\"},[_c('div',{staticClass:\"widget-header\"},[_vm._v(\"Welcome\"+_vm._s(_vm.userFullName))]),_c('a',{staticClass:\"widget-link\",attrs:{\"href\":`${_vm.baseUrl}/Identity/Account/Manage/ChangePassword`}},[_vm._v(\"Change your password\")])]),_c('div',{staticClass:\"widget-text-section\"},[_c('div',{staticClass:\"widget-header\"},[_vm._v(\"Need help?\")]),_c('div',[_vm._v(\"\\n      Should you need any help or have questions, please do not hesitate to\\n      reach out to us.\\n    \")]),_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"styling-mode\":\"contained\",\"text\":\"Contact us\",\"type\":\"normal\"},on:{\"click\":_vm.contactUsClicked}}),_c('div',[_vm._v(\"Phone: 0800 031 8671\")]),_vm._m(1)],1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"welcome-img-container\"},[_c('img',{staticClass:\"welcome-img\",attrs:{\"src\":require(\"../../assets/welcome-widget-min.jpeg\"),\"alt\":\"welcome-img\"}}),_c('div',{staticClass:\"welcome-img-credit-container\"},[_c('p',{staticClass:\"welcome-img-credit-text\"},[_c('i',{staticClass:\"fas fa-camera illuminate-img-credit-icon\"}),_vm._v(\"\\n        Artonik Bell Square. Photo © Vipul Sangoi\\n      \")])])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_vm._v(\"Email: \"),_c('a',{attrs:{\"href\":\"mailto:uk_illuminate_support@pwc.com\"}},[_vm._v(\"uk_illuminate_support@pwc.com\")])])\n}]\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"welcome-widget-container widget-container\">\n    <div class=\"welcome-img-container\">\n      <img\n        class=\"welcome-img\"\n        src=\"../../assets/welcome-widget-min.jpeg\"\n        alt=\"welcome-img\"\n      />\n      <div class=\"welcome-img-credit-container\">\n        <p class=\"welcome-img-credit-text\">\n          <i\n            class=\"fas fa-camera illuminate-img-credit-icon\"\n          ></i>\n          Artonik Bell Square. Photo © Vipul Sangoi\n        </p>\n      </div>\n    </div>\n\n    <div class=\"widget-text-section grey-bottom-border\">\n      <div class=\"widget-header\">Welcome{{ userFullName }}</div>\n\n      <!-- <a class=\"widget-link\" href=\"/\">Your account details</a> -->\n      <a\n        class=\"widget-link\"\n        :href=\"`${baseUrl}/Identity/Account/Manage/ChangePassword`\"\n        >Change your password</a\n      >\n    </div>\n\n    <div class=\"widget-text-section\">\n      <div class=\"widget-header\">Need help?</div>\n      <div>\n        Should you need any help or have questions, please do not hesitate to\n        reach out to us.\n      </div>\n      <dx-button\n        class=\"btn-secondary\"\n        styling-mode=\"contained\"\n        text=\"Contact us\"\n        type=\"normal\"\n        @click=\"contactUsClicked\"\n      />\n      <div>Phone: 0800 031 8671</div>\n      <div>Email: <a href=\"mailto:uk_illuminate_support@pwc.com\">uk_illuminate_support@pwc.com</a></div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {mapState} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\n\nexport default {\n  components: {\n    DxButton,\n  },\n  data() {\n    return {};\n  },\n  computed: {\n    ...mapState(\"auth\", [\"user\"]),\n    userFullName() {\n      if (this.user) {\n        return `, ${this.user.firstName} ${this.user.surname}`;\n      }\n      return \"\";\n    },\n    baseUrl: function () {\n      return window.location.origin;\n    },\n  },\n  methods: {\n    contactUsClicked() {\n      window.open(\"mailto:uk_illuminate_support@pwc.com\");\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../../themes/custom-variables.scss\";\n\n.welcome-img-container {\n  position: relative;\n  text-align: center;\n  color: white;\n}\n\n.welcome-img-container:hover .welcome-img-credit-text {\n  visibility: visible;\n}\n\n.welcome-img-container:hover .welcome-img {\n  filter: blur(4px);\n  transition: all 0.05s ease-in-out;\n}\n\n.welcome-img-credit-container {\n  position: absolute;\n  bottom: 0px;\n  left: 16px;\n}\n\n.welcome-img-credit-text {\n  visibility: hidden;\n  font-size: 12px;\n}\n\n.illuminate-img-credit-icon {\n  visibility: visible;\n}\n\n.welcome-img {\n  width: 100%;\n  border-radius: 20px 20px 0px 0px;\n}\n\n.welcome-widget-container {\n  width: 330px;\n  display: flex;\n  flex-direction: column;\n}\n\n.grey-bottom-border {\n  border-bottom: 1px solid $grey3;\n}\n\n.btn-secondary {\n  width: fit-content;\n  background-color: $white !important;\n}\n\n@media (width < 1220px) {\n  .welcome-widget-container {\n    width: fit-content;\n    display: flex;\n    flex-direction: row;\n    height: fit-content;\n    max-width: 745px;\n\n    .widget-text-section {\n      width: 50%;\n    }\n  }\n\n  .grey-bottom-border {\n    border-bottom: none;\n    border-right: 1px solid $grey3;\n  }\n\n  .welcome-img {\n    height: 100%;\n    object-fit: cover;\n    object-position: right;\n    border-radius: 20px 20px 0px 0px;\n    flex-shrink: 1;\n    display: none;\n  }\n}\n\n@media (width < 700px) {\n  .welcome-widget-container {\n    display: block;\n    background-color: white;\n\n    .grey-bottom-border {\n      border-bottom: 1px solid $grey3;\n      border-right: none;\n    }\n\n    .widget-text-section {\n      padding: unset;\n      padding-top: 20px;\n      padding-bottom: 30px;\n      width: 100%;\n    }\n  }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./welcome-widget.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./welcome-widget.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./welcome-widget.vue?vue&type=template&id=8c1d93be&scoped=true\"\nimport script from \"./welcome-widget.vue?vue&type=script&lang=js\"\nexport * from \"./welcome-widget.vue?vue&type=script&lang=js\"\nimport style0 from \"./welcome-widget.vue?vue&type=style&index=0&id=8c1d93be&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8c1d93be\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"illuminate-widget-container widget-container\"},[_c('div',{staticClass:\"widget-text-section\"},[_c('img',{staticClass:\"illuminate-header-logo\",attrs:{\"src\":require(\"../../assets/illuminate_logo.svg\"),\"alt\":\"Illuminate logo\"}}),_c('div',{staticClass:\"widget-header\"},[_vm._v(\"Illuminate by Arts Council England\")]),_vm._m(0),_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"styling-mode\":\"contained\",\"text\":`View User Guide`,\"type\":\"normal\"},on:{\"click\":_vm.viewEventsClicked}})],1),_vm._m(1)])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"middle-text\"},[_vm._v(\"\\n      Easily conduct surveys and analyse your ticketing data to gain valuable\\n      insights into your audience.\\n      \"),_c('br'),_c('br'),_vm._v(\"\\n      Click below to access comprehensive, downloadable training guides that\\n      will support you in using Illuminate.\\n    \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"illuminate-img-container\"},[_c('img',{staticClass:\"illuminate-img\",attrs:{\"src\":require(\"../../assets/illuminate-widget-crop.jpg\"),\"alt\":\"Elexi Walker in Queen of Chapeltown © Anthony Robling\"}}),_c('div',{staticClass:\"illuminate-img-credit-container\"},[_c('p',{staticClass:\"illuminate-img-credit-text\"},[_c('i',{staticClass:\"fas fa-camera illuminate-img-credit-icon\"}),_vm._v(\"\\n        Elexi Walker in Queen of Chapeltown © Anthony Robling\\n      \")])])])\n}]\n\nexport { render, staticRenderFns }","import subjects from \"../../config/subjects\";\n\nexport const linkDefs = [\n  {\n    text: \"Manage event schedule\",\n    icon: \"fas fa-clipboard\",\n    routeName: \"events-list\",\n    subject: subjects.event.subject,\n    action: \"read\",\n  },\n  {\n    text: \"Create new event\",\n    icon: \"fas fa-clipboard\",\n    routeName: \"event-details\",\n    subject: subjects.event.subject,\n    action: \"create\",\n  },\n  {\n    text: \"View insights\",\n    icon: \"fas fa-chart-bar\",\n    routeName: \"insights\",\n    subject: subjects.insights.subject,\n    action: \"read\",\n  },\n  {\n    text: \"Upload ticketing data\",\n    icon: \"fas fa-ticket-alt\",\n    routeName: \"box-office-data\",\n    subject: subjects.boxOffice.subject,\n    action: \"manage\",\n  },\n  {\n    text: \"Manage locations\",\n    icon: \"fas fa-location-arrow\",\n    routeName: \"locations-list\",\n    subject: subjects.location.subject,\n    action: \"read\",\n  },\n  {\n    text: \"Manage users\",\n    icon: \"fas fa-user\",\n    routeName: \"users-list\",\n    subject: subjects.user.subject,\n    action: \"read\",\n  },\n];\n","<template>\n  <div class=\"illuminate-widget-container widget-container\">\n    <div class=\"widget-text-section\">\n      <img\n        class=\"illuminate-header-logo\"\n        src=\"../../assets/illuminate_logo.svg\"\n        alt=\"Illuminate logo\"\n      />\n\n      <div class=\"widget-header\">Illuminate by Arts Council England</div>\n      <div class=\"middle-text\">\n        Easily conduct surveys and analyse your ticketing data to gain valuable\n        insights into your audience.\n        <br /><br />\n        Click below to access comprehensive, downloadable training guides that\n        will support you in using Illuminate.\n      </div>\n      <dx-button\n        class=\"btn-secondary\"\n        styling-mode=\"contained\"\n        :text=\"`View User Guide`\"\n        type=\"normal\"\n        @click=\"viewEventsClicked\"\n      />\n    </div>\n    <div class=\"illuminate-img-container\">\n      <img\n        class=\"illuminate-img\"\n        src=\"../../assets/illuminate-widget-crop.jpg\"\n        alt=\"Elexi Walker in Queen of Chapeltown © Anthony Robling\"\n      />\n      <div class=\"illuminate-img-credit-container\">\n        <p class=\"illuminate-img-credit-text\">\n          <i\n            class=\"fas fa-camera illuminate-img-credit-icon\"\n          ></i>\n          Elexi Walker in Queen of Chapeltown © Anthony Robling\n        </p>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {linkDefs} from \"./widget-link-defs\";\nimport {DxButton} from \"devextreme-vue/button\";\n\nexport default {\n  components: {\n    DxButton,\n  },\n  data() {\n    return {\n      linkDefs: linkDefs,\n    };\n  },\n  methods: {\n    viewEventsClicked() {\n      this.$router.push({\n        path: \"/training\",\n      });\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../../themes/custom-variables.scss\";\n\n.illuminate-widget-container {\n  width: 745px;\n  height: 320px;\n  display: flex;\n  flex-direction: row;\n  background-color: $grey5;\n  border-radius: 20px;\n}\n\n.illuminate-header-logo {\n  width: 160px;\n  padding: 3px;\n  border-radius: 10px;\n}\n\n.illuminate-img-container {\n  position: relative;\n  text-align: center;\n  color: white;\n}\n\n.illuminate-img-container:hover .illuminate-img-credit-text {\n  visibility: visible;\n}\n\n.illuminate-img-container:hover .illuminate-img {\n  filter: blur(4px);\n  transition: all 0.05s ease-in-out;\n}\n\n.illuminate-img-credit-container {\n  position: absolute;\n  bottom: 0px;\n  left: 16px;\n}\n\n.illuminate-img-credit-text {\n  visibility: hidden;\n  font-size: 9px;\n}\n\n.illuminate-img-credit-icon{\n  visibility: visible;\n}\n\n.illuminate-img-credit-container:hover .illuminate-img-credit-text {\n  visibility: visible;\n}\n\n.illuminate-img {\n  height: 100%;\n  border-radius: 0px 20px 20px 0px;\n}\n\n.middle-text {\n  min-width: 260px;\n}\n\n.btn-secondary {\n  width: fit-content;\n}\n\n@media (width < 1220px) {\n  .illuminate-widget-container {\n    width: fit-content;\n    height: fit-content;\n  }\n}\n\n@media (width < 773px) {\n  .illuminate-img-container {\n    display: none;\n  }\n}\n\n@media (width < 700px) {\n  .illuminate-img-container {\n    display: none;\n  }\n\n  .illuminate-widget-container {\n    border-radius: unset;\n    margin-right: -30px;\n    margin-left: -30px;\n  }\n\n  .widget-text-section {\n    width: 100%;\n  }\n  .middle-text {\n    all: unset;\n  }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./illuminate-widgets.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./illuminate-widgets.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./illuminate-widgets.vue?vue&type=template&id=6126c13a&scoped=true\"\nimport script from \"./illuminate-widgets.vue?vue&type=script&lang=js\"\nexport * from \"./illuminate-widgets.vue?vue&type=script&lang=js\"\nimport style0 from \"./illuminate-widgets.vue?vue&type=style&index=0&id=6126c13a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6126c13a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"all-links-container\"},_vm._l((_vm.linkDefs),function(link){return _c('div',{key:link.routeName},[(_vm.$can(link.action, link.subject))?_c('button',{staticClass:\"link-container\",attrs:{\"aria-label\":link.text},on:{\"click\":function($event){return _vm.linkClicked(link.routeName)}}},[_c('div',{staticClass:\"icon-container\"},[_c('i',{staticClass:\"link-icon\",class:link.icon,attrs:{\"aria-hidden\":true}})]),_c('div',{staticClass:\"link-text\"},[_vm._v(\"\\n        \"+_vm._s(link.text)+\"\\n      \")])]):_vm._e()])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"all-links-container\">\n    <div\n      v-for=\"link in linkDefs\"\n      :key=\"link.routeName\"\n    >\n      <button\n        class=\"link-container\"\n        @click=\"linkClicked(link.routeName)\"\n        v-if=\"$can(link.action, link.subject)\"\n        :aria-label=\"link.text\"\n      >\n        <div class=\"icon-container\">\n          <i\n            class=\"link-icon\"\n            :class=\"link.icon\"\n            :aria-hidden=\"true\"\n          ></i>\n        </div>\n        <div class=\"link-text\">\n          {{ link.text }}\n        </div>\n      </button>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {linkDefs} from \"./widget-link-defs\";\n\nexport default {\n  data() {\n    return {\n      linkDefs: linkDefs,\n    };\n  },\n  methods: {\n    linkClicked(routeName) {\n      this.$router.push({\n        name: routeName,\n      });\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../../themes/custom-variables.scss\";\n\n.all-links-container {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  gap: 10px;\n  margin-top: 20px;\n}\n\n.link-container {\n  background-color: white;\n  border: 2px solid $brand-primary;\n  border-radius: 20px;\n  display: flex;\n  flex-direction: column;\n  flex-wrap: nowrap;\n  align-content: center;\n  gap: 20px;\n  align-items: center;\n  padding: 20px;\n  width: 230px;\n\n  &:hover {\n    background-color: transparentize($brand-primary, 0.95);\n    cursor: pointer;\n  }\n\n  &:active,\n  &:focus {\n    box-shadow: 0px 0px 0px 4px rgba(61, 40, 124, 0.31) !important;\n    outline: none;\n  }\n}\n\n.icon-container {\n  text-align: center;\n  width: 65px;\n  height: 65px;\n  background-color: transparentize($color: $brand-primary, $amount: 0.83);\n  border-radius: 50%;\n  vertical-align: middle;\n\n  i {\n    position: relative;\n    top: calc(50% - 10px);\n    font-size: $font-size-heading;\n    color: $brand-primary;\n  }\n}\n\n.link-text {\n  text-transform: capitalize;\n  font: $base-font-family-medium;\n  font-size: $font-size-body;\n  text-align: center;\n}\n\n@media (width < 850px) {\n  .all-links-container {\n    justify-content: flex-start;\n  }\n}\n\n@media (width < 830px) {\n  .all-links-container {\n    justify-content: space-around;\n  }\n}\n\n@media (width < 590px) {\n  .all-links-container {\n    display: none;\n  }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./link-widgets.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./link-widgets.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./link-widgets.vue?vue&type=template&id=12cada3b&scoped=true\"\nimport script from \"./link-widgets.vue?vue&type=script&lang=js\"\nexport * from \"./link-widgets.vue?vue&type=script&lang=js\"\nimport style0 from \"./link-widgets.vue?vue&type=style&index=0&id=12cada3b&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"12cada3b\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"page-container\">\n    <div class=\"banner-container\">\n      <div class=\"banner\">\n        <span class=\"banner-bold\">Action Required:</span>\n        <span>\n          &nbsp;Dear user, the Illuminate platform will be receiving some new enhancements in FY25/26, some of which will impact the way you use the platform, and your reporting requirements. Please navigate\n          <a href=\"https://www.artscouncil.org.uk/developing-creativity-and-culture/illuminate/illuminate-faqs/illuminate-platform-enhancements-2025?auHash=QIEO3FSA5TsYSgyyeppR6aFKGrkj6XybXEWsoaRuk6s\" class=\"banner-link\">here</a>\n          to view the full list of enhancements.\n        </span>\n      </div>\n    </div>\n\n    <!-- Widgets Container -->\n    <div class=\"widgets-container\">\n      <div class=\"widget\">\n        <welcome-widget />\n      </div>\n\n      <div class=\"middle-col\">\n        <div class=\"widget\">\n          <illuminate-widget />\n        </div>\n\n        <div>\n          <link-widgets />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport WelcomeWidget from \"../components/home/welcome-widget.vue\";\nimport IlluminateWidget from \"../components/home/illuminate-widgets.vue\";\nimport LinkWidgets from \"../components/home/link-widgets.vue\";\n\nexport default {\n  components: {\n    WelcomeWidget,\n    IlluminateWidget,\n    LinkWidgets,\n  },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"../themes/custom-variables.scss\";\n\n.page-container {\n  margin: 0 auto;\n  padding: 10px;\n}\n\n\n.banner-container {\n  margin-bottom: 10px;\n  margin-top: 10px;\n}\n\n.banner {\n  background-color: #ffd900; \n  border: 1px solid #989898;\n  border-radius: 10px;\n  padding: 15px;\n  font-size: 16px;\n  color: #333;\n  text-align: center;\n  margin-bottom: 0;\n  max-width: 1125px;\n}\n\n.banner-bold {\n  font-weight: bold;\n}\n\n.banner-link {\n  color: #007bff;\n  text-decoration: underline;\n  font-weight: bold;\n}\n\n.widgets-container {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  gap: 50px;\n}\n\n.middle-col {\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  gap: 25px;\n  max-width: 745px;\n}\n\n.widget {\n  background-color: $grey5;\n  border-radius: 20px;\n  box-shadow: 20px 20px $brand-primary;\n}\n\n.widget-header {\n  font: $base-font-family-medium;\n  font-size: $font-size-heading;\n  width: fit-content;\n  height: fit-content;\n}\n\n.widget-body {\n  font: $base-font-family-regular;\n  font-size: $font-size-body;\n}\n\n.widget-text-section {\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  gap: 25px;\n  padding: 30px;\n  flex-shrink: 1;\n}\n\n.widget-link {\n  text-decoration: underline !important;\n  color: black !important;\n}\n\n.btn-secondary {\n  width: fit-content;\n}\n\n@media (width < 700px) {\n  .widget {\n    box-shadow: none !important;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./home.vue?vue&type=template&id=04e6a426\"\nimport script from \"./home.vue?vue&type=script&lang=js\"\nexport * from \"./home.vue?vue&type=script&lang=js\"\nimport style0 from \"./home.vue?vue&type=style&index=0&id=04e6a426&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('survey-response-details',{attrs:{\"quickcode\":_vm.quickcode}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sv-container\"},[(_vm.isInUnattendedMode)?_c('div',{staticClass:\"triangle\"},[_c('i',{staticClass:\"icon fas fa-user-lock\"})]):_vm._e(),(!_vm.survey && !_vm.isProcessing)?_c('div',{staticClass:\"dv-error\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Survey code not recognised\")]),_c('p',{staticClass:\"survey-subheading\"},[_vm._v(\"\\n      The survey you requested either doesn't exist or is not accessible at\\n      this time.\\n    \")])]):_vm._e(),(_vm.questionnaire && !_vm.questionnaire.submitted)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"page-title-container questionnaire-section\"},[_c('div',{class:_vm.isAuthenticated ? `` : `clsHidden`,attrs:{\"id\":\"divName\"}},[_c('h1',{staticClass:\"page-title\",attrs:{\"aria-label\":_vm.questionnaire.name}},[_vm._v(\"\\n              \"+_vm._s(_vm.questionnaire.name === null ? \"\" : _vm.questionnaire.name)+\"\\n            \")])]),_c('p',{staticClass:\"survey-subheading\",attrs:{\"id\":\"surveySubheading\",\"aria-label\":_vm.questionnaire.introduction}},[_vm._v(\"\\n            \"+_vm._s(_vm.questionnaire.introduction === null\n                ? \"\"\n                : _vm.questionnaire.introduction)+\"\\n          \")])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"page-title-container questionnaire-section\"},[_c('div',{staticClass:\"row\"},[(_vm.questionnaire.eventName)?_c('div',{staticClass:\"col-lg-4 col-md-12 col-sm-12 sv-row-margin sv-meta-details\"},[_c('span',{staticClass:\"questionnaire-details\",attrs:{\"aria-label\":\"Event Name\"}},[_vm._v(\"Event Name:\\n              \")]),_c('span',{attrs:{\"aria-label\":_vm.questionnaire.eventName}},[_vm._v(\"\\n                \"+_vm._s(_vm.questionnaire.eventName === null\n                    ? \"\"\n                    : `${_vm.questionnaire.eventName}`)+\"\\n              \")])]):_vm._e(),(_vm.questionnaire.eventName)?_c('div',{staticClass:\"col-lg-4 col-md-12 col-sm-12 sv-row-margin sv-meta-details\"},[_c('span',{staticClass:\"questionnaire-details\",attrs:{\"aria-label\":\"Event Venue\"}},[_vm._v(\"Event Venue:\\n              \")]),_c('span',{attrs:{\"aria-label\":_vm.questionnaire.eventVenue}},[_vm._v(\"\\n                \"+_vm._s(_vm.questionnaire.eventVenue === null\n                    ? \"\"\n                    : `${_vm.questionnaire.eventVenue}`)+\"\\n              \")])]):_vm._e(),(_vm.questionnaire.organisation)?_c('div',{staticClass:\"col-lg-4 col-md-12 col-sm-12 sv-row-margin sv-meta-details\"},[_c('span',{staticClass:\"questionnaire-details\",attrs:{\"aria-label\":\"Organisation\"}},[_vm._v(\"Organisation:\\n              \")]),_c('span',{attrs:{\"aria-label\":_vm.questionnaire.organisation}},[_vm._v(\"\\n                \"+_vm._s(_vm.questionnaire.organisation === null\n                    ? \"\"\n                    : `${_vm.questionnaire.organisation}`)+\"\\n              \")])]):_vm._e()])])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"page-title-container questionnaire-section\"},[_c('p',{staticClass:\"step-counter\",attrs:{\"aria-label\":`Step ${_vm.survey.currentPageNo + 1} of ${\n              _vm.survey.visiblePageCount\n            }`}},[_vm._v(\"\\n            Step \"+_vm._s(_vm.survey.currentPageNo + 1)+\" of\\n            \"+_vm._s(_vm.survey.visiblePageCount)+\"\\n          \")]),_c('DxProgressBar',{attrs:{\"min\":1,\"max\":100,\"value\":_vm.calcPageCountProgress,\"showStatus\":false,\"element-attr\":_vm.progressBarAttributes}})],1)])]),_c('div',{key:_vm.refreshKey,staticClass:\"survey-container\"},[_c('survey',{attrs:{\"survey\":_vm.survey}})],1),_c('div',{staticClass:\"actions-container\"},[_c('dx-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.survey && !_vm.questionnaire.submitted && !_vm.isFirstPage),expression:\"survey && !questionnaire.submitted && !isFirstPage\"}],staticClass:\"btn-secondary btn-survey\",attrs:{\"styling-mode\":\"contained\",\"text\":\"Previous\",\"type\":\"normal\",\"read-only\":_vm.isFirstPage,\"tab-index\":0},on:{\"click\":_vm.previousClicked}}),(_vm.survey && !_vm.questionnaire.submitted && !( this.survey.currentPageNo + 1 === this.survey.visiblePageCount))?_c('dx-button',{staticClass:\"btn-primary btn-survey\",attrs:{\"styling-mode\":\"contained\",\"text\":\"Next\",\"type\":\"default\",\"tab-index\":0},on:{\"click\":_vm.nextClicked}}):_vm._e(),(_vm.survey && !_vm.questionnaire.submitted && ( this.survey.currentPageNo + 1 === this.survey.visiblePageCount))?_c('dx-button',{staticClass:\"btn-primary btn-survey\",attrs:{\"styling-mode\":\"contained\",\"text\":\"Complete\",\"type\":\"default\"},on:{\"click\":_vm.completeClicked}}):_vm._e()],1),_c('dx-popup',{attrs:{\"visible\":_vm.confirmVisible,\"drag-enabled\":false,\"hide-on-outside-click\":true,\"show-title\":false,\"height\":\"auto\",\"width\":\"auto\"},on:{\"update:visible\":function($event){_vm.confirmVisible=$event}}},[_c('span',[_c('p',[_vm._v(\"\\n          The answers cannot be changed after submitting. Are you sure you\\n          want to proceed?\\n        \")])]),_c('div',{staticClass:\"confirm-actions-container\"},[_c('dx-button',{staticClass:\"btn-primary btn-delete\",attrs:{\"styling-mode\":\"contained\",\"text\":\"Cancel\",\"type\":\"danger\"},on:{\"click\":_vm.cancelConfirm}}),_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"styling-mode\":\"contained\",\"text\":\"Proceed\",\"type\":\"success\"},on:{\"click\":_vm.confirmSubmit}})],1)])],1):_vm._e(),(_vm.survey && _vm.questionnaire && _vm.questionnaire.submitted)?_c('div',[_c('div',{staticClass:\"questionnaire-fixed-container\"},[_vm._m(0),_c('div',{staticClass:\"d-flex justify-content-center\"},[(_vm.canSubmitAnotherResponse)?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"styling-mode\":\"contained\",\"text\":\"Submit another response\",\"type\":\"normal\"},on:{\"click\":_vm.submitAnotherResponse}}):_vm._e()],1)])]):_vm._e(),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"questionnaire-submitted-statement\"},[_c('span',[_vm._v(\"Thanks for submitting your responses. \")])])\n}]\n\nexport { render, staticRenderFns }","export const fromResponse = (error) => {\n    return error\n        ? error.response && error.response.data\n            ? error.response.data.message || error.response.data.title || error.message || ''\n            : error.message || ''\n        : ''\n}","const reviewFieldNames = {\n    FOR_REWORK: \"ForRework\",\n    REWORK_COMMENTS: \"ReworkComments\",\n    COMPLIANCEASSESSMENT: \"ComplianceAssessment\",\n    COMMENTS: \"Comments\",\n    ATTACHMENTS: \"Attachments\",\n    FINDINGS: \"Findings\"\n}\n\nexport default Object.freeze(reviewFieldNames);","import reviewFieldNames from \"../../utils/review-field-names\";\nimport {copyElementVisibility} from '../../widgets/widget-helpers';\nconst rootPanelFor = createReviewRootPanel(\"rework\");\n\nfunction createReviewRootPanel(name) {\n  return (questionName) => ({\n    containerName: `${questionName}-${name}`,\n    primaryPanelName: `${questionName}-primary-${name}`,\n    secondaryPanelName: `${questionName}-secondary-${name}`,\n  });\n}\n\nconst reviewFields = (() => {\n  function createReviewField(\n    fieldName,\n    defaultValue,\n    converterToSurvey,\n    converterToModel\n  ) {\n    return (questionName) => ({\n      fieldName: fieldName,\n      previousReviewKeyName: `${questionName}-previous-${fieldName}`,\n      currentReviewKeyName: `${questionName}-${fieldName}`,\n      getReviewKeyName(previous) {\n        return previous\n          ? this.previousReviewKeyName\n          : this.currentReviewKeyName;\n      },\n      getFieldValueForSurvey(answers) {\n        if (!answers) return null;\n        let value = answers[questionName];\n        if (value) {\n          value = value[this.fieldName];\n        }\n        if (converterToSurvey) {\n          value = converterToSurvey(value);\n        }\n        return value != null ? value : defaultValue;\n      },\n      getFieldValueFromSurvey(surveyData) {\n        if (!surveyData) return null;\n        let value = surveyData[this.currentReviewKeyName];\n        if (converterToModel) {\n          value = converterToModel(value);\n        }\n        return value != null ? value : defaultValue;\n      },\n    });\n  }\n  return {\n    sendBackForRework: createReviewField(\n      reviewFieldNames.FOR_REWORK,\n      [],\n      (value) => (value ? [\"send\"] : []),\n      (value) => (value && value.length && value[0] === \"send\") || false\n    ),\n    reworkComments: createReviewField(reviewFieldNames.REWORK_COMMENTS, null),\n  };\n})();\n\nexport function combineQuestionAnswerAndReview(\n  questionKeyNames,\n  questionnaireAnswers,\n  primaryReviewAnswers\n) {\n  const answers = {};\n\n  for (let questionKeyName of questionKeyNames) {\n    answers[questionKeyName] = questionnaireAnswers[questionKeyName];\n    for (let key of Object.keys(reviewFields)) {\n      const field = reviewFields[key](questionKeyName);\n      answers[field.currentReviewKeyName] = field.getFieldValueForSurvey(\n        primaryReviewAnswers\n      );\n    }\n  }\n  return answers;\n}\n\nexport function isForReworkChecked(surveyData, questionKeyName) {\n  const sendBackForReworkField = reviewFields.sendBackForRework(\n    questionKeyName\n  );\n  const value = sendBackForReworkField.getFieldValueFromSurvey(surveyData);\n  return value;\n}\n\nexport function augmentWithReworkWidget(\n  element,\n  surveyData,\n  isSubmitted,\n  anserwsReview\n) {\n  let isEditable =\n    (!isSubmitted && Object.keys(anserwsReview).length === 0) ||\n    isForReworkChecked(surveyData, element.name);\n  const disabledElement = { ...element, readOnly: !isEditable };\n  return copyElementVisibility(element, {\n    type: \"panel\",\n    name: rootPanelFor(element.name).containerName,\n    elements: [\n      disabledElement,\n      {\n        type: \"panel\",\n        name: rootPanelFor(element.name).primaryPanelName,\n        title: \"For Rework\",\n        elements: createReviewElements(element, false, surveyData),\n      },\n    ],\n  });\n}\n\nfunction createReviewElements(element, isPreviousReview, surveyData) {\n  const reworkCommentsName = reviewFields\n    .reworkComments(element.name)\n    .getReviewKeyName(isPreviousReview);\n  return [\n    isForReworkChecked(surveyData, element.name)\n      ? {\n          type: \"comment\",\n          name: `${reworkCommentsName}`,\n          startWithNewLine: false,\n          title: \"Rework comments\",\n          hideNumber: true,\n          readOnly: true,\n          rows: 2,\n        }\n      : \"\",\n  ];\n}\n","<template>\n  <div class=\"sv-container\">\n    <div\n      v-if=\"isInUnattendedMode\"\n      class=\"triangle\"\n    >\n      <i class=\"icon fas fa-user-lock\"></i>\n      <!-- Replace with your icon -->\n    </div>\n    <div\n      v-if=\"!survey && !isProcessing\"\n      class=\"dv-error\"\n    >\n      <h1 class=\"page-title\">Survey code not recognised</h1>\n      <p class=\"survey-subheading\">\n        The survey you requested either doesn't exist or is not accessible at\n        this time.\n      </p>\n    </div>\n    <div v-if=\"questionnaire && !questionnaire.submitted\">\n      <div class=\"row\">\n        <div class=\"col\">\n          <!-- Heading Section -->\n          <div class=\"page-title-container questionnaire-section\">\n            <div\n              id=\"divName\"\n              :class=\"isAuthenticated ? `` : `clsHidden`\"\n            >\n              <h1\n                class=\"page-title\"\n                :aria-label=\"questionnaire.name\"\n              >\n                {{ questionnaire.name === null ? \"\" : questionnaire.name }}\n              </h1>\n            </div>\n\n            <p\n              id=\"surveySubheading\"\n              class=\"survey-subheading\"\n              :aria-label=\"questionnaire.introduction\"\n            >\n              {{\n                questionnaire.introduction === null\n                  ? \"\"\n                  : questionnaire.introduction\n              }}\n            </p>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"row\">\n        <div class=\"col\">\n          <div class=\"page-title-container questionnaire-section\">\n            <div class=\"row\">\n              <div\n                class=\"col-lg-4 col-md-12 col-sm-12 sv-row-margin sv-meta-details\"\n                v-if=\"questionnaire.eventName\"\n              >\n                <span\n                  class=\"questionnaire-details\"\n                  aria-label=\"Event Name\"\n                  >Event Name:\n                </span>\n                <span :aria-label=\"questionnaire.eventName\">\n                  {{\n                    questionnaire.eventName === null\n                      ? \"\"\n                      : `${questionnaire.eventName}`\n                  }}\n                </span>\n              </div>\n              <div\n                class=\"col-lg-4 col-md-12 col-sm-12 sv-row-margin sv-meta-details\"\n                v-if=\"questionnaire.eventName\"\n              >\n                <span\n                  class=\"questionnaire-details\"\n                  aria-label=\"Event Venue\"\n                  >Event Venue:\n                </span>\n                <span :aria-label=\"questionnaire.eventVenue\">\n                  {{\n                    questionnaire.eventVenue === null\n                      ? \"\"\n                      : `${questionnaire.eventVenue}`\n                  }}\n                </span>\n              </div>\n              <div\n                class=\"col-lg-4 col-md-12 col-sm-12 sv-row-margin sv-meta-details\"\n                v-if=\"questionnaire.organisation\"\n              >\n                <span\n                  class=\"questionnaire-details\"\n                  aria-label=\"Organisation\"\n                  >Organisation:\n                </span>\n                <span :aria-label=\"questionnaire.organisation\">\n                  {{\n                    questionnaire.organisation === null\n                      ? \"\"\n                      : `${questionnaire.organisation}`\n                  }}\n                </span>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"row\">\n        <!-- Progress Section -->\n        <div class=\"col\">\n          <div class=\"page-title-container questionnaire-section\">\n            <p\n              class=\"step-counter\"\n              :aria-label=\"`Step ${survey.currentPageNo + 1} of ${\n                survey.visiblePageCount\n              }`\"\n            >\n              Step {{ survey.currentPageNo + 1 }} of\n              {{ survey.visiblePageCount }}\n            </p>\n            <DxProgressBar\n              :min=\"1\"\n              :max=\"100\"\n              :value=\"calcPageCountProgress\"\n              :showStatus=\"false\"\n              :element-attr=\"progressBarAttributes\"\n            />\n          </div>\n        </div>\n      </div>\n      <div\n        class=\"survey-container\"\n        :key=\"refreshKey\"\n      >\n        <survey :survey=\"survey\"></survey>\n      </div>\n\n      <div class=\"actions-container\">\n        <dx-button\n          v-show=\"survey && !questionnaire.submitted && !isFirstPage\"\n          styling-mode=\"contained\"\n          text=\"Previous\"\n          class=\"btn-secondary btn-survey\"\n          type=\"normal\"\n          :read-only=\"isFirstPage\"\n          @click=\"previousClicked\"\n          :tab-index=\"0\"\n        />\n        <dx-button\n          v-if=\"survey && !questionnaire.submitted && !( this.survey.currentPageNo + 1 === this.survey.visiblePageCount)\"\n          styling-mode=\"contained\"\n          text=\"Next\"\n          type=\"default\"\n          class=\"btn-primary btn-survey\"\n          @click=\"nextClicked\"\n          :tab-index=\"0\"\n        />\n        <dx-button\n          v-if=\"survey && !questionnaire.submitted && ( this.survey.currentPageNo + 1 === this.survey.visiblePageCount)\"\n          styling-mode=\"contained\"\n          text=\"Complete\"\n          type=\"default\"\n          class=\"btn-primary btn-survey\"\n          @click=\"completeClicked\"\n        />\n      </div>\n\n      <dx-popup\n        :visible.sync=\"confirmVisible\"\n        :drag-enabled=\"false\"\n        :hide-on-outside-click=\"true\"\n        :show-title=\"false\"\n        height=\"auto\"\n        width=\"auto\"\n      >\n        <span>\n          <p>\n            The answers cannot be changed after submitting. Are you sure you\n            want to proceed?\n          </p>\n        </span>\n        <div class=\"confirm-actions-container\">\n          <dx-button\n            styling-mode=\"contained\"\n            text=\"Cancel\"\n            type=\"danger\"\n            class=\"btn-primary btn-delete\"\n            @click=\"cancelConfirm\"\n          />\n          <dx-button\n            styling-mode=\"contained\"\n            text=\"Proceed\"\n            type=\"success\"\n            class=\"btn-secondary\"\n            @click=\"confirmSubmit\"\n          />\n        </div>\n      </dx-popup>\n    </div>\n    <div v-if=\"survey && questionnaire && questionnaire.submitted\">\n      <div class=\"questionnaire-fixed-container\">\n        <div class=\"questionnaire-submitted-statement\">\n          <span>Thanks for submitting your responses. </span>\n        </div>\n        <div class=\"d-flex justify-content-center\">\n          <dx-button\n            v-if=\"canSubmitAnotherResponse\"\n            styling-mode=\"contained\"\n            text=\"Submit another response\"\n            class=\"btn-primary\"\n            type=\"normal\"\n            @click=\"submitAnotherResponse\"\n          />\n        </div>\n      </div>\n    </div>\n\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {Model} from \"survey-core\";\nimport {Survey} from \"survey-vue-ui\";\nimport {mapActions, mapMutations, mapState, mapGetters} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxPopup} from \"devextreme-vue/popup\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport reviewFieldNames from \"@/utils/review-field-names\";\nimport {DxProgressBar} from \"devextreme-vue/progress-bar\";\nimport {combineQuestionAnswerAndReview} from \"./rework-widget\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\nimport \"survey-core/modern.css\";\nimport authService from \"../api-authorization/AuthorizeService\";\nimport Showdown from \"showdown\";\nimport {getUnattendedModeStatusForSurvey} from \"@/common/unattendedModeService\";\nimport {SurveyCompletionMethod} from \"../../common/constants\";\n\nexport default {\n  components: {\n    DxButton,\n    DxLoadPanel,\n    DxPopup,\n    DxProgressBar,\n    Survey,\n  },\n  props: [\"quickcode\"],\n  data() {\n    return {\n      survey: undefined,\n      confirmVisible: false,\n      progressValue: 50,\n      renderQuestionCount: 1,\n      isAuthenticated: false,\n      validationKey: null,\n      surveyResponseId: null,\n      refreshKey: 0,\n      isInUnattendedMode: false,\n      progressBarAttributes: {\n        \"aria-label\": \"Progress bar\",\n      },\n    };\n  },\n  beforeDestroy() {\n    this.clearQuestionnaire();\n  },\n  computed: {\n    ...mapState(\"surveyResponse\", [\"questionnaire\"]),\n    ...mapGetters(\"surveyResponse\", [\"isProcessing\"]),\n    questionKeyNames() {\n      return Object.keys(this.questionnaire.surveyAnswers);\n    },\n    isFirstPage() {\n      // need + 1 as zero-based.\n      return this.survey.currentPageNo === 0;\n    },\n    currentQuestionType() {\n      let page = this.survey.currentPage;\n      let elts = page.elements;\n      let question = elts[0];\n      return question.getType();\n    },\n    calcPageCountProgress() {\n      if (!this.survey) {\n        return 0;\n      }\n      return (\n        (100 * (this.survey.currentPageNo + 1)) / this.survey.visiblePageCount\n      );\n    },\n    answers() {\n      const review = this.questionnaire;\n      if (review.surveyAnswers == null) {\n        return [];\n      }\n      const answers = combineQuestionAnswerAndReview(\n        this.questionKeyNames,\n        review.surveyAnswers,\n        review.answersReviews,\n        review.answersReviews,\n      );\n      return answers;\n    },\n    canSubmitAnotherResponse() {\n      return this.isAuthenticated || this.isInUnattendedMode;\n    },\n    completionMethod() {\n      if (this.isInUnattendedMode) {\n        return SurveyCompletionMethod.UnattendedMode;\n      }\n\n      if (this.isAuthenticated === true) {\n        return SurveyCompletionMethod.Authenticated;\n      }\n\n      return SurveyCompletionMethod.Anonymous;\n    },\n  },\n  watch: {\n    isProcessing: function (processing) {\n      if (this.survey && this.questionnaire && !this.questionnaire.submitted) {\n        this.survey.mode = processing ? \"display\" : \"edit\";\n      }\n    },\n    questionnaire: function (newQuestionnaire) {\n      this.stopListeningSurveyEvents();\n\n      if (newQuestionnaire) {\n        try {\n          let parsedSchema = this.addNpoNameToSchema(\n            newQuestionnaire.surveySchema,\n          );\n          this.survey = new Model(parsedSchema);\n          this.survey.data = this.answers;\n          this.survey.showNavigationButtons = \"none\";\n          this.survey.showQuestionNumbers = \"off\";\n          this.survey.showCompletedPage = false;\n          this.survey.onGetQuestionTitle.add(this.onGetQuestionTitle);\n          this.survey.questionsOnPageMode = \"questionPerPage\";\n          const converter = new Showdown.Converter();\n          this.survey.onTextMarkdown.add(function (survey, options) {\n            // Convert Markdown to HTML\n            let str = converter.makeHtml(options.text);\n            // Remove root paragraphs <p></p>\n            str = str.substring(3);\n            str = str.substring(0, str.length - 4);\n            // Set HTML markup to render\n            options.html = str;\n          });\n          this.survey.onAfterRenderQuestionInput.add((sender, options) => {\n            const {question} = options;\n            if (question.getType() == \"dropdown\")\n              question.dropdownListModel.listModel.renderElements = true;\n            document.getElementsByClassName(\n              \"sv-vue-title-additional-div\",\n            )[0].style.marginBottom = \"3%\";\n          });\n          if (newQuestionnaire.submitted) {\n            this.survey.mode = \"display\";\n          }\n\n          this.startListeningSurveyEvents();\n        } catch (err) {\n          this.notifyError(`Unable to load survey. ${fromResponse(err)}`);\n          this.survey = undefined;\n        }\n      } else {\n        this.survey = undefined;\n      }\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"surveyResponse\", [\n      \"getQuestionnaire\",\n      \"saveQuestionnaire\",\n      \"createFromQuickCode\",\n      \"getSurveyLogo\",\n    ]),\n    ...mapMutations(\"surveyResponse\", [\"clearQuestionnaire\", \"setAnswers\"]),\n    scrollToTop() {\n      window.scrollTo(0, 0);\n    },\n    previousClicked() {\n      this.save()\n        .then(() => {\n          this.survey.prevPage();\n          this.scrollToTop();\n        })\n        .catch((err) => {\n          this.notifyError(`Unable to save survey. ${fromResponse(err)}`);\n        });\n    },\n    addNpoNameToSchema(schema) {\n      let orgDisplayName = this.questionnaire.organisation;\n      let orgDisplayNamePossessive = orgDisplayName.endsWith(\"s\")\n        ? `${orgDisplayName}'`\n        : `${orgDisplayName}'s`;\n      for (let i = 0; i < schema.pages.length; i++) {\n        let qs = schema.pages[i].elements;\n        for (let j = 0; j < qs.length; j++) {\n          // Replace plurals\n          if ([\"O-Q16\", \"O-Q17\", \"O-Q18\", \"O-Q39\", \"O-Q49\", \"O-Q50\", \"O-Q56\"].includes(qs[j].name)) {\n            qs[j].title = qs[j].title\n              .replaceAll(\"[NPO]\", orgDisplayNamePossessive)\n              .replaceAll(\"[discipline]\", this.questionnaire.discipline);\n          }\n          else {\n            qs[j].title = qs[j].title\n              .replaceAll(\"[NPO]\", orgDisplayName)\n              .replaceAll(\"[discipline]\", this.questionnaire.discipline);\n          }\n          let sc = qs[j].choices;\n          if (!isNotEmpty(sc)) {\n            continue;\n          }\n          for (let k = 0; k < sc.length; k++) {\n            sc[k].text = sc[k].text\n              .replaceAll(\"[event]\", this.questionnaire.eventName)\n              .replaceAll(\"[NPO]\", this.questionnaire.organisation)\n              .replaceAll(\"[discipline]\", this.questionnaire.discipline);\n          }\n        }\n      }\n      return schema;\n    },\n    onGetQuestionTitle(e, options) {\n      let index = options.question.visibleIndex;\n      if (index < 0) return;\n      options.title = `Question ${index + 1} ${options.title}`;\n      options.question.name = `Question ${index + 1} ${options.title}`;\n      //options.question.setPropertyValue('hideNumber',  true);\n    },\n    //get question index on its page, set the second parameter to true to get the index from visible questions only\n    getQuestionIndexOnPage(question, onlyVisible) {\n      if (!onlyVisible) return question.page.questions.indexOf(question);\n      let list = [];\n      //get only visbile questions\n      question.page.addQuestionsToList(list, true);\n      return list.indexOf(question);\n    },\n    async nextClicked() {\n      let result = this.survey.currentPage.validate(true);\n      if (!result) {\n        return;\n      }\n      this.save()\n        .then(() => {\n          this.survey.nextPage();\n          this.scrollToTop();\n        })\n        .catch((err) => {\n          this.notifyError(`Unable to save survey. ${fromResponse(err)}`);\n        });\n    },\n    completeClicked() {\n      this.submit();\n      //this.survey.completeLastPage();\n    },\n    getQuestionnaireAnswers() {\n      const answers = {};\n\n      for (let question of this.survey.getAllQuestions()) {\n        if (this.survey.getValue(question.name) == null) {\n          // == to check also for undefined\n          answers[question.name] = null;\n        }\n      }\n      const data = Object.fromEntries(\n        Object.entries({...answers, ...this.survey.data}).filter(\n          ([key]) =>\n            key.indexOf(reviewFieldNames.FOR_REWORK) === -1 &&\n            key.indexOf(reviewFieldNames.REWORK_COMMENTS) === -1,\n        ),\n      );\n      return data;\n    },\n    async save() {\n      await this.saveQuestionnaire({\n        surveyAnswers: this.getQuestionnaireAnswers(),\n        submitted: false,\n        validationKey: this.validationKey,\n        completionMethod: this.completionMethod,\n      });\n    },\n    submit() {\n      if (this.survey && this.survey.currentPage) {\n        if (!this.survey.currentPage.hasErrors(true, true)) {\n          this.confirmVisible = true;\n        } else {\n          this.notifyError(\n            \"Unable to submit survey. Please complete the survey first.\",\n          );\n        }\n      }\n    },\n    cancelConfirm() {\n      this.confirmVisible = false;\n    },\n    async confirmSubmit() {\n      // lock survey\n      this.survey.mode = \"display\";\n\n      // close confirm popup\n      this.confirmVisible = false;\n\n      await this.saveQuestionnaire({\n        surveyAnswers: this.getQuestionnaireAnswers(),\n        submitted: true,\n        validationKey: this.validationKey,\n        completionMethod: this.completionMethod,\n      })\n        .then(() => {\n          this.survey.doComplete();\n          this.questionnaire.submitted = true;\n        })\n        .catch((err) => {\n          this.notifyError(`Unable to submit survey. ${fromResponse(err)}`);\n        });\n    },\n    handleSurveyValueChanged() {\n      let answers = this.getQuestionnaireAnswers();\n      this.setAnswers(answers);\n      this.refreshKey++;\n    },\n    startListeningSurveyEvents() {\n      if (this.survey) {\n        if (this.survey.onValueChanged) {\n          this.survey.onValueChanged.add(this.handleSurveyValueChanged);\n        }\n      }\n    },\n    stopListeningSurveyEvents() {\n      if (this.survey) {\n        if (this.survey.onValueChanged) {\n          this.survey.onValueChanged.remove(this.handleSurveyValueChanged);\n        }\n      }\n    },\n    getSurvey(surveyResponseId, validationKey) {\n      this.getQuestionnaire({id: surveyResponseId, validationKey})\n        .then((response) => {\n          if (response.hasLogo) {\n            this.getSurveyLogo({id: surveyResponseId, validationKey}).catch(\n              (err) => {\n                this.notifyError(\n                  `Unable to load survey logo. ${fromResponse(err)}`,\n                );\n              },\n            );\n          }\n        })\n        .catch((err) => {\n          this.notifyError(`Unable to load survey. ${fromResponse(err)}`);\n        });\n    },\n    submitAnotherResponse() {\n      this.removeQuickcodeKeyAndResponseIdFromLocalStorage();\n      location.reload();\n    },\n    async populateAuthStatus() {\n      const isauthenticated = await authService.isAuthenticated();\n\n      this.isAuthenticated = isauthenticated;\n    },\n    getLocalKeyAndResponseIdFromQuickCode() {\n      if (!this.quickcode) {\n        return null;\n      }\n\n      let obj = JSON.parse(localStorage.getItem(this.quickcode));\n\n      if (obj === null) {\n        return;\n      }\n\n      this.validationKey = obj.validationKey;\n      this.surveyResponseId = obj.surveyResponseId;\n    },\n    saveQuickcodeKeyAndResponseIdToLocalStorage(\n      validationKey,\n      surveyResponseId,\n    ) {\n      this.validationKey = validationKey;\n      this.surveyResponseId = surveyResponseId;\n      let obj = {\n        validationKey: validationKey,\n        surveyResponseId: surveyResponseId,\n      };\n      localStorage.setItem(this.quickcode, JSON.stringify(obj));\n    },\n    removeQuickcodeKeyAndResponseIdFromLocalStorage() {\n      localStorage.removeItem(this.quickcode);\n      this.validationKey = null;\n      this.surveyResponseId = null;\n    },\n  },\n  async mounted() {\n    this.getLocalKeyAndResponseIdFromQuickCode();\n    await this.populateAuthStatus();\n    this.isInUnattendedMode = getUnattendedModeStatusForSurvey(this.quickcode);\n\n    if (isNotEmpty(this.surveyResponseId) && isNotEmpty(this.validationKey)) {\n      this.getSurvey(this.surveyResponseId, this.validationKey);\n    } else {\n      this.createFromQuickCode({\n        code: this.quickcode,\n      })\n        .then((result) => {\n          if (result) {\n            this.saveQuickcodeKeyAndResponseIdToLocalStorage(\n              result.validationKey,\n              result.surveyResponseId,\n            );\n            this.getSurvey(this.surveyResponseId, this.validationKey);\n          }\n        })\n        .catch((err) => {\n          if (fromResponse(err) != \"QuickCode is not valid.\") {\n            this.notifyError(`${fromResponse(err)}`);\n          }\n        });\n    }\n\n    // Needed to stop surveyJS running unsafe inline script when enter is pressed on\n    //  text input box\n    window.addEventListener(\n      \"keydown\",\n      function (e) {\n        if (\n          e.keyIdentifier == \"U+000A\" ||\n          e.keyIdentifier == \"Enter\" ||\n          e.keyCode == 13\n        ) {\n          if (e.target.nodeName == \"INPUT\" && e.target.type == \"text\") {\n            e.preventDefault();\n            return false;\n          }\n        }\n      },\n      true,\n    );\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../../themes/custom-variables.scss\";\n\n.sv-container {\n  @media only screen and (max-width: 900px) {\n    margin-left: 0%;\n    margin-right: 0%;\n  }\n\n  @media screen and (min-width: 901px) {\n    margin-left: 20%;\n    margin-right: 20%;\n  }\n\n  @media screen and (min-width: 1500px) {\n    margin-left: 25%;\n    margin-right: 25%;\n  }\n\n  @media screen and (min-width: 2000px) {\n    margin-left: 30%;\n    margin-right: 30%;\n  }\n}\n\n.survey-subheading {\n  color: $black;\n  font: $base-font-family-medium !important;\n  font-size: $font-size-body !important;\n  margin: unset;\n  word-wrap: break-word;\n  text-align: justify;\n  text-justify: inter-word;\n}\n\n.confirm-actions-container {\n  display: flex;\n  justify-content: center;\n  margin-bottom: 10px;\n  gap: 20px;\n}\n\n.btn-secondary {\n  justify-content: center;\n}\n\n.page-title {\n  margin: unset;\n  margin-bottom: 5px;\n}\n\n.page-title-container {\n  margin-left: unset;\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n\n.step-counter {\n  font: $base-font-family-medium;\n  font-size: $font-size-subheading;\n  color: $grey1;\n  margin-bottom: 5px;\n}\n\n.current-page-name {\n  font: $base-font-family-medium;\n}\n\n.questionnaire-pages-header {\n  background-color: $grey-01;\n\n  p {\n    font: $base-font-family-regular;\n    color: $grey-04;\n  }\n\n  .active-page-header {\n    font: $base-font-family-medium;\n    color: $black;\n  }\n}\n\n.questionnaire-details {\n  font: 400 16px \"Roboto\", Arial, sans-serif !important;\n  display: block;\n}\n\n.actions-container {\n  display: flex;\n  justify-content: space-between;\n  margin-bottom: 10px;\n  gap: 10px;\n\n  .dx-button {\n    height: 44px;\n    width: 100%;\n  }\n}\n\n::v-deep .sv-vue-row-additional-div {\n  flex-wrap: wrap;\n\n  .sv_q_erbox.sv_qstn_error_top {\n    flex-basis: 100%;\n  }\n}\n\n::v-deep [name$=\"-primary-assessment\"] {\n  background: #f5f5f5;\n}\n\n::v-deep .sv-description .sv-page__description {\n  margin-top: 0 !important;\n}\n\n.btn-survey {\n  height: 48px !important;\n}\n\n.sv-row-margin {\n  margin-bottom: 10px;\n}\n\n.sv-meta-details {\n  font: 500 16px \"Roboto\", Arial, sans-serif;\n}\n\n.clsHidden {\n  display: none;\n}\n\n.questionnaire-fixed-container {\n  position: fixed;\n  top: 20%;\n  left: 20%;\n  right: 20%;\n}\n\n.dv-error {\n  align-items: center;\n  text-align: center;\n}\n\n.triangle {\n  width: 0;\n  height: 0;\n  border-style: solid;\n  border-width: 0 50px 50px 0;\n  border-color: transparent transparentize($brand-primary, 0.6) transparent\n    transparent;\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 9999; /* This ensures the triangle is on top of everything else */\n  margin-top: -25px;\n  margin-right: -4px;\n}\n\n.icon {\n  // position: absolute;\n  // top: 50%;\n  // left: 50%;\n  color: $white;\n  //transform: translate(250%, 60%); user\n  transform: translate(170%, 60%);\n\n  /* Add your icon styling here */\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-response-details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-response-details.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-response-details.vue?vue&type=template&id=720dd4f3&scoped=true\"\nimport script from \"./survey-response-details.vue?vue&type=script&lang=js\"\nexport * from \"./survey-response-details.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-response-details.vue?vue&type=style&index=0&id=720dd4f3&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"720dd4f3\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"row\">\n    <div class=\"col-sm-12\">\n      <survey-response-details :quickcode=\"quickcode\" />\n    </div>\n  </div>\n</template>\n\n<script>\nimport SurveyResponseDetails from \"../components/survey-responses/survey-response-details\";\nexport default {\n  metaInfo: {\n    meta: [\n      {\n        name: 'robots',\n        content: 'noindex,nofollow'\n      }\n    ]\n  },\n  props: [\"quickcode\"],\n  components: {\n    SurveyResponseDetails,\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped></style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-response.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-response.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-response.vue?vue&type=template&id=105fd4db&scoped=true\"\nimport script from \"./survey-response.vue?vue&type=script&lang=js\"\nexport * from \"./survey-response.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"105fd4db\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"col-xl-8\"},[_vm._m(0),_vm._m(1),(_vm.showAcceptButton)?_c('div',{staticClass:\"acceptTouButton\"},[_c('dx-button',{staticClass:\"btn-primary acceptTouButton\",attrs:{\"use-submit-behavior\":false,\"type\":\"default\",\"text\":\"Accept\"},on:{\"click\":_vm.acceptButtonClick}})],1):_vm._e()])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Terms of Use\")]),_c('div',[_vm._v(\"Last updated: May 2023\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('h2',[_vm._v(\"1 Who we are and how to contact us\")]),_c('p',[_vm._v(\"\\n      1.1 Illuminate is an online data collection and analysis platform (the\\n      \\\"\"),_c('strong',[_vm._v(\"Platform\")]),_vm._v(\"\\\") and associated support services\\n      provided by PricewaterhouseCoopers LLP\\n      (\\\"\"),_c('strong',[_vm._v(\"PwC\")]),_vm._v(\"\\\") for Arts Council England\\n      (\\\"\"),_c('strong',[_vm._v(\"ACE\")]),_vm._v(\"\\\", \\\"\"),_c('strong',[_vm._v(\"we\")]),_vm._v(\"\\\",\\n      \\\"\"),_c('strong',[_vm._v(\"us\")]),_vm._v(\"\\\", \\\"\"),_c('strong',[_vm._v(\"our\")]),_vm._v(\"\\\").\\n    \")]),_c('p',[_vm._v(\"\\n      1.2 The Platform enables National Portfolio Organisations\\n      (\\\"\"),_c('strong',[_vm._v(\"NPOs\")]),_vm._v(\"\\\" or \\\"\"),_c('strong',[_vm._v(\"you\")]),_vm._v(\"\\\")\\n      and other arts and cultural organisations to collect and submit audience\\n      data, in order to provide ACE with the ability to derive insights from\\n      the personal data. the Platform is only intended for use by the\\n      authorised staff of each NPO.\\n    \")]),_c('p',[_vm._v(\"\\n      1.3 ACE is a registered charity with charity number 1036733. If you\\n      would like to contact us, you can do so here:\\n      \"),_c('a',{attrs:{\"href\":\"https://www.artscouncil.org.uk/contact/contact-customer-services\"}},[_vm._v(\"Contact customer services | Arts Council England\")]),_vm._v(\"\\n      .\\n    \")]),_c('h2',[_vm._v(\"2 By using our platform you accept these terms\")]),_c('p',[_vm._v(\"\\n      2.1 By using our Platform, you confirm that you accept these terms of\\n      use and that you agree to comply with them.\\n    \")]),_c('h2',[_vm._v(\"3 There are other terms that may apply to you\")]),_c('p',[_vm._v(\"\\n      3.1 These terms of use refer to the following additional terms, which\\n      also apply to your use of our Platform\\n    \")]),_c('ol',{attrs:{\"type\":\"a\"}},[_c('li',[_c('a',{attrs:{\"href\":\"http://localhost:8080/privacy-policy\"}},[_vm._v(\"Our Privacy Policy\")]),_vm._v(\",\\n        see further under '\\n        \"),_c('em',[_vm._v(\"How we may use your personal information'.\")])]),_c('li',[_c('a',{attrs:{\"href\":\"http://localhost:8080/cookie-notice\"}},[_vm._v(\"Our Cookie Policy\")]),_vm._v(\",\\n        which sets out information about the cookies on our Platform.\\n      \")])]),_c('h2',[_vm._v(\"4 We may make changes to these terms and our platform\")]),_c('p',[_vm._v(\"\\n      4.1 We amend these terms from time to time. Every time you wish to use\\n      our Platform, please check these terms to ensure you understand the\\n      terms that apply at that time.\\n    \")]),_c('p',[_vm._v(\"\\n      4.2 We may also update and change our Platform from time to time. We\\n      will tell you about any major changes.\\n    \")]),_c('h2',[_vm._v(\"5 The purpose and use of the platform\")]),_c('p',[_vm._v(\"\\n      5.1 The Platform was designed to offer online data collection and\\n      perform trend analysis based on audience data uploaded by you. You shall\\n      only use the Platform for the purposes specified in your funding\\n      agreement with us.\\n    \")]),_c('h2',[_vm._v(\"6 You must keep your account details safe\")]),_c('p',[_vm._v(\"\\n      6.1 If you choose, or you are provided with, a user identification code,\\n      password, information regarding job title, or any other piece of\\n      information as part of our security procedures, you must treat such\\n      information as confidential. You must not disclose it to any third\\n      party.\\n    \")]),_c('p',[_vm._v(\"\\n      6.2 If you are an NPO user, your user identification code, email address\\n      and information regarding job title will be available to your NPO, ACE\\n      and PwC. If you are an ACE user, your user identification code, email\\n      address and information regarding job title will be available to ACE and\\n      PwC.\\n    \")]),_c('p',[_vm._v(\"\\n      6.3 We have the right to disable any user identification code or\\n      password, information regarding job title, whether chosen by you or\\n      allocated by us, at any time, if in our reasonable opinion you have\\n      failed to comply with any of the provisions of these terms of use.\\n    \")]),_c('p',[_vm._v(\"\\n      6.4 If you know or suspect that anyone other than you knows your user\\n      identification code or password, you must promptly notify us here:\\n      \"),_c('a',{attrs:{\"href\":\"https://www.artscouncil.org.uk/contact/contact-customer-services\"}},[_vm._v(\"Contact customer services | Arts Council England\")]),_vm._v(\"\\n      .\\n    \")]),_c('h2',[_vm._v(\"7 How to get assistance when using the platform\")]),_c('p',[_vm._v(\"\\n      7.1 If you become aware of any issues while using the Platform, please\\n      contact us on Telephone: 0800 031 8671 / Email:\\n      uk_illuminate_support@pwc.com (Monday to Friday 09:00-17:00 (excluding\\n      English Bank Holidays)).\\n    \")]),_c('p',[_vm._v(\"\\n      7.2 If you need assistance in using the Platform, please contact us on\\n      Telephone: 0800 031 8671 / Email: uk_illuminate_support@pwc.com (Monday\\n      to Friday 09:00-17:00 (excluding English Bank Holidays)).\\n    \")]),_c('h2',[_vm._v(\"8 Our responsibility for loss or damage suffered by you\")]),_c('p',[_vm._v(\"\\n      8.1 We exclude all implied conditions, warranties, representations or\\n      other terms that may apply to our Platform or any content on it.\\n    \")]),_c('p',[_vm._v(\"\\n      8.2 We will not be liable to you for any loss or damage, whether in\\n      contract, tort (including negligence), breach of statutory duty, or\\n      otherwise, even if foreseeable, arising under or in connection with:\\n    \")]),_c('ol',{attrs:{\"type\":\"a\"}},[_c('li',[_vm._v(\"use of, or inability to use, our Platform; or\")]),_c('li',[_vm._v(\"use of or reliance on any content displayed on our Platform.\")])]),_c('p',[_vm._v(\"8.3 In particular, we will not be liable for:\")]),_c('ol',{attrs:{\"type\":\"a\"}},[_c('li',[_vm._v(\"loss of profits, sales, business, or revenue;\")]),_c('li',[_vm._v(\"business interruption;\")]),_c('li',[_vm._v(\"loss of anticipated savings;\")]),_c('li',[_vm._v(\"loss of business opportunity, goodwill or reputation; or\")]),_c('li',[_vm._v(\"any indirect or consequential loss or damage.\")])]),_c('h2',[_vm._v(\"9 How we may use your personal information\")]),_c('p',[_vm._v(\"\\n      9.1 We will only use your personal information as set out in our\\n      \"),_c('a',{attrs:{\"href\":\"https://www.artscouncil.org.uk/sites/default/files/download-file/General_Privacy_Notice_October_2021_0.docx\"}},[_vm._v(\"General Privacy Notice\")]),_vm._v(\"\\n      .\\n    \")]),_c('h2',[_vm._v(\"10 Intellectual property rights\")]),_c('p',[_vm._v(\"\\n      10.1 We are the owner or licensee of all the intellectual property\\n      rights in the Platform and in the Blended Datasets (as further set out\\n      below). All our rights are reserved.\\n    \")]),_c('p',[_vm._v(\"\\n      10.2 For the purposes of these Terms, we define any data or information\\n      you make available through our Platform as the \\\"\"),_c('strong',[_vm._v(\"NPO Datasets\")]),_vm._v(\"\\\". All NPO Datasets you upload to our Platform must be accurate\\n      and complete. When you upload NPO Datasets to our Platform, you retain\\n      all of your intellectual property rights in your content, but you hereby\\n      grant to ACE a worldwide, non-exclusive, royalty-free, transferable and\\n      perpetual licence to use, reproduce, distribute, prepare derivative\\n      works of and display your NPO Datasets for the purposes of ACE's\\n      business and function.\\n    \")]),_c('p',[_vm._v(\"\\n      10.3 Our use of the NPO Datasets includes (but is not limited to)\\n      combining the NPO Datasets at a sector or area level (\\\"\"),_c('strong',[_vm._v(\"Blended Datasets\")]),_vm._v(\"\\\") and you acknowledge and agree that we retain all of the\\n      intellectual property rights in the Blended Datasets. The Blended\\n      Datasets are licensed by ACE to the NPOs and the public under the\\n      \"),_c('a',{attrs:{\"href\":\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\"}},[_vm._v(\"Open Government Licence v3.0\")]),_vm._v(\"\\n      .\\n    \")]),_c('p',[_vm._v(\"\\n      10.4 We may at any time suspend or terminate your licence to the Blended\\n      Datasets if you:\\n    \")]),_c('ol',{attrs:{\"type\":\"a\"}},[_c('li',[_vm._v(\"are no longer part of the portfolio; or\")]),_c('li',[_vm._v(\"\\n        you abuse or misuse the Platform including but not limited to your\\n        breach of clause 12.2.\\n      \")])]),_c('h2',[_vm._v(\"11 Rights we are giving to npos to use material\")]),_c('p',[_vm._v(\"\\n      11.1 Your NPO Dataset is specific to you and only you (and ACE) can see\\n      your NPO Datasets on the Platform.\\n    \")]),_c('p',[_vm._v(\"\\n      11.2 You may use the Blended Datasets in accordance with the licence set\\n      out in clause 10.3.\\n    \")]),_c('h2',[_vm._v(\"\\n      12 We are not responsible for viruses and you must not introduce them\\n    \")]),_c('p',[_vm._v(\"\\n      12.1 We do not guarantee that our Platform will be secure or free from\\n      bugs or viruses. You are responsible for configuring your information\\n      technology, computer programmes and platform to access our Platform. You\\n      should use your own virus protection software.\\n    \")]),_c('p',[_vm._v(\"\\n      12.2 You must not misuse our Platform by knowingly introducing viruses,\\n      trojans, worms, logic bombs or other material that is malicious or\\n      technologically harmful. You must not attempt to gain unauthorised\\n      access to our Platform, the server on which our Platform is stored or\\n      any server, computer or database connected to our Platform. You must not\\n      attack our Platform via a denial-of-service attack or a distributed\\n      denial-of service attack. By breaching this provision, you would commit\\n      a criminal offence under the Computer Misuse Act 1990. We will report\\n      any such breach to the relevant law enforcement authorities and we will\\n      co-operate with those authorities by disclosing your identity to them.\\n      In the event of such a breach, your right to use our Platform will cease\\n      immediately.\\n    \")]),_c('h2',[_vm._v(\"13 Rules about linking to our platform\")]),_c('p',[_vm._v(\"\\n      13.1 You must not establish a link to our Platform in such a way as to\\n      suggest any form of association, approval or endorsement on our part\\n      where none exists.\\n    \")]),_c('p',[_vm._v(\"\\n      13.2 You must not create a link to this Platform or make available to\\n      any individuals who are not authorised to use the Platform.\\n    \")]),_c('h2',[_vm._v(\"14 We may transfer this agreement to someone else\")]),_c('p',[_vm._v(\"\\n      14.1 We may transfer our rights and obligations under these terms to\\n      another organisation. We will always tell you in writing if this happens\\n      and we will ensure that the transfer will not affect your rights under\\n      the contract.\\n    \")]),_c('h2',[_vm._v(\"15 Which country's laws apply to any disputes?\")]),_c('p',[_vm._v(\"\\n      15.1 Please note that these terms of use, their subject matter and their\\n      formation are governed by English law. You and we both agree that the\\n      courts of England and Wales will have exclusive jurisdiction except that\\n      if you are a resident of Northern Ireland, you may also bring\\n      proceedings in Northern Ireland, and if you are a resident of Scotland,\\n      you may also bring proceedings in Scotland.\\n    \")])])\n}]\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"col-xl-8\">\n    <div class=\"page-title-container\">\n      <h1 class=\"page-title\">Terms of Use</h1>\n      <div>Last updated: May 2023</div>\n    </div>\n\n    <div>\n      <h2>1 Who we are and how to contact us</h2>\n      <p>\n        1.1 Illuminate is an online data collection and analysis platform (the\n        &quot;<strong>Platform</strong>&quot;) and associated support services\n        provided by PricewaterhouseCoopers LLP\n        (&quot;<strong>PwC</strong>&quot;) for Arts Council England\n        (&quot;<strong>ACE</strong>&quot;, &quot;<strong>we</strong>&quot;,\n        &quot;<strong>us</strong>&quot;, &quot;<strong>our</strong>&quot;).\n      </p>\n      <p>\n        1.2 The Platform enables National Portfolio Organisations\n        (&quot;<strong>NPOs</strong>&quot; or &quot;<strong>you</strong>&quot;)\n        and other arts and cultural organisations to collect and submit audience\n        data, in order to provide ACE with the ability to derive insights from\n        the personal data. the Platform is only intended for use by the\n        authorised staff of each NPO.\n      </p>\n      <p>\n        1.3 ACE is a registered charity with charity number 1036733. If you\n        would like to contact us, you can do so here:\n        <a\n          href=\"https://www.artscouncil.org.uk/contact/contact-customer-services\"\n          >Contact customer services | Arts Council England</a\n        >\n        .\n      </p>\n      <h2>2 By using our platform you accept these terms</h2>\n      <p>\n        2.1 By using our Platform, you confirm that you accept these terms of\n        use and that you agree to comply with them.\n      </p>\n      <h2>3 There are other terms that may apply to you</h2>\n      <p>\n        3.1 These terms of use refer to the following additional terms, which\n        also apply to your use of our Platform\n      </p>\n      <ol type=\"a\">\n        <li>\n          <a href=\"http://localhost:8080/privacy-policy\">Our Privacy Policy</a>,\n          see further under &#39;\n          <em>How we may use your personal information&#39;.</em>\n        </li>\n        <li>\n          <a href=\"http://localhost:8080/cookie-notice\">Our Cookie Policy</a>,\n          which sets out information about the cookies on our Platform.\n        </li>\n      </ol>\n      <h2>4 We may make changes to these terms and our platform</h2>\n      <p>\n        4.1 We amend these terms from time to time. Every time you wish to use\n        our Platform, please check these terms to ensure you understand the\n        terms that apply at that time.\n      </p>\n      <p>\n        4.2 We may also update and change our Platform from time to time. We\n        will tell you about any major changes.\n      </p>\n      <h2>5 The purpose and use of the platform</h2>\n      <p>\n        5.1 The Platform was designed to offer online data collection and\n        perform trend analysis based on audience data uploaded by you. You shall\n        only use the Platform for the purposes specified in your funding\n        agreement with us.\n      </p>\n      <h2>6 You must keep your account details safe</h2>\n      <p>\n        6.1 If you choose, or you are provided with, a user identification code,\n        password, information regarding job title, or any other piece of\n        information as part of our security procedures, you must treat such\n        information as confidential. You must not disclose it to any third\n        party.\n      </p>\n      <p>\n        6.2 If you are an NPO user, your user identification code, email address\n        and information regarding job title will be available to your NPO, ACE\n        and PwC. If you are an ACE user, your user identification code, email\n        address and information regarding job title will be available to ACE and\n        PwC.\n      </p>\n      <p>\n        6.3 We have the right to disable any user identification code or\n        password, information regarding job title, whether chosen by you or\n        allocated by us, at any time, if in our reasonable opinion you have\n        failed to comply with any of the provisions of these terms of use.\n      </p>\n      <p>\n        6.4 If you know or suspect that anyone other than you knows your user\n        identification code or password, you must promptly notify us here:\n        <a\n          href=\"https://www.artscouncil.org.uk/contact/contact-customer-services\"\n          >Contact customer services | Arts Council England</a\n        >\n        .\n      </p>\n      <h2>7 How to get assistance when using the platform</h2>\n      <p>\n        7.1 If you become aware of any issues while using the Platform, please\n        contact us on Telephone: 0800 031 8671 / Email:\n        uk_illuminate_support@pwc.com (Monday to Friday 09:00-17:00 (excluding\n        English Bank Holidays)).\n      </p>\n      <p>\n        7.2 If you need assistance in using the Platform, please contact us on\n        Telephone: 0800 031 8671 / Email: uk_illuminate_support@pwc.com (Monday\n        to Friday 09:00-17:00 (excluding English Bank Holidays)).\n      </p>\n      <h2>8 Our responsibility for loss or damage suffered by you</h2>\n      <p>\n        8.1 We exclude all implied conditions, warranties, representations or\n        other terms that may apply to our Platform or any content on it.\n      </p>\n      <p>\n        8.2 We will not be liable to you for any loss or damage, whether in\n        contract, tort (including negligence), breach of statutory duty, or\n        otherwise, even if foreseeable, arising under or in connection with:\n      </p>\n      <ol type=\"a\">\n        <li>use of, or inability to use, our Platform; or</li>\n        <li>use of or reliance on any content displayed on our Platform.</li>\n      </ol>\n      <p>8.3 In particular, we will not be liable for:</p>\n      <ol type=\"a\">\n        <li>loss of profits, sales, business, or revenue;</li>\n        <li>business interruption;</li>\n        <li>loss of anticipated savings;</li>\n        <li>loss of business opportunity, goodwill or reputation; or</li>\n        <li>any indirect or consequential loss or damage.</li>\n      </ol>\n      <h2>9 How we may use your personal information</h2>\n      <p>\n        9.1 We will only use your personal information as set out in our\n        <a\n          href=\"https://www.artscouncil.org.uk/sites/default/files/download-file/General_Privacy_Notice_October_2021_0.docx\"\n          >General Privacy Notice</a\n        >\n        .\n      </p>\n      <h2>10 Intellectual property rights</h2>\n      <p>\n        10.1 We are the owner or licensee of all the intellectual property\n        rights in the Platform and in the Blended Datasets (as further set out\n        below). All our rights are reserved.\n      </p>\n      <p>\n        10.2 For the purposes of these Terms, we define any data or information\n        you make available through our Platform as the &quot;<strong\n          >NPO Datasets</strong\n        >&quot;. All NPO Datasets you upload to our Platform must be accurate\n        and complete. When you upload NPO Datasets to our Platform, you retain\n        all of your intellectual property rights in your content, but you hereby\n        grant to ACE a worldwide, non-exclusive, royalty-free, transferable and\n        perpetual licence to use, reproduce, distribute, prepare derivative\n        works of and display your NPO Datasets for the purposes of ACE&#39;s\n        business and function.\n      </p>\n      <p>\n        10.3 Our use of the NPO Datasets includes (but is not limited to)\n        combining the NPO Datasets at a sector or area level (&quot;<strong\n          >Blended Datasets</strong\n        >&quot;) and you acknowledge and agree that we retain all of the\n        intellectual property rights in the Blended Datasets. The Blended\n        Datasets are licensed by ACE to the NPOs and the public under the\n        <a\n          href=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\"\n          >Open Government Licence v3.0</a\n        >\n        .\n      </p>\n      <p>\n        10.4 We may at any time suspend or terminate your licence to the Blended\n        Datasets if you:\n      </p>\n      <ol type=\"a\">\n        <li>are no longer part of the portfolio; or</li>\n        <li>\n          you abuse or misuse the Platform including but not limited to your\n          breach of clause 12.2.\n        </li>\n      </ol>\n      <h2>11 Rights we are giving to npos to use material</h2>\n      <p>\n        11.1 Your NPO Dataset is specific to you and only you (and ACE) can see\n        your NPO Datasets on the Platform.\n      </p>\n      <p>\n        11.2 You may use the Blended Datasets in accordance with the licence set\n        out in clause 10.3.\n      </p>\n      <h2>\n        12 We are not responsible for viruses and you must not introduce them\n      </h2>\n      <p>\n        12.1 We do not guarantee that our Platform will be secure or free from\n        bugs or viruses. You are responsible for configuring your information\n        technology, computer programmes and platform to access our Platform. You\n        should use your own virus protection software.\n      </p>\n      <p>\n        12.2 You must not misuse our Platform by knowingly introducing viruses,\n        trojans, worms, logic bombs or other material that is malicious or\n        technologically harmful. You must not attempt to gain unauthorised\n        access to our Platform, the server on which our Platform is stored or\n        any server, computer or database connected to our Platform. You must not\n        attack our Platform via a denial-of-service attack or a distributed\n        denial-of service attack. By breaching this provision, you would commit\n        a criminal offence under the Computer Misuse Act 1990. We will report\n        any such breach to the relevant law enforcement authorities and we will\n        co-operate with those authorities by disclosing your identity to them.\n        In the event of such a breach, your right to use our Platform will cease\n        immediately.\n      </p>\n      <h2>13 Rules about linking to our platform</h2>\n      <p>\n        13.1 You must not establish a link to our Platform in such a way as to\n        suggest any form of association, approval or endorsement on our part\n        where none exists.\n      </p>\n      <p>\n        13.2 You must not create a link to this Platform or make available to\n        any individuals who are not authorised to use the Platform.\n      </p>\n      <h2>14 We may transfer this agreement to someone else</h2>\n      <p>\n        14.1 We may transfer our rights and obligations under these terms to\n        another organisation. We will always tell you in writing if this happens\n        and we will ensure that the transfer will not affect your rights under\n        the contract.\n      </p>\n      <h2>15 Which country&#39;s laws apply to any disputes?</h2>\n      <p>\n        15.1 Please note that these terms of use, their subject matter and their\n        formation are governed by English law. You and we both agree that the\n        courts of England and Wales will have exclusive jurisdiction except that\n        if you are a resident of Northern Ireland, you may also bring\n        proceedings in Northern Ireland, and if you are a resident of Scotland,\n        you may also bring proceedings in Scotland.\n      </p>\n    </div>\n\n    <div\n      v-if=\"showAcceptButton\"\n      class=\"acceptTouButton\"\n    >\n      <dx-button\n        :use-submit-behavior=\"false\"\n        class=\"btn-primary acceptTouButton\"\n        type=\"default\"\n        text=\"Accept\"\n        @click=\"acceptButtonClick\"\n      />\n    </div>\n  </div>\n</template>\n\n<script>\nimport {mapState, mapActions, mapMutations, mapGetters} from \"vuex\";\nimport DxButton from \"devextreme-vue/button\";\nimport notify from \"../mixins/notify\";\nimport {isNotEmpty} from \"../common/helperFunctions\";\n\nexport default {\n  data() {\n    return {\n      isAuthenticated: false,\n      showButton: \"\",\n    };\n  },\n  name: \"TermsOfUse\",\n  props: {\n    title: String,\n    isXSmall: Boolean,\n    isSmall: Boolean,\n    isXLarge: Boolean,\n  },\n  mixins: [notify],\n  methods: {\n    ...mapActions(\"auth\", [\"getTermsAcceptanceStatus\"]),\n    ...mapActions(\"auth\", [\"saveTermsAcceptanceStatus\"]),\n    ...mapActions(\"auth\", [\"logout\"]),\n    ...mapMutations(\"auth\", [\"updateTermsAcceptanceStatus\"]),\n    ...mapActions(\"auth\", [\"getUser\"]),\n    ...mapGetters(\"auth\", [\"getTermsAcceptanceStatus\"]),\n    async acceptButtonClick() {\n      this.updateTermsAcceptanceStatus(true);\n      await this.saveTermsAcceptanceStatus();\n      this.$router.push({\n        name: \"home\",\n      });\n    },\n  },\n  computed: {\n    ...mapState(\"auth\", [\"termsAgreedStatus\", \"user\"]),\n    showAcceptButton: function () {\n      if (!isNotEmpty(this.user)) {\n        return false;\n      }\n      return !this.getTermsAcceptanceStatus();\n    },\n  },\n  created() {\n    window.scrollTo(0, 0);\n  },\n  mounted() {},\n  components: {\n    DxButton,\n  },\n};\n</script>\n<style scoped lang=\"scss\">\n@import \"../themes/generated/variables.base.scss\";\n\n.acceptTouButton {\n  margin-top: 15px;\n  width: 100%;\n  max-width: 200px;\n}\nh2 {\n  display: inline-block;\n  margin: 0;\n  margin-top: 6px;\n}\n\ntr th {\n  text-align: left;\n  font-weight: bold;\n}\n\nul {\n  padding-top: 8px;\n  padding-bottom: 2px;\n\n  li {\n    margin-bottom: 12px;\n  }\n}\n\ntable {\n  margin-top: 12px;\n  margin-bottom: 12px;\n  border-collapse: collapse;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./terms-of-use.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./terms-of-use.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./terms-of-use.vue?vue&type=template&id=4ff806fc&scoped=true\"\nimport script from \"./terms-of-use.vue?vue&type=script&lang=js\"\nexport * from \"./terms-of-use.vue?vue&type=script&lang=js\"\nimport style0 from \"./terms-of-use.vue?vue&type=style&index=0&id=4ff806fc&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4ff806fc\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"title-back-container\"},[_c('div',{staticClass:\"page-back\"},[_c('dx-button',{staticClass:\"btn-back\",attrs:{\"icon\":\"fas fa-arrow-left\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onBackClicked}})],1),_c('div',{staticClass:\"page-title-container\"},[_c('div',[_c('p',{staticClass:\"page-breadcrumb\"},[_vm._v(\"\\n            Organisation\\n            \"+_vm._s(_vm.isEditMode && _vm.orgDetails && _vm.orgDetails.name\n                ? ` > ${_vm.orgDetails.name}`\n                : ``)+\"\\n          \")])]),_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Organisation Overview\")])])]),_c('div',{staticClass:\"action-section\"},[(_vm.orgDetails && _vm.$can(_vm.userAction, _vm.$subjects.organisation.subject))?_c('dx-button',{staticClass:\"btn-primary fas fa-save\",attrs:{\"validation-group\":\"orgDetails\",\"text\":\"Save Organisation\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onSaveOrgClicked}}):_vm._e(),(\n          _vm.orgDetails &&\n          _vm.isEditMode &&\n          _vm.$can('delete', _vm.$subjects.organisation.subject)\n        )?_c('dx-button',{staticClass:\"btn-primary btn-delete fas fa-trash-alt\",attrs:{\"type\":\"warning\",\"text\":\"Delete\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onDeleteOrgClicked}}):_vm._e()],1)]),_c('DxTabPanel',{attrs:{\"data-source\":_vm.tabs,\"selectedIndex\":_vm.currTab,\"animation-enabled\":false,\"swipe-enabled\":false,\"aria-labelledby\":\"tabpanel-label\"},on:{\"update:selectedIndex\":function($event){_vm.currTab=$event},\"update:selected-index\":function($event){_vm.currTab=$event}},scopedSlots:_vm._u([{key:\"title\",fn:function({data: tab, index: i}){return [_c('span',{attrs:{\"id\":`tab-${tab.id}`}},[_vm._v(_vm._s(tab.text))])]}},{key:\"organisation-details-template\",fn:function(){return [_c('div',{staticClass:\"organisation-content\"},[(\n            !_vm.isEditMode ||\n            (_vm.orgDetails.id !== null && _vm.orgDetails.id !== undefined)\n          )?_c('organisation-details'):_vm._e()],1)]},proxy:true},{key:\"organisation-templates-template\",fn:function(){return [_c('div',{staticClass:\"organisation-content\"},[(\n            !_vm.isEditMode ||\n            (_vm.orgDetails.id !== null && _vm.orgDetails.id !== undefined)\n          )?_c('organisation-templates'):_vm._e()],1)]},proxy:true},{key:\"organisation-boxOffice-template\",fn:function(){return [_c('div',{staticClass:\"organisation-content\"},[(\n            !_vm.isEditMode ||\n            (_vm.orgDetails.id !== null && _vm.orgDetails.id !== undefined)\n          )?_c('organisation-box-office-list'):_vm._e()],1)]},proxy:true}])}),_c('ConfirmDeletePopup',{attrs:{\"entityName\":_vm.orgDetails && _vm.orgDetails.name ? _vm.orgDetails.name : '',\"titleName\":\"Organisation\",\"onDelete\":_vm.deleteOrgFunction,\"popupVisible\":_vm.popupVisible},on:{\"onPopupClosed\":function($event){_vm.popupVisible = false}}}),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{on:{\"click\":_vm.divClick}},[_c('dx-form',{attrs:{\"form-data\":_vm.orgDetails,\"col-count\":2,\"readOnly\":!_vm.$can(_vm.userAction, _vm.$subjects.organisation.subject),\"show-validation-summary\":true,\"scrolling-enabled\":false,\"validation-group\":\"orgDetails\"},on:{\"field-data-changed\":_vm.setUnsavedChanges}},[_c('dx-item',{attrs:{\"item-type\":\"group\",\"col-count\":4,\"col-span\":2,\"css-class\":\"brand-border-top-form-group\"}},[_c('dx-simple-item',{attrs:{\"data-field\":\"name\"}},[_c('dx-label',{attrs:{\"text\":\"Organisation Name\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Organisation Name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Organisation Name is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}}),_c('dx-async-rule',{attrs:{\"validation-callback\":_vm.checkNameAvailabilityCall,\"ignore-empty-value\":true}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"alternativeName\"}},[_c('dx-label',{attrs:{\"text\":\"Alternative Name\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Alternative name is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"knownAs\"}},[_c('dx-label',{attrs:{\"text\":\"Known as\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Known as is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Known as is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"npoStatus\",\"value-expr\":\"id\",\"editorType\":\"dxSelectBox\",\"editorOptions\":_vm.editorOptions.npoStatus}},[_c('dx-label',{attrs:{\"text\":\"Organisation Type\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Organisation Type is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"exemptFromSurveyingId\",\"editorType\":\"dxRadioGroup\",\"editorOptions\":{\n          ..._vm.editorOptions.exemptFromSurveying,\n          layout: 'horizontal',\n        }}},[_c('dx-label',{attrs:{\"text\":\"Exempt from surveying\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Exempt from surveying is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"disciplineId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":{\n          ..._vm.editorOptions.discipline,\n          dataSource: _vm.discplinesDataSource,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Primary Discipline\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Discipline is required\"}})],1)],1),_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Address\",\"col-count\":4,\"col-span\":2,\"css-class\":\"brand-border-top-form-group\"}},[_c('dx-simple-item',{attrs:{\"data-field\":\"addressLine1\"}},[_c('dx-label',{attrs:{\"text\":\"First Line\"}}),_c('dx-required-rule',{attrs:{\"message\":\"First line is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.address,\"message\":`Address First line as is too long. Maximum allowed length is ${_vm.maxLength.address} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"addressLine2\"}},[_c('dx-label',{attrs:{\"text\":\"Second Line\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Address Second line as is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"postcode\"}},[_c('dx-label',{attrs:{\"text\":\"Postcode\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Postcode is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.postcode,\"message\":`Postcode as is too long. Maximum allowed length is ${_vm.maxLength.postcode} characters`}}),_c('dx-pattern-rule',{attrs:{\"pattern\":_vm.postCodeRegex,\"message\":\"Please enter a postcode in a valid format\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"regionId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":_vm.editorOptions.regions}},[_c('dx-label',{attrs:{\"text\":\"Region\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Region is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"upperTierAuthorityId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":{\n          ..._vm.editorOptions.upperAuths,\n          dataSource: _vm.upperAuthoritiesDataSource,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Upper Tier Authority\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Upper Tier Authority is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"constituencyId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":{\n          ..._vm.editorOptions.constituencies,\n          dataSource: _vm.constituenciesDataSource,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Constituency\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Constituency is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"aceAreaId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":_vm.editorOptions.aceArea}},[_c('dx-label',{attrs:{\"text\":\"ACE area\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Ace area is required\"}})],1)],1),_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Status\",\"col-count\":4,\"col-span\":2,\"cssClass\":!_vm.isEditMode\n          ? `brand-border-top-form-group last-form-section`\n          : `brand-border-top-form-group`}},[_c('dx-simple-item',{attrs:{\"data-field\":\"activeStatus\",\"editorType\":\"dxRadioGroup\",\"value-expr\":\"id\",\"editorOptions\":{\n          ..._vm.editorOptions.activeStatuses,\n          layout: 'horizontal',\n        }}},[_c('dx-label',{attrs:{\"text\":\"Active Status\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Active status is required\"}})],1)],1),(_vm.isEditMode)?_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Logo\",\"col-count\":4,\"col-span\":2,\"css-class\":\"logo-section brand-border-top-form-group last-form-section\"}},[_c('dx-simple-item',{attrs:{\"data-field\":\"logo\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('div',[_c('DxLoadPanel',{attrs:{\"visible\":_vm.isUploadingLogo,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false,\"shading-color\":\"rgba(0,0,0,0.1)\",\"position\":{of: '#upload-container-id'}}}),_c('div',{key:_vm.logoRefreshKey,staticClass:\"upload-container\",attrs:{\"id\":\"upload-container-id\"}},[_c('i',{staticClass:\"fas fa-upload\"}),_c('dx-file-uploader',{attrs:{\"multiple\":false,\"name\":\"file\",\"uploadMode\":\"instantly\",\"accept\":\"image/*\",\"selectButtonText\":\"Select logo\",\"labelText\":\"or Drop logo here\",\"allowedFileExtensions\":_vm.allowedFileExtensions,\"maxFileSize\":_vm.maxFileUploadSize,\"invalidFileExtensionMessage\":\"File Type is not allowed\",\"invalidMaxFileSizeMessage\":\"File is too large. Max limit: 100kb\",\"upload-url\":_vm.uploadUrl,\"upload-headers\":_vm.getUploadHeaders(),\"allowCancelling\":true,\"showFileList\":true},on:{\"value-changed\":_vm.attachmentsValueChanged,\"uploaded\":_vm.onLogoUploadSuccessful,\"upload-started\":_vm.onLogoUploadStarted,\"upload-error\":_vm.onLogoUploadError}})],1)],1)]},proxy:true}],null,false,724965799)},[_c('dx-label',{attrs:{\"text\":\"Please upload a suitable logo to appear on your surveys\"}})],1),_c('dx-simple-item',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [(_vm.orgLogo)?_c('div',{key:_vm.logoRefreshKey + 1,staticClass:\"org-logo-container\"},[_c('img',{attrs:{\"src\":_vm.orgLogo,\"alt\":\"logo\"}})]):_vm._e()]},proxy:true}],null,false,3261450355)},[_c('dx-label',{attrs:{\"text\":_vm.orgLogo === null ? `` : `Preview`}})],1)],1):_vm._e()],1),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='statusTooltip']\",\"visible\":_vm.isActiveStatusTooltipVisible},on:{\"update:visible\":function($event){_vm.isActiveStatusTooltipVisible=$event}}},[_c('div',{staticClass:\"tooltip\"},[_vm._v(\"\\n      Deactivating this organisation will also disable all user accounts that\\n      are solely associated with it.\\n    \")])]),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='logoTooltip']\",\"visible\":_vm.isLogoTooltipVisible},on:{\"update:visible\":function($event){_vm.isLogoTooltipVisible=$event}}},[_c('div',{staticClass:\"tooltip\"},[_vm._v(\"\\n      Allowed file extensions: .jpg, .jpeg, .png. Maximum file size: 100kb.\\n    \")])]),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='knownAsTooltip']\",\"visible\":_vm.isKnownAsTooltipVisible},on:{\"update:visible\":function($event){_vm.isKnownAsTooltipVisible=$event}}},[_c('div',{staticClass:\"tooltip\"},[_c('div',[_vm._v(\"\\n        This is the name that will appear on the surveys issued to your\\n        audiences - please ensure\\n      \")]),_c('div',[_vm._v(\"\\n        this field is populated with an organisation name that your audiences\\n        will be familiar with.\\n      \")])])]),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import $axios from \"./axios-instance\";\nimport CustomStore from \"devextreme/data/custom_store\";\n\nconst sources = {};\n\nconst createSource = (name) => {\n  return {\n    dataSource: {\n      store: new CustomStore({\n        loadMode: \"raw\",\n        key: \"id\",\n        load: async function () {\n          let response = await $axios.get(`lookup/${name}`);\n          return response.data.data\n            .sort((a, b) => (a.name > b.name ? 1 : -1))\n            .map((x) => ({id: x.id, name: x.name}));\n        },\n      }),\n    },\n    valueExpr: \"id\",\n    displayExpr: \"name\",\n  };\n};\n\nconst LookupSourceProvider = {\n  get: (name) => {\n    if (!sources[name]) {\n      sources[name] = createSource(name);\n    }\n\n    return sources[name];\n  },\n};\n\nObject.freeze(LookupSourceProvider);\nexport default LookupSourceProvider;\n","import {fromResponse} from \"../utils/error-message-extractor\";\n\nexport default {\n  data() {\n    return {\n      originalName: \"\",\n    };\n  },\n  methods: {\n    async checkNameAvailability(url, data) {\n      if (data.name === this.originalName) return;\n      let response;\n      try {\n        // Only includes id if it exists\n        response = await this.$http.get(\n          `${url}/?name=${data.name}${data.id ? `&&id=${data.id}` : ''}`,\n        );\n      } catch (err) {\n        throw new Error(\n          `Unable to check name availability. ${fromResponse(err)}`,\n        );\n      }\n      if (!response.data.nameAvailable) {\n        throw new Error(\"Name is already used\");\n      }\n    },\n    watchOriginalName(newValue) {\n      this.originalName = newValue.name || \"\";\n    },\n  },\n};\n","<template>\n  <div v-on:click=\"divClick\">\n    <dx-form\n      :form-data=\"orgDetails\"\n      :col-count=\"2\"\n      :readOnly=\"!$can(userAction, $subjects.organisation.subject)\"\n      :show-validation-summary=\"true\"\n      :scrolling-enabled=\"false\"\n      validation-group=\"orgDetails\"\n      @field-data-changed=\"setUnsavedChanges\"\n    >\n      <dx-item\n        item-type=\"group\"\n        :col-count=\"4\"\n        :col-span=\"2\"\n        css-class=\"brand-border-top-form-group\"\n      >\n        <dx-simple-item data-field=\"name\">\n          <dx-label text=\"Organisation Name\" />\n          <dx-required-rule message=\"Organisation Name is required\" />\n          <dx-string-length-rule\n            :max=\"maxLength.name\"\n            :message=\"`Organisation Name is too long. Maximum allowed length is ${maxLength.name} characters`\"\n          />\n          <dx-async-rule\n            :validation-callback=\"checkNameAvailabilityCall\"\n            :ignore-empty-value=\"true\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item data-field=\"alternativeName\">\n          <dx-label text=\"Alternative Name\" />\n          <dx-string-length-rule\n            :max=\"maxLength.name\"\n            :message=\"`Alternative name is too long. Maximum allowed length is ${maxLength.name} characters`\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item data-field=\"knownAs\">\n          <dx-label text=\"Known as\" />\n          <dx-required-rule message=\"Known as is required\" />\n          <dx-string-length-rule\n            :max=\"maxLength.name\"\n            :message=\"`Known as is too long. Maximum allowed length is ${maxLength.name} characters`\"\n          />\n        </dx-simple-item>\n        <dx-simple-item\n          data-field=\"npoStatus\"\n          value-expr=\"id\"\n          editorType=\"dxSelectBox\"\n          :editorOptions=\"editorOptions.npoStatus\"\n        >\n          <dx-label text=\"Organisation Type\" />\n          <dx-required-rule message=\"Organisation Type is required\" />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"exemptFromSurveyingId\"\n          editorType=\"dxRadioGroup\"\n          :editorOptions=\"{\n            ...editorOptions.exemptFromSurveying,\n            layout: 'horizontal',\n          }\"\n        >\n          <dx-label text=\"Exempt from surveying\" />\n          <dx-required-rule message=\"Exempt from surveying is required\" />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"disciplineId\"\n          editorType=\"dxSelectBox\"\n          :editorOptions=\"{\n            ...editorOptions.discipline,\n            dataSource: discplinesDataSource,\n          }\"\n        >\n          <dx-label text=\"Primary Discipline\" />\n          <dx-required-rule message=\"Discipline is required\" />\n        </dx-simple-item>\n      </dx-item>\n\n      <dx-item\n        item-type=\"group\"\n        caption=\"Address\"\n        :col-count=\"4\"\n        :col-span=\"2\"\n        css-class=\"brand-border-top-form-group\"\n      >\n        <dx-simple-item data-field=\"addressLine1\">\n          <dx-label text=\"First Line\" />\n          <dx-required-rule message=\"First line is required\" />\n          <dx-string-length-rule\n            :max=\"maxLength.address\"\n            :message=\"`Address First line as is too long. Maximum allowed length is ${maxLength.address} characters`\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item data-field=\"addressLine2\">\n          <dx-label text=\"Second Line\" />\n          <dx-string-length-rule\n            :max=\"maxLength.name\"\n            :message=\"`Address Second line as is too long. Maximum allowed length is ${maxLength.name} characters`\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item data-field=\"postcode\">\n          <dx-label text=\"Postcode\" />\n          <dx-required-rule message=\"Postcode is required\" />\n          <dx-string-length-rule\n            :max=\"maxLength.postcode\"\n            :message=\"`Postcode as is too long. Maximum allowed length is ${maxLength.postcode} characters`\"\n          />\n          <dx-pattern-rule\n            :pattern=\"postCodeRegex\"\n            message=\"Please enter a postcode in a valid format\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"regionId\"\n          editorType=\"dxSelectBox\"\n          :editorOptions=\"editorOptions.regions\"\n        >\n          <dx-label text=\"Region\" />\n          <dx-required-rule message=\"Region is required\" />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"upperTierAuthorityId\"\n          editorType=\"dxSelectBox\"\n          :editorOptions=\"{\n            ...editorOptions.upperAuths,\n            dataSource: upperAuthoritiesDataSource,\n          }\"\n        >\n          <dx-label text=\"Upper Tier Authority\" />\n          <dx-required-rule message=\"Upper Tier Authority is required\" />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"constituencyId\"\n          editorType=\"dxSelectBox\"\n          :editorOptions=\"{\n            ...editorOptions.constituencies,\n            dataSource: constituenciesDataSource,\n          }\"\n        >\n          <dx-label text=\"Constituency\" />\n          <dx-required-rule message=\"Constituency is required\" />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"aceAreaId\"\n          editorType=\"dxSelectBox\"\n          :editorOptions=\"editorOptions.aceArea\"\n        >\n          <dx-label text=\"ACE area\" />\n          <dx-required-rule message=\"Ace area is required\" />\n        </dx-simple-item>\n      </dx-item>\n\n      <dx-item\n        item-type=\"group\"\n        caption=\"Status\"\n        :col-count=\"4\"\n        :col-span=\"2\"\n        :cssClass=\"\n          !isEditMode\n            ? `brand-border-top-form-group last-form-section`\n            : `brand-border-top-form-group`\n        \"\n      >\n        <dx-simple-item\n          data-field=\"activeStatus\"\n          editorType=\"dxRadioGroup\"\n          value-expr=\"id\"\n          :editorOptions=\"{\n            ...editorOptions.activeStatuses,\n            layout: 'horizontal',\n          }\"\n        >\n          <dx-label text=\"Active Status\" />\n          <dx-required-rule\n            message=\"Active status is required\"\n          /> </dx-simple-item\n      ></dx-item>\n\n      <dx-item\n        item-type=\"group\"\n        caption=\"Logo\"\n        :col-count=\"4\"\n        :col-span=\"2\"\n        css-class=\"logo-section brand-border-top-form-group last-form-section\"\n        v-if=\"isEditMode\"\n      >\n        <dx-simple-item data-field=\"logo\">\n          <dx-label\n            text=\"Please upload a suitable logo to appear on your surveys\"\n          />\n\n          <template #default>\n            <div>\n              <DxLoadPanel\n                :visible=\"isUploadingLogo\"\n                :show-indicator=\"true\"\n                :show-pane=\"true\"\n                :shading=\"true\"\n                :hide-on-outside-click=\"false\"\n                shading-color=\"rgba(0,0,0,0.1)\"\n                :position=\"{of: '#upload-container-id'}\"\n              />\n              <div\n                class=\"upload-container\"\n                id=\"upload-container-id\"\n                :key=\"logoRefreshKey\"\n              >\n                <i class=\"fas fa-upload\"></i>\n                <dx-file-uploader\n                  :multiple=\"false\"\n                  name=\"file\"\n                  uploadMode=\"instantly\"\n                  accept=\"image/*\"\n                  selectButtonText=\"Select logo\"\n                  labelText=\"or Drop logo here\"\n                  :allowedFileExtensions=\"allowedFileExtensions\"\n                  :maxFileSize=\"maxFileUploadSize\"\n                  invalidFileExtensionMessage=\"File Type is not allowed\"\n                  invalidMaxFileSizeMessage=\"File is too large. Max limit: 100kb\"\n                  @value-changed=\"attachmentsValueChanged\"\n                  :upload-url=\"uploadUrl\"\n                  :upload-headers=\"getUploadHeaders()\"\n                  :allowCancelling=\"true\"\n                  @uploaded=\"onLogoUploadSuccessful\"\n                  @upload-started=\"onLogoUploadStarted\"\n                  @upload-error=\"onLogoUploadError\"\n                  :showFileList=\"true\"\n                >\n                </dx-file-uploader>\n              </div>\n            </div>\n          </template>\n        </dx-simple-item>\n        <dx-simple-item>\n          <dx-label :text=\"orgLogo === null ? `` : `Preview`\" />\n          <template #default>\n            <div\n              class=\"org-logo-container\"\n              v-if=\"orgLogo\"\n              :key=\"logoRefreshKey + 1\"\n            >\n              <img\n                :src=\"orgLogo\"\n                alt=\"logo\"\n              />\n            </div>\n          </template>\n        </dx-simple-item>\n      </dx-item>\n    </dx-form>\n\n    <dx-tooltip\n      showEvent=\"dxhoverstart\"\n      hideEvent=\"dxhoverend\"\n      position=\"top\"\n      target=\"label[class*='statusTooltip']\"\n      :visible.sync=\"isActiveStatusTooltipVisible\"\n    >\n      <div class=\"tooltip\">\n        Deactivating this organisation will also disable all user accounts that\n        are solely associated with it.\n      </div>\n    </dx-tooltip>\n    <dx-tooltip\n      showEvent=\"dxhoverstart\"\n      hideEvent=\"dxhoverend\"\n      position=\"top\"\n      target=\"label[class*='logoTooltip']\"\n      :visible.sync=\"isLogoTooltipVisible\"\n    >\n      <div class=\"tooltip\">\n        Allowed file extensions: .jpg, .jpeg, .png. Maximum file size: 100kb.\n      </div>\n    </dx-tooltip>\n    <dx-tooltip\n      showEvent=\"dxhoverstart\"\n      hideEvent=\"dxhoverend\"\n      position=\"top\"\n      target=\"label[class*='knownAsTooltip']\"\n      :visible.sync=\"isKnownAsTooltipVisible\"\n    >\n      <div class=\"tooltip\">\n        <div>\n          This is the name that will appear on the surveys issued to your\n          audiences - please ensure\n        </div>\n        <div>\n          this field is populated with an organisation name that your audiences\n          will be familiar with.\n        </div>\n      </div>\n    </dx-tooltip>\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {\n  DxAsyncRule,\n  DxForm,\n  DxItem,\n  DxLabel,\n  DxRequiredRule,\n  DxSimpleItem,\n  DxStringLengthRule,\n  DxPatternRule,\n} from \"devextreme-vue/form\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport lookup from \"@/utils/lookup-source-provider\";\nimport checkNameAvailability from \"@/mixins/check-name-availability\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\nimport {LookupCodes} from \"../../common/constants\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {orgNpoStatuses, orgActiveStatuses, logoUploadConfig} from \"../../common/constants\";\nimport {DxTooltip} from \"devextreme-vue\";\nimport {DxFileUploader} from \"devextreme-vue/file-uploader\";\nimport authService from \"../../components/api-authorization/AuthorizeService\";\n\nlet defaultDropDownOptions = {\n  displayExpr: \"name\",\n  valueExpr: \"id\",\n  stylingMode: \"outlined\",\n  applyValueMode: \"instantly\",\n};\n\nconst {VUE_APP_API_HOSTNAME} = process.env;\n\nexport default {\n  components: {\n    DxAsyncRule,\n    DxForm,\n    DxLabel,\n    DxLoadPanel,\n    DxItem,\n    DxRequiredRule,\n    DxSimpleItem,\n    DxStringLengthRule,\n    DxPatternRule,\n    DxTooltip,\n    DxFileUploader,\n  },\n  mixins: [checkNameAvailability],\n  data() {\n    return {\n      code: \"\",\n      refPostCode: \"computeRef\",\n      maxLength: {\n        name: 75,\n        address: 255,\n        postcode: 10,\n      },\n      savedSuccessfully: false,\n      discplinesDataSource: new DataSource({\n        store: new CustomStore({\n          loadMode: \"raw\",\n          key: \"id\",\n          load: this.loadDisciplines,\n        }),\n      }),\n\n      upperAuthoritiesDataSource: new DataSource({\n        store: new CustomStore({\n          loadMode: \"raw\",\n          key: \"id\",\n          load: this.loadUpperAuthorities,\n        }),\n      }),\n      constituenciesDataSource: new DataSource({\n        store: new CustomStore({\n          loadMode: \"raw\",\n          key: \"id\",\n          load: this.loadConstituencies,\n        }),\n      }),\n      postCodeRegex:\n        /^([A-Za-z][A-HJ-Ya-hj-y]?[0-9][A-Z0-9a-z0-9]? ?[0-9][A-Za-z]{2}|GIR ?0A{2})$/,\n      editorOptions: {\n        npoStatus: {\n          dataSource: [\n            orgNpoStatuses.Npo,\n            orgNpoStatuses.Ipso,\n            orgNpoStatuses.Cpp,\n            orgNpoStatuses.Other,\n          ],\n          ...defaultDropDownOptions,\n        },\n        // TODO: Fix this.\n        discipline: {\n          ...defaultDropDownOptions,\n        },\n        organisationalTemplates: {\n          ...defaultDropDownOptions,\n        },\n        activeStatuses: {\n          ...defaultDropDownOptions,\n          dataSource: [orgActiveStatuses.active, orgActiveStatuses.disabled],\n          disabled: !this.$can(\n            this.userAction,\n            this.$subjects.organisation.subject,\n            this.$subjects.organisation.fields.activeStatus,\n          ),\n        },\n        regions: {\n          ...defaultDropDownOptions,\n          ...lookup.get(LookupCodes.Region),\n        },\n        upperAuths: {\n          ...defaultDropDownOptions,\n          searchEnabled: true,\n        },\n        constituencies: {\n          ...defaultDropDownOptions,\n          searchEnabled: true,\n        },\n        exemptFromSurveying: {\n          ...defaultDropDownOptions,\n          ...lookup.get(LookupCodes.ExemptFromSurveying),\n          disabled: !this.$can(\n            this.userAction,\n            this.$subjects.organisation.subject,\n            this.$subjects.organisation.fields.exemptFromSurveying,\n          ),\n        },\n        aceArea: {\n          ...defaultDropDownOptions,\n          ...lookup.get(LookupCodes.AceArea),\n        },\n        logoFile: {\n          ...defaultDropDownOptions,\n        },\n      },\n      isActiveStatusTooltipVisible: false,\n      isKnownAsTooltipVisible: false,\n      isLogoTooltipVisible: false,\n      allowedFileExtensions: logoUploadConfig.fileExtensions,\n      maxFileUploadSize: logoUploadConfig.maxFileUploadSize,\n      validCharacters: /^[\\p{L}+\\d\\s._-]+\\.[\\w]+/u,\n      files: [],\n      authTokenTimeout: null,\n      authToken: null,\n      logoRefreshKey: 0,\n      isUploadingLogo: false,\n    };\n  },\n  computed: {\n    ...mapState(\"organisations\", [\"orgDetails\", \"orgLogo\"]),\n    ...mapGetters(\"organisations\", [\"isProcessing\"]),\n    computeRef: function () {\n      return this.$refs[this.refPostCode].instance;\n    },\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    uploadUrl() {\n      return `${VUE_APP_API_HOSTNAME}/organisations/${this.orgDetails.id}/logo`;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"organisations\", {\n      fetchOrgDetails: \"fetchOrgDetails\",\n      clearOrgDetails: \"clear\",\n      getLogo: \"getOrgLogo\",\n    }),\n\n    divClick() {\n      const e = document.getElementsByName(\"postcode\");\n      e[0].classList.add(\"codeinput\");\n      e[0].style.textTransform = \"uppercase\";\n    },\n    async checkNameAvailabilityCall(params) {\n      return await this.checkNameAvailability(\n        \"organisations/checknameavailability\",\n        {name: params.value, id: this.orgDetails ? this.orgDetails.id : 0},\n      );\n    },\n    async loadDisciplines() {\n      let response = await this.$http.get(`disciplines`);\n      return response.data.data;\n    },\n\n    async loadUpperAuthorities() {\n      let response = await this.$http.get(`upperAuthorities`);\n      return response.data.data;\n    },\n    async loadConstituencies() {\n      let response = await this.$http.get(`constituencies`);\n      return response.data.data;\n    },\n\n    setUnsavedChanges(e) {\n      this.unsavedChanges = true;\n      if (e.dataField === \"activeStatus\" && isNotEmpty(e.value)) {\n        if (e.value === orgActiveStatuses.disabled.id) {\n          this.isActiveStatusTooltipVisible = true;\n        }\n      }\n    },\n    attachmentsValueChanged(e) {\n      this.files = e.value;\n\n      for (let index = 0; index < e.value.length; index++) {\n        let fileName = e.value[index].name;\n\n        if (this.validCharacters.test(fileName)) continue;\n        if (!e.component._files[index].isValid()) {\n          e.component._files[index].$statusMessage.append(\n            \"File Name is invalid\",\n          );\n        } else {\n          e.component._files[index].$statusMessage.text(\"File Name is invalid\");\n          e.component._files[index].$statusMessage.addClass(\"error-text\");\n          e.component._files[index].isValid = () => false;\n        }\n      }\n    },\n    getUploadHeaders() {\n      let headers = {\n        \"Access-Control-Allow-Origin\": \"*\",\n      };\n      if (this.authToken) {\n        headers.Authorization = `Bearer ${this.authToken}`;\n      }\n      return headers;\n    },\n    async getToken() {\n      const result = await authService.getAccessToken();\n      if (result) {\n        this.authToken = result;\n        this.authTokenTimeout = setTimeout(this.getToken, 30000);\n      }\n    },\n    onLogoUploadStarted() {\n      this.isUploadingLogo = true;\n    },\n    onLogoUploadError() {\n      this.isUploadingLogo = false;\n    },\n    onLogoUploadSuccessful() {\n      this.getLogo(this.orgDetails.id)\n        .then(() => {\n          this.isUploadingLogo = false;\n          this.logoRefreshKey++;\n          this.addTooltips();\n        })\n        .catch((err) => {\n          this.notifyError(\n            `Unable to load organisation logo. ${fromResponse(err)}`,\n          );\n        });\n    },\n    addTooltips() {\n      document\n        .querySelector(\"label[for*='activeStatus']\")\n        .classList.add(\"tooltip\", \"statusTooltip\");\n\n      if (this.isEditMode) {\n        document\n          .querySelector(\"label[for*='logo']\")\n          .classList.add(\"tooltip\", \"logoTooltip\");\n      }\n      document\n        .querySelector(\"label[for*='knownAs']\")\n        .classList.add(\"tooltip\", \"knownAsTooltip\");\n    },\n  },\n\n  async mounted() {\n    this.getToken();\n    if (!this.isEditMode) {\n      this.orgDetails.activeStatus = orgActiveStatuses.active.id;\n\n      if (\n        !this.$can(\n          this.userAction,\n          this.$subjects.organisation.subject,\n          this.$subjects.organisation.fields.exemptFromSurveying,\n        )\n      ) {\n        this.orgDetails.exemptFromSurveyingId = 70;\n      }\n    }\n\n    if (this.isEditMode) {\n      if (isNotEmpty(this.orgDetails.logoBlob)) {\n        this.getLogo(this.orgDetails.id);\n      }\n    }\n    this.addTooltips();\n  },\n\n  created() {},\n  beforeDestroy() {\n    this.clearOrgDetails();\n    clearTimeout(this.authTokenTimeout);\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../../themes/custom-variables.scss\";\n\n.statusTooltip {\n  display: inline-block !important;\n}\n\n.logoTooltip {\n  display: inline-block !important;\n}\n\n.codeinput {\n  text-transform: uppercase;\n}\n\n.logo-section {\n  .dx-fileuploader-wrapper {\n    border-radius: 5px;\n  }\n\n  .upload-container .dx-fileuploader-files-container {\n    padding: unset;\n  }\n\n  .upload-container .dx-fileuploader-input-wrapper {\n    background: rgba(183, 183, 183, 0.1) !important;\n  }\n\n  .upload-container {\n    padding-bottom: unset;\n  }\n\n  .dx-item-content {\n    justify-content: flex-end;\n  }\n}\n\n.org-logo-container {\n  display: flex;\n  flex-direction: row;\n  border-radius: 5px;\n  align-content: center;\n  justify-content: center;\n  align-items: center;\n  border: 1px solid $grey3;\n  height: 173px;\n\n  img {\n    object-fit: contain;\n    height: 80%;\n    width: 80%;\n  }\n}\n\n.page-title-container {\n  margin-left: 0px !important;\n}\n\n.page-subtitle {\n  font: $base-font-family-medium !important;\n  font-size: $font-size-subheading !important;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-details.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./organisation-details.vue?vue&type=template&id=2d543179&scoped=true\"\nimport script from \"./organisation-details.vue?vue&type=script&lang=js\"\nexport * from \"./organisation-details.vue?vue&type=script&lang=js\"\nimport style0 from \"./organisation-details.vue?vue&type=style&index=0&id=2d543179&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2d543179\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isEditMode)?_c('div',{staticClass:\"org-templates-grid-container\"},[_c('DxDataGrid',{ref:_vm.orgTemplatesListRefKey,staticClass:\"dx-card thin-column-chooser multi-select-grid-property no-active-status-list\",attrs:{\"show-borders\":false,\"data-source\":_vm.organisationalTemplatesDataSource,\"remote-operations\":true,\"noDataText\":_vm.noDataText,\"key-expr\":\"id\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true},scopedSlots:_vm._u([{key:\"period\",fn:function(cell){return [_c('div',[_vm._v(\"\\n        \"+_vm._s(_vm.formatAvailableFromTo(cell.data.data))+\"\\n      \")])]}},{key:\"actions-template\",fn:function(cell){return [_c('div',{staticClass:\"delete-org-template-container\"},[(\n            cell.data.data.numberOfSurveysUsingTemplate === 0 &&\n            _vm.$can(_vm.userAction, _vm.$subjects.organisation.subject)\n          )?_c('div',[_c('dx-button',{staticClass:\"btn-delete delete-org-template-button\",attrs:{\"type\":\"default\",\"icon\":\"trash\",\"hint\":\"Delete Survey Template\"},on:{\"click\":function($event){return _vm.onDeleteTemplateClicked(cell.data.data)}}})],1):_vm._e()])]}}],null,false,2663697585)},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxSearchPanel',{attrs:{\"group-index\":0,\"visible\":true,\"width\":300}}),_c('DxExport',{attrs:{\"enabled\":false,\"group-index\":1}}),_c('DxColumnChooser',{attrs:{\"enabled\":true,\"mode\":\"dragAndDrop\"}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}}),_c('DxRemoteOperations',{attrs:{\"filtering\":false,\"paging\":false,\"sorting\":false,\"summary\":false,\"grouping\":false,\"group-paging\":false}})],1),_c('ConfirmDeletePopup',{attrs:{\"entityName\":_vm.currentDeleteSurveyTemplateName,\"titleName\":\"Survey Template\",\"onDelete\":_vm.deleteSurveyTemplateFunction,\"popupVisible\":_vm.surveyTemplateDeletePopupVisible},on:{\"onPopupClosed\":function($event){_vm.surveyTemplateDeletePopupVisible = false}}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const orgTemplatesListColDefs = [\n  {\n    dataField: \"id\",\n    dataType: \"number\",\n    visible: false,\n    showInColumnChooser: false,\n  },\n  {\n    dataField: \"name\",\n    caption: \"Name\",\n    dataType: \"string\",\n    allowHiding: false,\n  },\n  {\n    dataField: \"description\",\n    caption: \"Description\",\n    dataType: \"string\",\n    allowHiding: false,\n  },\n  {\n    dataField: \"numberOfQuestions\",\n    caption: \"Number of questions\",\n    dataType: \"int\",\n  },\n  {\n    dataField: \"createdDate\",\n    caption: \"Created Date\",\n    dataType: \"date\",\n    format: \"dd/MM/yyyy\",\n    sortOrder: \"desc\",\n  },\n  {\n    dataField: \"createdBy\",\n    dataType: \"string\",\n    visible: false,\n    showInColumnChooser: false,\n  },\n  {\n    dataField: \"numberOfSurveysUsingTemplate\",\n    caption: \"Number of surveys using the template\",\n    dataType: \"int\",\n  },\n  {\n    caption: \"Available period\",\n    cellTemplate: \"period\",\n  },\n  {\n    caption: \"\",\n    cellTemplate: \"actions-template\",\n    width: 190,\n    cssClass: \"text-center\",\n  },\n];\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('dx-popup',{attrs:{\"visible\":_vm.popupVisible,\"drag-enabled\":true,\"hide-on-outside-click\":true,\"show-title\":true,\"max-width\":700,\"height\":\"auto\",\"title\":`Delete ${_vm.titleMessage}`,\"onHiding\":_vm.closePopup},on:{\"update:visible\":function($event){_vm.popupVisible=$event}}},[_c('div',[_c('div',{staticClass:\"confirm-message-container\"},[_c('p',[_vm._v(\"\\n        Please confirm that you would like to delete '\"+_vm._s(_vm.deleteMessage)+\"'.\\n      \")]),_c('p',[_vm._v(\"\\n        This is permanent and cannot be undone.\\n      \")])]),_c('div',{staticClass:\"actions-container\"},[_c('dx-button',{staticClass:\"btn-primary btn-delete\",attrs:{\"text\":\"Delete\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onDelete}}),_c('dx-button',{staticClass:\"btn-primary btn-secondary\",attrs:{\"text\":\"Cancel\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.closePopup}})],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <dx-popup\n      :visible.sync=\"popupVisible\"\n      :drag-enabled=\"true\"\n      :hide-on-outside-click=\"true\"\n      :show-title=\"true\"\n      :max-width=\"700\"\n      height=\"auto\"\n      :title=\"`Delete ${titleMessage}`\"\n      :onHiding=\"closePopup\"\n    >\n\n      <div>\n        <div class=\"confirm-message-container\">\n        <p>\n          Please confirm that you would like to delete '{{deleteMessage}}'.\n        </p>\n\n        <p>\n          This is permanent and cannot be undone.\n        </p>\n\n      </div>\n\n        <div class=\"actions-container\">\n\n        <dx-button\n            text=\"Delete\"\n            type=\"default\"\n            class=\"btn-primary btn-delete\"\n            styling-mode=\"contained\"\n            :on-click=\"onDelete\"\n        ></dx-button>\n\n        <dx-button\n            text=\"Cancel\"\n            type=\"default\"\n            class=\"btn-primary btn-secondary\"\n            styling-mode=\"contained\"\n            :on-click=\"closePopup\"\n        ></dx-button>\n        </div>\n\n      </div>\n    </dx-popup>\n  </div>\n</template>\n\n<script>\nimport {DxButton} from \"devextreme-vue/button\";\nimport {DxPopup} from \"devextreme-vue/popup\";\nimport {isNotEmpty}  from \"../common/helperFunctions\";\n\nexport default {\n  components: {\n    DxButton,\n    DxPopup,\n  },\n  props: [\"popupVisible\", \"entityName\", \"titleName\", \"onDelete\"],\n  computed: {\n    deleteMessage: function() {\n        return isNotEmpty(this.entityName) ? this.entityName : '';\n    },\n    titleMessage: function() {\n        return isNotEmpty(this.titleName) ? this.titleName : '';\n    }\n  },\n  methods: {\n    closePopup() {\n        this.$emit('onPopupClosed');\n    }\n  },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n\n.dx-toolbar-label {\n\n  .dx-toolbar-item-content {\n    div {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  font: 500 16px !important;\n  font-size: $font-size-heading !important;\n  letter-spacing: 0 !important;\n  /* font-weight: bold; */\n  /* width: 100%; */\n}\n  }\n\n}\n\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-delete-popup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-delete-popup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./confirm-delete-popup.vue?vue&type=template&id=55cecff1&scoped=true\"\nimport script from \"./confirm-delete-popup.vue?vue&type=script&lang=js\"\nexport * from \"./confirm-delete-popup.vue?vue&type=script&lang=js\"\nimport style0 from \"./confirm-delete-popup.vue?vue&type=style&index=0&id=55cecff1&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"55cecff1\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div\n    class=\"org-templates-grid-container\"\n    v-if=\"isEditMode\"\n  >\n    <DxDataGrid\n      class=\"dx-card thin-column-chooser multi-select-grid-property no-active-status-list\"\n      :show-borders=\"false\"\n      :data-source=\"organisationalTemplatesDataSource\"\n      :remote-operations=\"true\"\n      :noDataText=\"noDataText\"\n      key-expr=\"id\"\n      :columnMinWidth=\"25\"\n      :columnAutoWidth=\"true\"\n      :columns=\"columns\"\n      :allow-column-reordering=\"true\"\n      :ref=\"orgTemplatesListRefKey\"\n    >\n      <dx-paging :page-size=\"10\" />\n      <dx-pager\n        :allowed-page-sizes=\"[5, 10, 25]\"\n        :show-page-size-selector=\"true\"\n        :show-info=\"true\"\n      />\n      <dx-filter-row :visible=\"true\" />\n      <DxHeaderFilter\n        :visible=\"true\"\n        :allowSearch=\"true\"\n      />\n\n      <DxSearchPanel\n        :group-index=\"0\"\n        :visible=\"true\"\n        :width=\"300\"\n      />\n      <DxExport\n        :enabled=\"false\"\n        :group-index=\"1\"\n      />\n      <DxColumnChooser\n        :enabled=\"true\"\n        mode=\"dragAndDrop\"\n      />\n      <DxColumnFixing :enabled=\"true\" />\n      <DxRemoteOperations\n        :filtering=\"false\"\n        :paging=\"false\"\n        :sorting=\"false\"\n        :summary=\"false\"\n        :grouping=\"false\"\n        :group-paging=\"false\"\n      />\n\n      <template #period=\"cell\">\n        <div>\n          {{ formatAvailableFromTo(cell.data.data) }}\n        </div>\n      </template>\n\n      <template #actions-template=\"cell\">\n        <div class=\"delete-org-template-container\">\n          <div\n            v-if=\"\n              cell.data.data.numberOfSurveysUsingTemplate === 0 &&\n              $can(userAction, $subjects.organisation.subject)\n            \"\n          >\n            <dx-button\n              @click=\"onDeleteTemplateClicked(cell.data.data)\"\n              type=\"default\"\n              class=\"btn-delete delete-org-template-button\"\n              icon=\"trash\"\n              hint=\"Delete Survey Template\"\n            />\n          </div>\n        </div>\n      </template>\n    </DxDataGrid>\n    <ConfirmDeletePopup\n      :entityName=\"currentDeleteSurveyTemplateName\"\n      titleName=\"Survey Template\"\n      :onDelete=\"deleteSurveyTemplateFunction\"\n      :popupVisible=\"surveyTemplateDeletePopupVisible\"\n      @onPopupClosed=\"surveyTemplateDeletePopupVisible = false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {orgTemplatesListColDefs} from \"../../components/survey-templates/org-templates-list-col-defs\";\nimport ConfirmDeletePopup from \"../confirm-delete-popup.vue\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxExport,\n  DxColumnChooser,\n  DxRemoteOperations,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n  DxSearchPanel,\n} from \"devextreme-vue/data-grid\";\n\nexport default {\n  components: {\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxExport,\n    DxColumnChooser,\n    DxRemoteOperations,\n    DxPaging,\n    DxSearchPanel,\n    ConfirmDeletePopup,\n    DxButton,\n  },\n  data() {\n    return {\n      organisationalTemplatesDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrganisationalTemplates,\n        }),\n        pageSize: 25,\n        sort: {selector: \"name\", desc: false},\n      }),\n\n      orgTemplatesListRefKey: \"orgTemplatesListRefKey\",\n      columns: orgTemplatesListColDefs,\n      noDataText: \"No data to display\",\n      currentDeleteSurveyTemplateName: \"\",\n      surveyTemplateDeletePopupVisible: false,\n      surveyTemplateToDelete: null,\n    };\n  },\n  computed: {\n    ...mapState(\"organisations\", [\"orgDetails\"]),\n    ...mapGetters(\"organisations\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    organisationId: function () {\n      return this.$route.params.id;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"surveys\", {\n      deleteSurveyTemplate: \"deleteSurveyTemplate\",\n    }),\n    async loadOrganisationalTemplates() {\n      let response = await this.$http.get(\n        `organisations/survey-templates/${this.organisationId}`,\n      );\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    formatAvailableFromTo(template) {\n      let availableFrom = template.availableFrom;\n      let availableTo = template.availableTo;\n\n      if (!availableFrom || !availableTo) {\n        return \"-\";\n      }\n\n      const fromDate = new Date(availableFrom);\n      const toDate = new Date(availableTo);\n\n      const options = {day: \"numeric\", month: \"short\", year: \"numeric\"};\n      const fromDateString = fromDate.toLocaleDateString(\"en-US\", options);\n      const toDateString = toDate.toLocaleDateString(\"en-US\", options);\n\n      return `${fromDateString} - ${toDateString}`;\n    },\n    onDeleteTemplateClicked(surveyTemplate) {\n      this.surveyTemplateToDelete = surveyTemplate.id;\n      this.currentDeleteSurveyTemplateName = isNotEmpty(surveyTemplate.name)\n        ? surveyTemplate.name\n        : \"\";\n      this.surveyTemplateDeletePopupVisible = true;\n    },\n    async deleteSurveyTemplateFunction() {\n      try {\n        await this.deleteSurveyTemplate(this.surveyTemplateToDelete);\n        this.$refs.orgTemplatesListRefKey.instance.refresh(); // As using the array from state and not a DataSource this needs manually refreshed to reflect delete.\n        this.notifySuccess(`Organisational Template successfully deleted`);\n      } catch (err) {\n        this.notifyError(fromResponse(err));\n      } finally {\n        this.surveyTemplateDeletePopupVisible = false;\n      }\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../../themes/custom-variables.scss\";\n\n.org-templates-grid-container {\n  width: 100%;\n  flex-shrink: 1;\n}\n\n.page-title-container {\n  margin-left: 0px !important;\n}\n\n.page-subtitle {\n  font: $base-font-family-medium !important;\n  font-size: $font-size-subheading !important;\n}\n\n.delete-org-template-container {\n  text-align: center;\n}\n\n.delete-org-template-button {\n  margin-left: 10px;\n  width: 20px;\n  float: left;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-templates.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-templates.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./organisation-templates.vue?vue&type=template&id=342ebdcf&scoped=true\"\nimport script from \"./organisation-templates.vue?vue&type=script&lang=js\"\nexport * from \"./organisation-templates.vue?vue&type=script&lang=js\"\nimport style0 from \"./organisation-templates.vue?vue&type=style&index=0&id=342ebdcf&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"342ebdcf\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.$can(_vm.userAction, _vm.$subjects.organisation.subject))?_c('div',{staticClass:\"toolbar-text-container\"},[_c('div',{staticClass:\"assign-button-container\"},[(_vm.orgDetails && _vm.$can(_vm.userAction, _vm.$subjects.organisation.subject))?_c('dx-button',{staticClass:\"btn-secondary add-provider-button\",attrs:{\"type\":\"default\"},on:{\"click\":_vm.onAssignProviderRefClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" Add Ticketing Provider\\n      \")]):_vm._e()],1)]):_vm._e(),_c('div',{key:_vm.dataGridRefreshKey},[_c('dx-data-grid',{ref:_vm.dataGridRef,staticClass:\"thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.orgDetails.organisationBoxOffices,\"noDataText\":_vm.noDataText,\"key-expr\":\"boxOfficeProviderId\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true},scopedSlots:_vm._u([{key:\"actions-template\",fn:function(cell){return [_c('div',{staticClass:\"provider-action-buttuons-template-container\"},[(_vm.$can('create', _vm.$subjects.organisation.subject))?_c('div',[_c('dx-button',{staticClass:\"btn-create edit-provider-button\",attrs:{\"disabled\":!_vm.$can(_vm.userAction, _vm.$subjects.organisation.subject),\"type\":\"default\",\"icon\":\"rename\",\"hint\":\"Edit\"},on:{\"click\":function($event){return _vm.onEditProviderRefClicked(cell.data.data)}}}),_c('dx-button',{staticClass:\"btn-delete\",attrs:{\"disabled\":!_vm.$can(_vm.userAction, _vm.$subjects.organisation.subject),\"type\":\"default\",\"icon\":\"trash\",\"hint\":\"Delete\"},on:{\"click\":function($event){return _vm.onDeleteProviderRefClicked(cell.data.data)}}})],1):_vm._e()])]}}])},[_c('dx-paging',{attrs:{\"page-size\":5}}),_c('dx-pager',{attrs:{\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}})],1)],1),_c('dx-popup',{attrs:{\"visible\":_vm.popupVisible,\"drag-enabled\":false,\"hide-on-outside-click\":true,\"show-title\":true,\"max-width\":700,\"height\":\"auto\",\"title\":\"Assign Ticketing Provider\",\"onHiding\":_vm.onPopupClosed},on:{\"update:visible\":function($event){_vm.popupVisible=$event}}},[_c('div',[_c('p',[_vm._v(\"\\n        Search for the ticketing provider you would like to\\n        \"+_vm._s(_vm.isEditBO ? `update` : `add`)+\" from the dropdown below:\\n      \")]),_c('dx-form',{attrs:{\"form-data\":_vm.boxOfficeProviderDetails,\"col-count\":1,\"show-validation-summary\":true,\"scrolling-enabled\":false,\"validation-group\":\"boxOfficeProviderDetailsValid\"},scopedSlots:_vm._u([{key:\"formbuttons\",fn:function(){return [_c('div',[_c('dx-button',{staticClass:\"btn-secondary cancel-provider-button\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\",\"validation-group\":\"boxOfficeProviderDetailsValid\",\"on-click\":_vm.closePopup}},[_c('i',{staticClass:\"fas fa-times\"}),_vm._v(\" Cancel\")]),_c('dx-button',{staticClass:\"btn-primary add-update-provider-button\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\",\"validation-group\":\"boxOfficeProviderDetailsValid\",\"on-click\":_vm.onAddEditProviderRefClicked}},[_c('i',{class:_vm.isEditBO ? `fas fa-pen` : `fas fa-plus`}),_vm._v(_vm._s(_vm.isEditBO ? `Update` : `Add`))])],1)]},proxy:true}])},[_c('dx-item',{attrs:{\"item-type\":\"group\",\"col-count\":1,\"col-span\":1}},[_c('dx-simple-item',{attrs:{\"data-field\":\"boxOfficeProvider\",\"editorType\":\"dxLookup\",\"editorOptions\":{\n              ..._vm.editorOptions.boxOfficeProvider,\n              dataSource: _vm.boxOfficeProviderDataSource,\n              displayExpr: 'name',\n              valueExpr: 'this',\n              searchEnabled: true,\n              searchMode: 'contains',\n              searchExpr: ['name'],\n              placeholder: 'Select...',\n              onOpened: _vm.onBOProviderDropDownOpened,\n              deferRendering: false,\n            }}},[_c('dx-label',{attrs:{\"text\":\"Ticketing Provider\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Ticketing Provider is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"providerOrgRef\",\"help-text\":\"This is a unique identifer used to link the provider with your organisation. Guidance on reaching out to your ticketing provider for this value can be found in the training tab.\"}},[_c('dx-label',{attrs:{\"text\":\"Reference\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.providerOrgRef,\"message\":`Reference is too long. Maximum allowed length is ${_vm.maxLength.providerOrgRef} characters`}}),_c('dx-required-rule',{attrs:{\"message\":\"Reference is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"providerKey\",\"help-text\":\"Optional. The guidance will specifically mention if this is required for your provider.\"}},[_c('dx-label',{attrs:{\"text\":\"Provider Key\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.providerKey,\"message\":`Provider Key is too long. Maximum allowed length is ${_vm.maxLength.providerKey} characters`}})],1)],1),_c('DxSimpleItem',{attrs:{\"col-count\":1,\"col-span\":2,\"template\":\"formbuttons\"}})],1)],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const createModel = () => {\n  return [\n    {\n      dataField: \"id\",\n      dataType: \"number\",\n      visible: false,\n      showInColumnChooser: false,\n    },\n    {\n      dataField: \"name\",\n      caption: \"Ticketing Provider Name\",\n      dataType: \"string\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"providerOrgRef\",\n      caption: \"Reference\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"providerKey\",\n      caption: \"Provider Key\",\n      dataType: \"string\",\n    },\n    {\n      caption: \"\",\n      cellTemplate: \"actions-template\",\n      width: 190,\n      cssClass: \"text-center\",\n    },\n  ];\n};\n","<template>\n  <div>\n    <div\n      class=\"toolbar-text-container\"\n      v-if=\"$can(userAction, $subjects.organisation.subject)\"\n    >\n      <div class=\"assign-button-container\">\n        <dx-button\n          v-if=\"orgDetails && $can(userAction, $subjects.organisation.subject)\"\n          type=\"default\"\n          class=\"btn-secondary add-provider-button\"\n          @click=\"onAssignProviderRefClicked\"\n          ><i class=\"fas fa-plus\" /> Add Ticketing Provider\n        </dx-button>\n      </div>\n    </div>\n    <div :key=\"dataGridRefreshKey\">\n      <dx-data-grid\n        class=\"thin-column-chooser multi-select-grid-property\"\n        :show-borders=\"false\"\n        :data-source=\"orgDetails.organisationBoxOffices\"\n        :noDataText=\"noDataText\"\n        key-expr=\"boxOfficeProviderId\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"true\"\n        :ref=\"dataGridRef\"\n      >\n        <dx-paging :page-size=\"5\" />\n        <dx-pager\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <dx-filter-row :visible=\"true\" />\n        <DxHeaderFilter\n          :visible=\"true\"\n          :allowSearch=\"true\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n        <template #actions-template=\"cell\">\n          <div class=\"provider-action-buttuons-template-container\">\n            <div v-if=\"$can('create', $subjects.organisation.subject)\">\n              <dx-button\n                @click=\"onEditProviderRefClicked(cell.data.data)\"\n                :disabled=\"!$can(userAction, $subjects.organisation.subject)\"\n                type=\"default\"\n                class=\"btn-create edit-provider-button\"\n                icon=\"rename\"\n                hint=\"Edit\"\n              />\n              <dx-button\n                @click=\"onDeleteProviderRefClicked(cell.data.data)\"\n                :disabled=\"!$can(userAction, $subjects.organisation.subject)\"\n                type=\"default\"\n                class=\"btn-delete\"\n                icon=\"trash\"\n                hint=\"Delete\"\n              />\n            </div>\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n    <dx-popup\n      :visible.sync=\"popupVisible\"\n      :drag-enabled=\"false\"\n      :hide-on-outside-click=\"true\"\n      :show-title=\"true\"\n      :max-width=\"700\"\n      height=\"auto\"\n      title=\"Assign Ticketing Provider\"\n      :onHiding=\"onPopupClosed\"\n    >\n      <div>\n        <p>\n          Search for the ticketing provider you would like to\n          {{ isEditBO ? `update` : `add` }} from the dropdown below:\n        </p>\n        <dx-form\n          :form-data=\"boxOfficeProviderDetails\"\n          :col-count=\"1\"\n          :show-validation-summary=\"true\"\n          :scrolling-enabled=\"false\"\n          validation-group=\"boxOfficeProviderDetailsValid\"\n        >\n          <dx-item\n            item-type=\"group\"\n            :col-count=\"1\"\n            :col-span=\"1\"\n          >\n            <dx-simple-item\n              data-field=\"boxOfficeProvider\"\n              editorType=\"dxLookup\"\n              :editorOptions=\"{\n                ...editorOptions.boxOfficeProvider,\n                dataSource: boxOfficeProviderDataSource,\n                displayExpr: 'name',\n                valueExpr: 'this',\n                searchEnabled: true,\n                searchMode: 'contains',\n                searchExpr: ['name'],\n                placeholder: 'Select...',\n                onOpened: onBOProviderDropDownOpened,\n                deferRendering: false,\n              }\"\n            >\n              <dx-label text=\"Ticketing Provider\" />\n              <dx-required-rule message=\"Ticketing Provider is required\" />\n            </dx-simple-item>\n\n            <dx-simple-item data-field=\"providerOrgRef\"\n            help-text=\"This is a unique identifer used to link the provider with your organisation. Guidance on reaching out to your ticketing provider for this value can be found in the training tab.\">\n              <dx-label text=\"Reference\"/>\n             <dx-string-length-rule\n                :max=\"maxLength.providerOrgRef\"\n                :message=\"`Reference is too long. Maximum allowed length is ${maxLength.providerOrgRef} characters`\"\n              />\n              <dx-required-rule message=\"Reference is required\" />\n            </dx-simple-item>\n\n            <dx-simple-item data-field=\"providerKey\"\n            help-text=\"Optional. The guidance will specifically mention if this is required for your provider.\">\n              <dx-label text=\"Provider Key\" />\n              <dx-string-length-rule\n                :max=\"maxLength.providerKey\"\n                :message=\"`Provider Key is too long. Maximum allowed length is ${maxLength.providerKey} characters`\"\n              />\n            </dx-simple-item>\n          </dx-item>\n\n          <DxSimpleItem\n            :col-count=\"1\"\n            :col-span=\"2\"\n            template=\"formbuttons\"\n          />\n\n          <template #formbuttons>\n            <div>\n              <dx-button\n                type=\"default\"\n                class=\"btn-secondary cancel-provider-button\"\n                styling-mode=\"contained\"\n                validation-group=\"boxOfficeProviderDetailsValid\"\n                :on-click=\"closePopup\"\n                ><i class=\"fas fa-times\" /> Cancel</dx-button\n              >\n\n              <dx-button\n                type=\"default\"\n                class=\"btn-primary add-update-provider-button\"\n                styling-mode=\"contained\"\n                validation-group=\"boxOfficeProviderDetailsValid\"\n                :on-click=\"onAddEditProviderRefClicked\"\n                ><i :class=\"isEditBO ? `fas fa-pen` : `fas fa-plus`\" />{{\n                  isEditBO ? `Update` : `Add`\n                }}</dx-button\n              >\n            </div>\n          </template>\n        </dx-form>\n      </div>\n    </dx-popup>\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState, mapGetters, mapMutations} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n} from \"devextreme-vue/data-grid\";\nimport {createModel} from \"./assigned-bo-provider-list-col-defs\";\nimport {\n  DxForm,\n  DxItem,\n  DxLabel,\n  DxRequiredRule,\n  DxStringLengthRule,\n  DxSimpleItem,\n} from \"devextreme-vue/form\";\nimport {DxPopup} from \"devextreme-vue/popup\";\nimport DataSource from \"devextreme/data/data_source\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport {\n  isNotEmpty,\n  configureLookupSearch,\n  objectEquals,\n  deepCopyJson,\n} from \"../../common/helperFunctions\";\n\nlet defaultDropDownOptions = {\n  displayExpr: \"name\",\n  valueExpr: \"this\",\n  stylingMode: \"outlined\",\n  applyValueMode: \"instantly\",\n};\n\nexport default {\n  components: {\n    DxButton,\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxPaging,\n    DxForm,\n    DxItem,\n    DxLabel,\n    DxRequiredRule,\n    DxStringLengthRule,\n    DxSimpleItem,\n    DxPopup,\n  },\n  props: [],\n  data() {\n    return {\n      noDataText: \"No assigned ticketing providers.\",\n      columns: createModel({}),\n      dataGridRef: \"grid\",\n      dataGridRefreshKey: 0,\n      popupVisible: false,\n      boxOfficeProviderDetails: {},\n      editorOptions: {\n        boxOfficeProvider: {\n          ...defaultDropDownOptions,\n        },\n      },\n      boxOfficeProviderDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadBoxOfficeProviders,\n        }),\n      }),\n      maxLength: {\n        providerOrgRef: 75,\n        providerKey: 255,\n      },\n      isEditBO: false,\n      initialBODetails: null,\n    };\n  },\n  computed: {\n    ...mapState(\"organisations\", [\"orgDetails\"]),\n    ...mapGetters(\"organisations\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapMutations(\"organisations\", [\n      \"addBOProviderRef\",\n      \"removeBOProviderRef\",\n    ]),\n    onAssignProviderRefClicked() {\n      this.popupVisible = true;\n    },\n    onPopupClosed() {\n      this.boxOfficeProviderDetails = {};\n      this.isEditBO = false;\n      this.initialBODetails = null;\n    },\n    onDeleteProviderRefClicked(data) {\n      this.removeBOProviderRef({\n        boxOfficeProviderId: data.boxOfficeProviderId,\n        providerOrgRef: data.providerOrgRef,\n        providerKey: data.providerKey,\n      });\n      this.$refs.grid.instance.refresh(); // As using the array from state and not a DataSource this needs manually refreshed to reflect delete.\n    },\n    async onAddEditProviderRefClicked(e) {\n      let result = await e.validationGroup.validate();\n      if (!result.isValid) {\n        this.notifyError(\n          `Unable to ${\n            this.isEditBO ? \"update\" : \"add\"\n          } ticketing provider. A ticketing provider and a reference must be selected.`,\n        );\n        return;\n      }\n      if (!this.validateAssignedProvider(this.isEditBO)) {\n        this.notifyError(\n          `Unable to ${\n            this.isEditBO ? \"update\" : \"add\"\n          } ticketing provider. A record with the same ticketing provider and reference already exists.`,\n        );\n        return;\n      }\n      if (this.isEditBO) {\n        let BODets = deepCopyJson(this.boxOfficeProviderDetails);\n        if (!objectEquals(BODets, this.initialBODetails)) {\n          this.removeBOProviderRef({\n            boxOfficeProviderId: this.initialBODetails.boxOfficeProvider.id,\n            providerOrgRef: this.initialBODetails.providerOrgRef,\n            providerKey: this.initialBODetails.providerKey,\n          });\n\n          this.addBOProviderRef({\n            ...this.boxOfficeProviderDetails.boxOfficeProvider,\n            boxOfficeProviderId:\n              this.boxOfficeProviderDetails.boxOfficeProvider.id,\n            providerOrgRef: this.boxOfficeProviderDetails.providerOrgRef,\n            providerKey: this.boxOfficeProviderDetails.providerKey,\n          });\n        }\n      } else {\n        this.addBOProviderRef({\n          ...this.boxOfficeProviderDetails.boxOfficeProvider,\n          boxOfficeProviderId:\n            this.boxOfficeProviderDetails.boxOfficeProvider.id,\n          providerOrgRef: this.boxOfficeProviderDetails.providerOrgRef,\n          providerKey: this.boxOfficeProviderDetails.providerKey,\n        });\n      }\n\n      this.popupVisible = false;\n      this.$refs.grid.instance.refresh(); // As using the array from state and not a DataSource this needs manually refreshed to reflect delete.\n    },\n    async onEditProviderRefClicked(data) {\n      this.popupVisible = true;\n      this.isEditBO = true;\n      this.boxOfficeProviderDetails = {\n        ...this.boxOfficeProviderDetails,\n        boxOfficeProvider: {\n          id: data.boxOfficeProviderId,\n          name: data.name,\n        },\n        providerOrgRef: data.providerOrgRef,\n        providerKey: data.providerKey,\n      };\n\n      this.initialBODetails = JSON.parse(\n        JSON.stringify(this.boxOfficeProviderDetails),\n      );\n    },\n    async loadBoxOfficeProviders(searchOptions) {\n      let loadOptions = configureLookupSearch(searchOptions);\n\n      let response = await this.$http.get(`box-office/providers`, {\n        params: loadOptions,\n      });\n\n      let currentlySelectedIds = this.orgDetails.organisationBoxOffices.map(\n        (x) => x.boxOfficeProviderId,\n      );\n\n      return {\n        data: response.data.data.filter((x) => !x.isManual && !currentlySelectedIds.includes(x.id)),\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    onBOProviderDropDownOpened() {\n      this.boxOfficeProviderDataSource.reload();\n    },\n    closePopup() {\n      this.popupVisible = false;\n    },\n    validateAssignedProvider(isEditBOMode) {\n      let providerList = JSON.parse(\n        JSON.stringify(this.orgDetails.organisationBoxOffices),\n      );\n      let currentProvider = {\n        boxOfficeProvider: this.boxOfficeProviderDetails.boxOfficeProvider,\n        providerOrgRef: this.boxOfficeProviderDetails.providerOrgRef,\n      };\n\n      if (isEditBOMode && this.initialBODetails) {\n        let initialProvider = {\n          boxOfficeProvider: this.initialBODetails.boxOfficeProvider,\n          providerOrgRef: this.initialBODetails.providerOrgRef,\n        };\n        if (objectEquals(currentProvider, initialProvider))\n          providerList.splice(\n            providerList.findIndex(\n              (x) =>\n                x.boxOfficeProviderId ===\n                  currentProvider.boxOfficeProvider.id &&\n                x.providerOrgRef === currentProvider.providerOrgRef,\n            ),\n            1,\n          );\n      }\n\n      let hasDupes = providerList.filter(\n        (x) =>\n          x.boxOfficeProviderId === currentProvider.boxOfficeProvider.id &&\n          x.providerOrgRef === currentProvider.providerOrgRef,\n      );\n      if (hasDupes.length > 0) {\n        return false;\n      }\n      return true;\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../../themes/custom-variables.scss\";\n\n.dx-datagrid-header-panel .dx-toolbar {\n  margin: 0;\n  padding-right: 20px;\n  background-color: transparent;\n}\n\n.dx-datagrid-header-panel .dx-toolbar-items-container {\n  height: 70px;\n}\n\n.toolbar-text-container {\n  height: 100%;\n  display: flex;\n  width: 100%;\n  flex-direction: row;\n  justify-content: space-between;\n  gap: 25px;\n  border-bottom: 3px solid $brand-primary;\n  padding-bottom: 10px;\n  margin-bottom: 10px;\n}\n\n.toolbar-text-header {\n  font: $base-font-family-medium;\n  font-size: $font-size-subheading;\n  margin: unset !important;\n}\n\n.toolbar-text-info {\n  font-size: $font-size-component;\n  margin: unset !important;\n  padding-top: 5px;\n}\n\n.assign-button-container {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  min-width: 175px;\n}\n\n@media (width < 500px) {\n  .toolbar-text-container {\n    flex-wrap: wrap;\n    gap: 10px;\n  }\n  .assign-button-container {\n    min-width: 100%;\n    .btn-secondary {\n      width: 100%;\n    }\n  }\n}\n\n.provider-action-buttuons-template-container {\n  text-align: center;\n  min-height: 38px;\n}\n\n.edit-provider-button {\n  margin-right: 10px;\n}\n\n.add-update-provider-button {\n  float: right;\n  margin-right: 15px;\n}\n\n.cancel-provider-button {\n  float: right;\n}\n\n.add-provider-button {\n  display: flex;\n  align-items: center;\n  height: fit-content !important;\n  min-height: 34px;\n  max-width: 200px;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./assigned-box-office-provider-refs-table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./assigned-box-office-provider-refs-table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./assigned-box-office-provider-refs-table.vue?vue&type=template&id=3a5919f8&scoped=true\"\nimport script from \"./assigned-box-office-provider-refs-table.vue?vue&type=script&lang=js\"\nexport * from \"./assigned-box-office-provider-refs-table.vue?vue&type=script&lang=js\"\nimport style0 from \"./assigned-box-office-provider-refs-table.vue?vue&type=style&index=0&id=3a5919f8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3a5919f8\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <div class=\"page-header\">\n      <div class=\"title-back-container\">\n        <div class=\"page-back\">\n          <dx-button\n            class=\"btn-back\"\n            icon=\"fas fa-arrow-left\"\n            styling-mode=\"contained\"\n            @click=\"onBackClicked\"\n          >\n          </dx-button>\n        </div>\n        <div class=\"page-title-container\">\n          <div>\n            <p class=\"page-breadcrumb\">\n              Organisation\n              {{\n                isEditMode && orgDetails && orgDetails.name\n                  ? ` > ${orgDetails.name}`\n                  : ``\n              }}\n            </p>\n          </div>\n          <h1 class=\"page-title\">Organisation Overview</h1>\n        </div>\n      </div>\n      <div class=\"action-section\">\n        <dx-button\n          class=\"btn-primary fas fa-save\"\n          v-if=\"orgDetails && $can(userAction, $subjects.organisation.subject)\"\n          validation-group=\"orgDetails\"\n          text=\"Save Organisation\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"onSaveOrgClicked\"\n        />\n        <dx-button\n          class=\"btn-primary btn-delete fas fa-trash-alt\"\n          v-if=\"\n            orgDetails &&\n            isEditMode &&\n            $can('delete', $subjects.organisation.subject)\n          \"\n          type=\"warning\"\n          text=\"Delete\"\n          styling-mode=\"contained\"\n          @click=\"onDeleteOrgClicked\"\n        />\n      </div>\n    </div>\n\n    <DxTabPanel\n      :data-source=\"tabs\"\n      :selectedIndex.sync=\"currTab\"\n      :animation-enabled=\"false\"\n      :swipe-enabled=\"false\"\n      aria-labelledby=\"tabpanel-label\"\n    >\n      <template #title=\"{data: tab, index: i}\">\n        <span\n          :id=\"`tab-${tab.id}`\"          \n          >{{ tab.text }}</span\n        >\n      </template>\n\n      <template #organisation-details-template>\n        <div class=\"organisation-content\">\n          <organisation-details\n            v-if=\"\n              !isEditMode ||\n              (orgDetails.id !== null && orgDetails.id !== undefined)\n            \"\n          />\n        </div>\n      </template>\n\n      <template #organisation-templates-template>\n        <div class=\"organisation-content\">\n          <organisation-templates\n            v-if=\"\n              !isEditMode ||\n              (orgDetails.id !== null && orgDetails.id !== undefined)\n            \"\n          />\n        </div>\n      </template>\n\n      <template #organisation-boxOffice-template>\n        <div class=\"organisation-content\">\n          <organisation-box-office-list\n            v-if=\"\n              !isEditMode ||\n              (orgDetails.id !== null && orgDetails.id !== undefined)\n            \"\n          />\n        </div>\n      </template>\n    </DxTabPanel>\n\n    <ConfirmDeletePopup\n      :entityName=\"orgDetails && orgDetails.name ? orgDetails.name : ''\"\n      titleName=\"Organisation\"\n      :onDelete=\"deleteOrgFunction\"\n      :popupVisible=\"popupVisible\"\n      @onPopupClosed=\"popupVisible = false\"\n    />\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport DxTabPanel from \"devextreme-vue/tab-panel\";\nimport OrganisationDetails from \"../components/organisations/organisation-details\";\nimport OrganisationTemplates from \"../components/organisations/organisation-templates.vue\";\nimport OrganisationBoxOfficeList from \"../components/organisations/assigned-box-office-provider-refs-table.vue\";\nimport ConfirmDeletePopup from \"../components/confirm-delete-popup.vue\";\nimport {\n  isNotEmpty,\n  objectEquals,\n  deepCopyJson,\n} from \"../common/helperFunctions\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\n\nexport default {\n  components: {\n    DxTabPanel,\n    OrganisationDetails,\n    OrganisationTemplates,\n    OrganisationBoxOfficeList,\n    ConfirmDeletePopup,\n    DxButton,\n    DxLoadPanel,\n  },\n  data() {\n    return {\n      popupVisible: false,\n      savedSuccessfully: false,\n      currTab: 0,\n      initialOrgDetailsObj: null,\n    };\n  },\n  computed: {\n    ...mapState(\"organisations\", [\"orgDetails\"]),\n    ...mapGetters(\"organisations\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    tabs: function () {\n      return [\n        {\n          id: 0,\n          text: \"Details\",\n          template: \"organisation-details-template\",\n        },\n        {\n          id: 1,\n          text: \"Templates\",\n          template: \"organisation-templates-template\",\n          disabled: !this.isEditMode,\n        },\n        {\n          id: 2,\n          text: \"Ticketing\",\n          template: \"organisation-boxOffice-template\",\n        },\n      ];\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"organisations\", {\n      createOrganisation: \"create\",\n      updateOrganisaton: \"update\",\n      deleteOrganisation: \"delete\",\n      fetchOrgDetails: \"fetchOrgDetails\",\n      clearOrgDetails: \"clear\",\n      getLogo: \"getOrgLogo\",\n    }),\n    onBackClicked() {\n      this.$router.push({\n        name: \"organisations-list\",\n      });\n    },\n    preventNav(event) {\n      if (!this.areUnsavedChanges() || this.savedSuccessfully) return;\n      event.preventDefault();\n      event.returnValue = \"\";\n    },\n    areUnsavedChanges() {\n      let a = !objectEquals(this.orgDetails, this.initialOrgDetailsObj);\n      return a;\n    },\n    cancel() {\n      this.clearOrgDetails();\n      this.$router.push({\n        name: \"organisations-list\",\n      });\n    },\n    async onSaveOrgClicked(e) {\n      let result = await e.validationGroup.validate();\n\n      if (!result.isValid) {\n        this.notifyError(\n          `Unable to save organisation. ${result.brokenRules.length} validation errors.`,\n        );\n        return;\n      }\n\n      try {\n        if (!this.isEditMode) {\n          await this.createOrganisation();\n        } else {\n          await this.updateOrganisaton();\n        }\n\n        this.notifySuccess(\n          `Organisation successfully ${\n            this.isEditMode ? \"updated\" : \"created\"\n          }.`,\n        );\n        this.savedSuccessfully = true;\n        this.$router.push({\n          name: \"organisations-list\",\n        });\n      } catch (err) {\n        this.notifyError(\n          `Unable to ${\n            this.isEditMode ? \"update\" : \"create\"\n          } organisation. ${fromResponse(err)}`,\n        );\n      }\n    },\n    onDeleteOrgClicked() {\n      this.popupVisible = true;\n    },\n    async deleteOrgFunction() {\n      try {\n        await this.deleteOrganisation();\n\n        this.notifySuccess(`Organisation successfully deleted.`);\n        this.savedSuccessfully = true;\n        this.$router.push({\n          name: \"organisations-list\",\n        });\n      } catch (err) {\n        this.notifyError(`Unable to delete organisation. ${fromResponse(err)}`);\n      }\n    },\n  },\n  mounted() {\n    if (this.isEditMode) {\n      this.fetchOrgDetails(this.$route.params.id).then((x) => {\n        this.initialOrgDetailsObj = deepCopyJson(this.orgDetails);\n      });\n    }\n    if (this.$route.query.tabIndex !== null) {\n      this.currTab = parseInt(this.$route.query.tabIndex);\n    }\n  },\n  beforeMount() {\n    // https://austingil.com/prevent-browser-refresh-url-changes-route-navigation-vue/\n    window.addEventListener(\"beforeunload\", this.preventNav);\n    this.$once(\"hook:beforeDestroy\", () => {\n      window.removeEventListener(\"beforeunload\", this.preventNav);\n    });\n  },\n  beforeDestroy() {\n    this.clearOrgDetails();\n  },\n  beforeRouteLeave(to, from, next) {\n    if (!this.areUnsavedChanges() || this.savedSuccessfully) {\n      next();\n      return;\n    }\n\n    const answer = window.confirm(\n      \"Are you sure you would like to leave? You have unsaved changes.\",\n    );\n    if (answer) {\n      next();\n    } else {\n      next(false);\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n.page-title-container {\n  margin-left: 0px !important;\n}\n\n.page-header {\n  padding-bottom: 15px !important;\n}\n\n.organisation-content {\n  padding-top: 15px;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-overview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-overview.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./organisation-overview.vue?vue&type=template&id=2f769a12&scoped=true\"\nimport script from \"./organisation-overview.vue?vue&type=script&lang=js\"\nexport * from \"./organisation-overview.vue?vue&type=script&lang=js\"\nimport style0 from \"./organisation-overview.vue?vue&type=style&index=0&id=2f769a12&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2f769a12\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('dx-data-grid',{ref:_vm.organisationListRefKey,staticClass:\"dx-card thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.dataSource,\"remote-operations\":true,\"noDataText\":_vm.noDataText,\"key-expr\":\"id\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true,\"onToolbarPreparing\":_vm.onDataGridToolbarPreparing},scopedSlots:_vm._u([{key:\"page-title-template\",fn:function(){return [_c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Organisation Management\")])])]},proxy:true},{key:\"add-button-template\",fn:function(){return [_c('div',[(\n            _vm.$can('create', _vm.$subjects.organisation.subject) &&\n            _vm.window.width > _vm.buttonHideWidth\n          )?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddOrgClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\"\\n          Create organisation\\n        \")]):_vm._e(),(\n            _vm.$can('create', _vm.$subjects.organisation.subject) &&\n            _vm.window.width <= _vm.buttonHideWidth\n          )?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddOrgClicked}},[_c('i',{staticClass:\"fas fa-plus sml-create-btn-icon\"})]):_vm._e()],1)]},proxy:true},{key:\"name-template\",fn:function(cell){return [_c('dx-button',{staticClass:\"dx-link link-custom\",on:{\"click\":function($event){return _vm.viewOrganisation(cell.data.data.id)}}},[_vm._v(_vm._s(cell.data.value)+\"\\n      \")])]}},{key:\"active-template\",fn:function({data}){return [_c('div',{staticClass:\"table-pill\",class:`table-pill-${data.data.activeStatus === 1 ? 'active' : 'inactive'}`},[_vm._v(\"\\n        \"+_vm._s(data.data.activeStatus ? \"Active\" : \"Inactive\")+\"\\n      \")])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxSearchPanel',{attrs:{\"group-index\":0,\"visible\":true,\"width\":300}}),_c('DxExport',{attrs:{\"enabled\":true,\"group-index\":1}}),_c('DxColumnChooser',{attrs:{\"enabled\":true,\"mode\":\"dragAndDrop\"}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}}),_c('DxRemoteOperations',{attrs:{\"filtering\":false,\"paging\":false,\"sorting\":false,\"summary\":false,\"grouping\":false,\"group-paging\":false}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const createModel = () => {\n  return [\n    {\n      dataField: \"id\",\n      dataType: \"number\",\n      visible: false,\n      showInColumnChooser: false,\n    },\n    {\n      dataField: \"name\",\n      caption: \"Organisation Name\",\n      dataType: \"string\",\n      cellTemplate: \"name-template\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"alternativeName\",\n      caption: \"Alternative Name\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"region\",\n      caption: \"Region\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"upperTierAuthority\",\n      caption: \"Upper Tier Authority\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"activeStatus\",\n      cellTemplate: \"active-template\",\n      caption: \"Active\",\n      dataType: \"string\",\n      headerFilter: {\n        dataSource: [\n          {\n            text: \"Active\",\n            value: 1,\n          },\n          {\n            text: \"Inactive\",\n            value: 0,\n          },\n        ],\n      },\n    },\n  ];\n};\n","<template>\n  <div>\n    <dx-data-grid\n      class=\"dx-card thin-column-chooser multi-select-grid-property\"\n      :ref=\"organisationListRefKey\"\n      :show-borders=\"false\"\n      :data-source=\"dataSource\"\n      :remote-operations=\"true\"\n      :noDataText=\"noDataText\"\n      key-expr=\"id\"\n      :columnMinWidth=\"25\"\n      :columnAutoWidth=\"true\"\n      :columns=\"columns\"\n      :allow-column-reordering=\"true\"\n      :onToolbarPreparing=\"onDataGridToolbarPreparing\"\n    >\n      <dx-paging :page-size=\"10\" />\n      <dx-pager\n        :allowed-page-sizes=\"[5, 10, 25]\"\n        :show-page-size-selector=\"true\"\n        :show-info=\"true\"\n      />\n      <dx-filter-row :visible=\"true\" />\n      <DxHeaderFilter\n        :visible=\"true\"\n        :allowSearch=\"true\"\n      />\n      <DxSearchPanel\n        :group-index=\"0\"\n        :visible=\"true\"\n        :width=\"300\"\n      />\n      <DxExport\n        :enabled=\"true\"\n        :group-index=\"1\"\n      />\n      <DxColumnChooser\n        :enabled=\"true\"\n        mode=\"dragAndDrop\"\n      />\n      <DxColumnFixing :enabled=\"true\" />\n      <DxRemoteOperations\n        :filtering=\"false\"\n        :paging=\"false\"\n        :sorting=\"false\"\n        :summary=\"false\"\n        :grouping=\"false\"\n        :group-paging=\"false\"\n      />\n\n      <template #page-title-template>\n        <div class=\"page-title-container\">\n          <h1 class=\"page-title\">Organisation Management</h1>\n        </div>\n      </template>\n\n      <template #add-button-template>\n        <div>\n          <dx-button\n            v-if=\"\n              $can('create', $subjects.organisation.subject) &&\n              window.width > buttonHideWidth\n            \"\n            type=\"default\"\n            class=\"btn-primary\"\n            styling-mode=\"contained\"\n            @click=\"onAddOrgClicked\"\n          >\n            <i class=\"fas fa-plus\" />\n            Create organisation\n          </dx-button>\n          <dx-button\n            v-if=\"\n              $can('create', $subjects.organisation.subject) &&\n              window.width <= buttonHideWidth\n            \"\n            type=\"default\"\n            class=\"btn-primary\"\n            styling-mode=\"contained\"\n            @click=\"onAddOrgClicked\"\n          >\n            <i\n              class=\"fas fa-plus sml-create-btn-icon \"\n            />\n          </dx-button>\n        </div>\n      </template>\n\n      <template #name-template=\"cell\">\n        <dx-button\n          class=\"dx-link link-custom\"\n          @click=\"viewOrganisation(cell.data.data.id)\"\n          >{{ cell.data.value }}\n        </dx-button>\n      </template>\n\n      <template #active-template=\"{data}\">\n        <div\n          class=\"table-pill\"\n          :class=\"`table-pill-${data.data.activeStatus === 1 ? 'active' : 'inactive'}`\"\n        >\n          {{ data.data.activeStatus ? \"Active\" : \"Inactive\" }}\n        </div>\n      </template>\n    </dx-data-grid>\n  </div>\n</template>\n\n<script>\nimport {mapActions} from \"vuex\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxExport,\n  DxColumnChooser,\n  DxRemoteOperations,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n  DxSearchPanel,\n} from \"devextreme-vue/data-grid\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {serializeLoadOptions} from \"../utils/load-options-serializer\";\nimport {createModel} from \"../components/organisations/org-list-col-defs\";\n\nexport default {\n  components: {\n    DxButton,\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxExport,\n    DxColumnChooser,\n    DxRemoteOperations,\n    DxPaging,\n    DxSearchPanel\n  },\n  data() {\n    return {\n      dataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.load,\n        }),\n        pageSize: 25,\n        sort: {selector: \"name\", desc: false},\n      }),\n      window: {\n        width: 0,\n        height: 0,\n      },\n      buttonHideWidth: 625,\n      nameTooltipVisible: false,\n      columns: createModel({}),\n      noDataText: \"No data to display\",\n      organisationListRefKey: \"orgListGrid\",\n    };\n  },\n  computed: {},\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\"]),\n    async load(loadOptions) {\n      let response = await this.$http.get(`organisations`, {\n        params: serializeLoadOptions(loadOptions),\n      });\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    onDataGridToolbarPreparing(e) {\n      let toolbarItems = e.toolbarOptions.items;\n      //https://stackoverflow.com/questions/5306680/move-an-array-element-from-one-array-position-to-another\n      toolbarItems.forEach(function (item) {\n        switch (item.name) {\n          case \"searchPanel\":\n            item.locateInMenu = \"auto\";\n            break;\n          case \"exportButton\":\n            item.locateInMenu = \"always\";\n            break;\n          case \"columnChooserButton\":\n            item.locateInMenu = \"always\";\n            break;\n        }\n      });\n\n      toolbarItems.unshift({\n        location: \"before\",\n        template: \"page-title-template\",\n      });\n\n      toolbarItems.push({\n        location: \"after\",\n        template: \"add-button-template\",\n      });\n    },\n    viewOrganisation(id) {\n      this.$router.push({\n        name: \"organisation-details\",\n        params: {\n          id: id,\n        },\n        query: {tabIndex: 0},\n      });\n    },\n    onAddOrgClicked() {\n      this.$router.push({\n        name: \"organisation-details\",\n        query: {tabIndex: 0},\n      });\n    },\n    handleResize() {\n      this.window.width = window.innerWidth;\n      this.window.height = window.innerHeight;\n    },\n  },\n  created() {\n    window.addEventListener(\"resize\", this.handleResize);\n    this.handleResize();\n  },\n  destroyed() {\n    window.removeEventListener(\"resize\", this.handleResize);\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.actions-container {\n  display: flex;\n  justify-content: flex-end;\n  margin-bottom: 10px;\n}\n\n.button-group {\n  text-align: center;\n\n  .dx-button {\n    width: 100%;\n  }\n\n  div + div {\n    margin-top: 5px;\n  }\n}\n\n@media (max-width: 425px) {\n  h1 {\n    word-spacing: 99999px;\n  }\n  .dx-datagrid-headers {\n    margin-top: 20px;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisations-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisations-list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./organisations-list.vue?vue&type=template&id=2c925ba4&scoped=true\"\nimport script from \"./organisations-list.vue?vue&type=script&lang=js\"\nexport * from \"./organisations-list.vue?vue&type=script&lang=js\"\nimport style0 from \"./organisations-list.vue?vue&type=style&index=0&id=2c925ba4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2c925ba4\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"title-back-container\"},[_c('div',{staticClass:\"page-back\"},[_c('dx-button',{staticClass:\"btn-back\",attrs:{\"icon\":\"fas fa-arrow-left\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onBackClicked}})],1),_c('div',{staticClass:\"page-title-container\"},[_c('div',[_c('p',{staticClass:\"page-breadcrumb\"},[_vm._v(\"\\n            Event\\n            \"+_vm._s(_vm.isEditMode && _vm.eventDetails && _vm.eventDetails.name\n                ? ` > ${_vm.eventDetails.name}`\n                : ``)+\"\\n          \")])]),_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Event Overview\")])])]),_c('div',{staticClass:\"action-section\"},[(_vm.eventDetails && _vm.canUserEdit)?_c('dx-button',{staticClass:\"btn-primary fas fa-save\",attrs:{\"validation-group\":\"eventDetails\",\"text\":\"Save event\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onSaveEventClicked}}):_vm._e(),(_vm.eventDetails && _vm.isEditMode && _vm.canUserEdit)?_c('dx-button',{staticClass:\"btn-primary fas fa-clone\",attrs:{\"validation-group\":\"eventDetails\",\"text\":\"Duplicate event\",\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":function($event){_vm.dupePopupVisible = true}}}):_vm._e(),(_vm.eventDetails && _vm.isEditMode && _vm.canUserEdit)?_c('dx-button',{staticClass:\"btn-primary btn-delete fas fa-trash-alt\",attrs:{\"type\":\"warning\",\"text\":\"Delete\",\"styling-mode\":\"contained\"},on:{\"click\":function($event){_vm.deletePopupVisible = true}}}):_vm._e()],1)]),_c('DxTabPanel',{key:_vm.refreshKey,ref:_vm.tabPanelRef,attrs:{\"data-source\":_vm.tabs,\"selectedIndex\":_vm.currTab,\"animation-enabled\":false,\"swipe-enabled\":false,\"aria-labelledby\":\"tabpanel-label\"},on:{\"update:selectedIndex\":function($event){_vm.currTab=$event},\"update:selected-index\":function($event){_vm.currTab=$event}},scopedSlots:_vm._u([{key:\"title\",fn:function({data: tab, index: i}){return [_c('span',{attrs:{\"id\":`tab-${tab.id}`}},[_vm._v(_vm._s(tab.text))])]}},{key:\"event-details-template\",fn:function(){return [_c('div',{staticClass:\"event-content\"},[(\n            !_vm.isEditMode ||\n            (_vm.eventDetails.id !== null && _vm.eventDetails.id !== undefined)\n          )?_c('event-details',{attrs:{\"canUserEdit\":_vm.canUserEdit}}):_vm._e()],1)]},proxy:true},{key:\"event-forecast-template\",fn:function(){return [_c('div',{staticClass:\"event-content\"},[(\n            !_vm.isEditMode ||\n            (_vm.eventDetails.id !== null && _vm.eventDetails.id !== undefined)\n          )?_c('event-forecast',{attrs:{\"canUserEdit\":_vm.canUserEdit}}):_vm._e()],1)]},proxy:true},{key:\"event-surveys-template\",fn:function(){return [_c('div',{staticClass:\"event-content\"},[_c('event-surveys-list',{attrs:{\"canUserEdit\":_vm.canUserEdit}})],1)]},proxy:true}])}),_c('ConfirmPopup',{attrs:{\"popupVisible\":_vm.dupePopupVisible,\"titleName\":\"duplicate event\",\"onConfirm\":_vm.onDuplicateEventClicked,\"confirmMessage\":`This will create a duplicate of '${_vm.eventDetails.name}', excluding ticketing data and surveys. Please note that any changes will not be saved until you click 'Save event.'`},on:{\"onPopupClosed\":function($event){_vm.dupePopupVisible = false}}}),_c('ConfirmDeletePopup',{attrs:{\"entityName\":_vm.eventDetails && _vm.eventDetails.name ? _vm.eventDetails.name : '',\"titleName\":\"Event\",\"onDelete\":_vm.deleteEventFunction,\"popupVisible\":_vm.deletePopupVisible},on:{\"onPopupClosed\":function($event){_vm.deletePopupVisible = false}}}),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"event-form-group\"},[_c('dx-form',{ref:_vm.formRefKey,attrs:{\"form-data\":_vm.eventDetails,\"readOnly\":!_vm.canUserEdit,\"show-validation-summary\":true,\"scrolling-enabled\":false,\"validation-group\":\"eventDetails\"}},[_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Details\",\"col-count\":4,\"col-span\":2,\"css-class\":\"brand-border-top-form-group\"}},[_c('dx-simple-item',{attrs:{\"data-field\":\"name\"}},[_c('dx-label',{attrs:{\"text\":\"Name of Activity/Tour\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Name is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"locationId\",\"editorType\":\"dxLookup\",\"editorOptions\":{\n            ..._vm.editorOptions.location,\n            dataSource: _vm.locationDataSource,\n            onInitialized: this.onLocationInitialized,\n          }}},[_c('dx-label',{attrs:{\"text\":\"Location\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Location is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"isTicketedId\",\"editorType\":\"dxRadioGroup\",\"editorOptions\":{\n            ..._vm.editorOptions.isTicketed,\n            layout: 'horizontal',\n            onValueChanged: this.onTicketingValueChanged,\n          }}},[_c('dx-label',{attrs:{\"text\":\"Ticketed\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Ticketed is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"boxOfficeProviderId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":{\n            ..._vm.editorOptions.boxOfficeProvider,\n            dataSource: _vm.boxOfficeProvidersDataSource,\n            disabled: _vm.disableBoxOfficeBoxes,\n          }}},[_c('dx-label',{attrs:{\"text\":\"Ticketing Provider\"}}),_c('dx-custom-rule',{attrs:{\"validation-callback\":_vm.validateBoxOffice,\"message\":\"Ticketing Provider is required\",\"reevaluate\":true}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"boxOfficeReferenceId\",\"editorOptions\":{disabled: _vm.disableBoxOfficeBoxes}}},[_c('dx-label',{attrs:{\"text\":\"Ticketing Provider Reference ID\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Ticketing Provider Reference ID is too long. Maximum allowed length is ${_vm.maxLength.grantiemId} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"eventTypeId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":_vm.editorOptions.eventType}},[_c('dx-label',{attrs:{\"text\":\"Event Type\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Event Type is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"distributionTypeId\",\"editorType\":\"dxSelectBox\",\"cssClass\":\"multiline-selectbox\",\"editorOptions\":_vm.editorOptions.distributionType}},[_c('dx-label',{attrs:{\"text\":\"Distribution Type\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Distribution Type is required\"}})],1),_c('dx-simple-item',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('SubDisciplineSelectBox',{attrs:{\"readOnly\":!_vm.canUserEdit,\"value\":_vm.eventDetails.subDisciplineId}})]},proxy:true}])},[_c('dx-label',{attrs:{\"text\":\"Discipline/Sub-Discipline\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Sub-Discipline is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"startDate\",\"editor-type\":\"dxDateBox\",\"editorOptions\":{\n            dateSerializationFormat: 'yyyy-MM-dd',\n            displayFormat: 'dd/MM/yyyy',\n            max: _vm.eventDetails.endDate,\n            dateOutOfRangeMessage: 'Start date must be before the end date',\n          }}},[_c('dx-label',{attrs:{\"text\":\"Start date\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Start date is required\"}}),_c('dx-custom-rule',{attrs:{\"validation-callback\":_vm.validateDateRange,\"message\":\"Start date out of range\",\"reevaluate\":true}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"endDate\",\"editor-type\":\"dxDateBox\",\"editorOptions\":{\n            dateSerializationFormat: 'yyyy-MM-dd',\n            displayFormat: 'dd/MM/yyyy',\n            min: _vm.eventDetails.startDate,\n            dateOutOfRangeMessage: 'End date must be greater than start date',\n          }}},[_c('dx-label',{attrs:{\"text\":\"End date\"}}),_c('dx-required-rule',{attrs:{\"message\":\"End date is required\"}}),_c('dx-custom-rule',{attrs:{\"validation-callback\":_vm.validateDateRange,\"message\":\"End date out of range\",\"reevaluate\":true}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"isFundedId\",\"editorType\":\"dxRadioGroup\",\"editorOptions\":{\n            ..._vm.editorOptions.isFunded,\n            layout: 'horizontal',\n          }}},[_c('dx-label',{attrs:{\"text\":\"Event funded by your Arts Council England grant?\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Event funded by your Arts Council England grant is required\"}})],1)],1)],1),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='locationTooltip']\"}},[_c('div',{staticClass:\"tooltip-400-width\"},[_vm._v(\"\\n        If the location of this event is not listed in this dropdown, then\\n        please create a new location within the 'Locations' page\\n      \")])]),_c('div',{staticClass:\"assigned-org-table\"},[_c('AssignedOrganisationsTable',{attrs:{\"assignedOrganisations\":_vm.assignedOrgs,\"isAdd\":!_vm.isEditMode,\"eventSubDisciplineId\":_vm.eventDetails.subDisciplineId,\"canUserEdit\":_vm.canUserEdit}})],1),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {LookupCodes} from \"@/common/constants\";\nimport lookup from \"@/utils/lookup-source-provider\";\n\nlet defaultDropDownOptions = {\n    displayExpr: \"name\",\n    valueExpr: \"id\",\n    stylingMode: \"outlined\",\n    applyValueMode: \"instantly\",\n  };\n  \n  let defaultNumberBoxOptions = {\n    format: \",###\",\n    showSpinButtons: true,\n    mode: \"numeric\",\n    min: 0,\n  };\n\nexport const editorOptions = {\n    location: {\n      ...defaultDropDownOptions,\n      displayExpr: \"name\",\n      valueExpr: \"id\",\n      searchEnabled: true,\n      searchMode: \"contains\",\n      searchExpr: [\"name\"],\n      minSearchLength: 2,\n      showDataBeforeSearch: true,\n      searchPlaceholder: \"Search...\",\n    },\n    boxOfficeProvider: {\n      ...defaultDropDownOptions,\n    },\n    isTicketed: {\n      ...defaultDropDownOptions,\n      ...lookup.get(LookupCodes.IsTicketed),\n      \n    },\n    eventType: {\n      ...defaultDropDownOptions,\n      ...lookup.get(LookupCodes.EventType),\n    },\n    distributionType: {\n      ...defaultDropDownOptions,\n      ...lookup.get(LookupCodes.DistributionType),\n    },\n    subDiscipline: {\n      ...defaultDropDownOptions,\n    },\n    occurrences: {\n      ...defaultNumberBoxOptions,\n    },\n    totalTicketsAvailable: {\n      ...defaultNumberBoxOptions,\n    },\n    estAttendance: {\n      ...defaultNumberBoxOptions,\n    },\n    actAttendance: {\n      ...defaultNumberBoxOptions,\n      format: \"##.##%\",\n      max: 100,\n      readOnly: true,\n      disabled: true,\n      showSpinButtons: false,\n    },\n    isFunded: {\n      ...defaultDropDownOptions,\n      ...lookup.get(LookupCodes.IsFunded),\n    },\n  }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"toolbar-text-container\"},[_vm._m(0),_c('div',{staticClass:\"assign-button-container\"},[(_vm.eventDetails && _vm.canUserEdit)?_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"type\":\"default\"},on:{\"click\":_vm.onAssignOrgClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" Assign organisation\")]):_vm._e()],1)]),_c('div',{key:_vm.dataGridRefreshKey},[_c('dx-data-grid',{ref:_vm.dataGridRef,staticClass:\"thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.eventDetails.eventOrganisations,\"noDataText\":_vm.noDataText,\"key-expr\":\"organisationId\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true},scopedSlots:_vm._u([{key:\"actions-template\",fn:function(cell){return [(_vm.canUserEdit)?_c('div',{staticClass:\"actions-container\"},[_c('div',[_c('dx-button',{staticClass:\"edit-org-button\",attrs:{\"type\":\"default\",\"hint\":\"Edit\"},on:{\"click\":function($event){return _vm.onEditEventOrgClicked(cell.data.data.organisationId)}}},[_c('i',{staticClass:\"fas fa-edit purple-icon\"})])],1),_c('div',{staticClass:\"delete-org-button-container\"},[_c('dx-button',{staticClass:\"btn-delete\",attrs:{\"type\":\"default\",\"icon\":\"trash\",\"hint\":\"Delete\"},on:{\"click\":function($event){return _vm.onDeleteOrgClicked(cell.data.data.organisationId)}}})],1)]):_vm._e()]}}])},[_c('dx-paging',{attrs:{\"page-size\":5}}),_c('dx-pager',{attrs:{\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}})],1)],1),_c('dx-popup',{attrs:{\"visible\":_vm.popupVisible,\"drag-enabled\":false,\"hide-on-outside-click\":true,\"show-title\":true,\"max-width\":700,\"height\":\"auto\",\"title\":\"Assign Organisation\",\"onHiding\":_vm.onPopupClosed,\"onShown\":_vm.onPopupOpened},on:{\"update:visible\":function($event){_vm.popupVisible=$event}}},[_c('div',{staticClass:\"popup-contents-container\"},[_c('div',[_vm._v(\"\\n        Search for the organisation you would like to add from the dropdown\\n        below:\\n      \")]),_c('div',[_c('label',[_vm._v(\"Organisation \"),_c('span',{staticClass:\"red\"},[_vm._v(\"*\")])]),_c('dx-lookup',{key:_vm.popupRefreshKey,ref:_vm.orgLookupRef,attrs:{\"data-source\":_vm.orgsDataSource,\"display-expr\":\"name\",\"value-expr\":\"this\",\"search-enabled\":true,\"search-mode\":\"contains\",\"search-expr\":['name'],\"placeholder\":\"Select...\",\"defer-rendering\":false,\"labelMode\":\"hidden\",\"disabled\":_vm.editingEventOrg,\"input-attr\":_vm.inputAttrOrg},on:{\"opened\":_vm.onOrgDropDownOpened},model:{value:(_vm.orgDetails.organisation),callback:function ($$v) {_vm.$set(_vm.orgDetails, \"organisation\", $$v)},expression:\"orgDetails.organisation\"}},[_c('dxValidator',{ref:_vm.orgValidatorRef},[_c('dx-required-rule',{attrs:{\"message\":\"Organisation is required\"}})],1)],1)],1),_c('div',{staticClass:\"org-details-container\"},[_c('div',[_c('div',{staticClass:\"org-details-header\"},[_vm._v(\"Known as\")]),_c('div',{staticClass:\"org-details-text\"},[_vm._v(\"\\n            \"+_vm._s(_vm.orgDetails.organisation != undefined\n                ? _vm.orgDetails.organisation.knownAs\n                : \"-\")+\"\\n          \")])]),_c('div',[_c('div',{staticClass:\"org-details-header\"},[_vm._v(\"Alternative name\")]),_c('div',{staticClass:\"org-details-text\"},[_vm._v(\"\\n            \"+_vm._s(_vm.orgDetails.organisation != undefined\n                ? _vm.orgDetails.organisation.alternativeName\n                : \"-\")+\"\\n          \")])]),_c('div',[_c('div',{staticClass:\"org-details-header\"},[_vm._v(\"Primary Discipline\")]),_c('div',{staticClass:\"org-details-text\"},[_vm._v(\"\\n            \"+_vm._s(_vm.orgDetails.organisation != undefined\n                ? _vm.orgDetails.organisation.discipline\n                : \"-\")+\"\\n          \")])]),_c('div',[_c('div',{staticClass:\"org-details-header\"},[_vm._v(\"Region\")]),_c('div',{staticClass:\"org-details-text\"},[_vm._v(\"\\n            \"+_vm._s(_vm.orgDetails.organisation != undefined\n                ? _vm.orgDetails.organisation.region\n                : \"-\")+\"\\n          \")])])]),_c('div',[_c('label',{attrs:{\"id\":\"rel-type-dd\"}},[_vm._v(\"Relationship type \"),_c('span',{staticClass:\"red\"},[_vm._v(\"*\")])]),_c('div',{staticClass:\"rel-type-info\"},[_vm._v(\"\\n          'Event owners' will be able to modify this event and create surveys,\\n          'Partners' will have a read-only view.\\n        \")]),_c('dx-select-box',{ref:_vm.relTypeSelBoxRef,attrs:{\"value-expr\":\"this\",\"data-source\":_vm.relTypesDataSource,\"displayExpr\":\"name\",\"labelMode\":\"hidden\",\"defer-rendering\":false,\"input-attr\":_vm.inputAttrRelType},model:{value:(_vm.orgDetails.relationshipType),callback:function ($$v) {_vm.$set(_vm.orgDetails, \"relationshipType\", $$v)},expression:\"orgDetails.relationshipType\"}},[_c('dxValidator',{ref:_vm.relTypeValidatorRef},[_c('dx-required-rule',{attrs:{\"message\":\"Relationship type is required\"}})],1)],1)],1),_c('div',{key:_vm.popupRefreshKey},[_c('label',[_vm._v(\"Subdiscipline \"),_c('span',{staticClass:\"red\"},[_vm._v(\"*\")])]),_c('SubDisciplineSelectBox',{ref:_vm.subDiscSelBoxRef,attrs:{\"read-only\":!_vm.$can(_vm.userAction, _vm.$subjects.event.subject),\"value\":_vm.orgDetails.subDisciplineId,\"onValueChanged\":_vm.onSubDiscValueChanged}})],1),_c('div',{staticClass:\"actions-container\"},[_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddOrgClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(_vm._s(_vm.editingEventOrg ? \"Save\" : \"Add\")+\"\\n        \")]),_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.closePopup}},[_c('i',{staticClass:\"fas fa-times\"}),_vm._v(\" Cancel\\n        \")])],1)])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"toolbar-text-header\"},[_vm._v(\"Organisations\")]),_c('p',{staticClass:\"toolbar-text-info\"},[_vm._v(\"\\n        This table contains a list of all organisations that have been\\n        assigned to this event. 'Event Owners' will be able to modify this\\n        event and create surveys, and 'Partners' will have a read-only view.\\n      \")])])\n}]\n\nexport { render, staticRenderFns }","export const createModel = () => {\n  return [\n    {\n      dataField: \"id\",\n      dataType: \"number\",\n      visible: false,\n      showInColumnChooser: false,\n    },\n    {\n      dataField: \"name\",\n      caption: \"Organisation Name\",\n      dataType: \"string\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"alternativeName\",\n      caption: \"Alternative Name\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"region\",\n      caption: \"Region\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"discipline\",\n      caption: \"Organisation Discipline\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"subDisciplineName\",\n      caption: \"Partnership Sub-Discipline\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"relationshipTypeName\",\n      caption: \"Relationship Type\",\n      dataType: \"string\",\n    },\n    {\n      caption: \"\",\n      cellTemplate: \"actions-template\",\n      width: 190,\n      cssClass: \"text-center\",\n    },\n  ];\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.refreshKey},[_c('dx-drop-down-box',{ref:_vm.subDiscDropDownRef,attrs:{\"display-value-formatter\":_vm.subDisciplineFormatter,\"value\":_vm.value,\"displayExpr\":\"name\",\"stylingMode\":\"outlined\",\"value-expr\":\"id\",\"placeholder\":\"Select...\",\"read-only\":_vm.readOnly,\"input-attr\":_vm.inputAttr},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('dx-data-grid',{attrs:{\"data-source\":_vm.subDisciplinesDataSource,\"columns\":_vm.subDiscColumns,\"hover-state-enabled\":true,\"column-auto-width\":true,\"selected-row-keys\":_vm.selectedSubDiscKeys,\"value-expr\":\"id\",\"height\":\"100%\"},on:{\"update:selectedRowKeys\":function($event){_vm.selectedSubDiscKeys=$event},\"update:selected-row-keys\":function($event){_vm.selectedSubDiscKeys=$event},\"selection-changed\":_vm.onSubDiscDropdownSelectionChanged}},[_c('dx-selection',{attrs:{\"mode\":\"single\",\"show-check-boxes-mode\":\"always\"}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('dx-scrolling',{attrs:{\"mode\":\"infinite\"}})],1)]},proxy:true}])},[_c('dx-drop-down-options',{attrs:{\"width\":\"700px\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Sub-Discipline is required\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div :key=\"refreshKey\">\n    <dx-drop-down-box\n      :ref=\"subDiscDropDownRef\"\n      :display-value-formatter=\"subDisciplineFormatter\"\n      :value=\"value\"\n      displayExpr=\"name\"\n      stylingMode=\"outlined\"\n      value-expr=\"id\"\n      placeholder=\"Select...\"\n      :read-only=\"readOnly\"\n      :input-attr=\"inputAttr\"\n    >\n      <dx-drop-down-options width=\"700px\" />\n      <template #content>\n        <dx-data-grid\n          :data-source=\"subDisciplinesDataSource\"\n          :columns=\"subDiscColumns\"\n          :hover-state-enabled=\"true\"\n          :column-auto-width=\"true\"\n          :selected-row-keys.sync=\"selectedSubDiscKeys\"\n          value-expr=\"id\"\n          @selection-changed=\"onSubDiscDropdownSelectionChanged\"\n          height=\"100%\"\n        >\n          <dx-selection\n            mode=\"single\"\n            show-check-boxes-mode=\"always\"\n          />\n          <dx-filter-row :visible=\"true\" />\n          <dx-scrolling mode=\"infinite\" />\n        </dx-data-grid>\n      </template>\n      <dx-required-rule message=\"Sub-Discipline is required\" />\n    </dx-drop-down-box>\n  </div>\n</template>\n<script>\nimport {mapState} from \"vuex\";\nimport {\n  DxDataGrid,\n  DxSelection,\n  DxFilterRow,\n  DxScrolling,\n} from \"devextreme-vue/data-grid\";\nimport {DxRequiredRule} from \"devextreme-vue/form\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {DxDropDownBox, DxDropDownOptions} from \"devextreme-vue/drop-down-box\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\n\nexport default {\n  components: {\n    DxRequiredRule,\n    DxDropDownBox,\n    DxDropDownOptions,\n    DxDataGrid,\n    DxSelection,\n    DxFilterRow,\n    DxScrolling,\n  },\n  props: [\"readOnly\", \"value\", \"onValueChanged\"],\n  data() {\n    return {\n      subDisciplinesDataSource: new DataSource({\n        store: new CustomStore({\n          loadMode: \"raw\",\n          key: \"id\",\n          load: this.load,\n        }),\n      }),\n      subDiscDropDownRef: \"subDiscDropDown\",\n      subDiscColumns: [\n        {\n          dataField: \"disciplineId\",\n          caption: \"Discipline\",\n          visible: false,\n        },\n        {\n          dataField: \"disciplineName\",\n          caption: \"Discipline\",\n        },\n        {\n          dataField: \"name\",\n          caption: \"Sub-discipline\",\n        },\n        {\n          dataField: \"description\",\n          caption: \"Description\",\n        },\n      ],\n      selectedSubDiscKeys: [],\n      refreshKey: 0,\n      currSubDisc: null,\n      inputAttr: { 'aria-label': 'Discipline/Sub-Discipline' }\n    };\n  },\n  computed: {\n    ...mapState(\"events\", [\"eventDetails\"]),\n    dropDownInstance: function () {\n      return this.$refs[this.subDiscDropDownRef].instance;\n    },\n  },\n  methods: {\n    async load() {\n      let response = await this.$http.get(`disciplines`);\n\n      let allDisciplines = response.data.data;\n      let subDisciplines = [];\n\n      // JSON values need flattening\n      for (let i = 0; i < allDisciplines.length; i++) {\n        let curDisc = allDisciplines[i];\n        for (let j = 0; j < curDisc.subDisciplines.length; j++) {\n          subDisciplines.push({\n            ...curDisc.subDisciplines[j],\n            disciplineName: curDisc.name,\n            disciplineId: curDisc.id,\n          });\n        }\n      }\n\n      return subDisciplines;\n    },\n    subDisciplineFormatter() {\n      return this.currSubDisc == null\n        ? null\n        : `${this.currSubDisc.disciplineName} - ${this.currSubDisc.name}`;\n    },\n    onSubDiscDropdownSelectionChanged(e) {\n      let selectedSubDisc = e.selectedRowsData[0];\n\n      if (selectedSubDisc) {\n        this.currSubDisc = selectedSubDisc;\n        this.eventDetails.subDisciplineId = selectedSubDisc.id;\n        this.refreshKey++;\n      }\n\n      if (this.onValueChanged !== undefined) {\n        this.onValueChanged(selectedSubDisc);\n      }\n    },\n    saveInitialSubDiscipline() {\n      // This gets the current sub disc from the data store and sets it to currSubDisc\n      // This was the easiest way to format the name\n      this.subDisciplinesDataSource\n        .store()\n        .byKey(this.value)\n        .then((x) => {\n          this.currSubDisc = x;\n          // This forces the component to repaint so that name is visible\n          this.refreshKey++;\n        });\n      \n        return this.currSubDisc;\n    },\n    getFromDataSource(id){\n      // this works because this lookup just gets all every time\n      let val;\n      this.subDisciplinesDataSource\n        .store()\n        .byKey(id)\n        .then((x) => {\n          val = x;\n        });\n      \n        return val;\n    },\n  },\n  mounted() {\n    this.selectedSubDiscKeys = [this.eventDetails.subDisciplineId];\n    this.subDisciplinesDataSource.load().then(() => {\n      this.saveInitialSubDiscipline();\n    });\n  },\n};\n</script>\n\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sub-discipline-select-box.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sub-discipline-select-box.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sub-discipline-select-box.vue?vue&type=template&id=0a7a8159&scoped=true\"\nimport script from \"./sub-discipline-select-box.vue?vue&type=script&lang=js\"\nexport * from \"./sub-discipline-select-box.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0a7a8159\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <div class=\"toolbar-text-container\">\n      <div>\n        <p class=\"toolbar-text-header\">Organisations</p>\n        <p class=\"toolbar-text-info\">\n          This table contains a list of all organisations that have been\n          assigned to this event. 'Event Owners' will be able to modify this\n          event and create surveys, and 'Partners' will have a read-only view.\n        </p>\n      </div>\n      <div class=\"assign-button-container\">\n        <dx-button\n          v-if=\"eventDetails && canUserEdit\"\n          type=\"default\"\n          class=\"btn-secondary\"\n          @click=\"onAssignOrgClicked\"\n          ><i class=\"fas fa-plus\" /> Assign organisation</dx-button\n        >\n      </div>\n    </div>\n    <div :key=\"dataGridRefreshKey\">\n      <dx-data-grid\n        class=\"thin-column-chooser multi-select-grid-property\"\n        :show-borders=\"false\"\n        :data-source=\"eventDetails.eventOrganisations\"\n        :noDataText=\"noDataText\"\n        key-expr=\"organisationId\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"true\"\n        :ref=\"dataGridRef\"\n      >\n        <dx-paging :page-size=\"5\" />\n        <dx-pager\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <dx-filter-row :visible=\"true\" />\n        <DxHeaderFilter\n          :visible=\"true\"\n          :allowSearch=\"true\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n\n        <template #actions-template=\"cell\">\n          <div\n            class=\"actions-container\"\n            v-if=\"canUserEdit\"\n          >\n            <div>\n              <dx-button\n                @click=\"onEditEventOrgClicked(cell.data.data.organisationId)\"\n                type=\"default\"\n                class=\"edit-org-button\"\n                hint=\"Edit\"\n              >\n                <i class=\"fas fa-edit purple-icon\" />\n              </dx-button>\n            </div>\n\n            <div class=\"delete-org-button-container\">\n              <dx-button\n                @click=\"onDeleteOrgClicked(cell.data.data.organisationId)\"\n                type=\"default\"\n                class=\"btn-delete\"\n                icon=\"trash\"\n                hint=\"Delete\"\n              />\n            </div>\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n    <dx-popup\n      :visible.sync=\"popupVisible\"\n      :drag-enabled=\"false\"\n      :hide-on-outside-click=\"true\"\n      :show-title=\"true\"\n      :max-width=\"700\"\n      height=\"auto\"\n      title=\"Assign Organisation\"\n      :onHiding=\"onPopupClosed\"\n      :onShown=\"onPopupOpened\"\n    >\n      <div class=\"popup-contents-container\">\n        <div>\n          Search for the organisation you would like to add from the dropdown\n          below:\n        </div>\n        <div>\n          <label>Organisation <span class=\"red\">*</span></label>\n          <dx-lookup\n            :ref=\"orgLookupRef\"\n            :data-source=\"orgsDataSource\"\n            v-model=\"orgDetails.organisation\"\n            display-expr=\"name\"\n            value-expr=\"this\"\n            :search-enabled=\"true\"\n            search-mode=\"contains\"\n            :search-expr=\"['name']\"\n            placeholder=\"Select...\"\n            @opened=\"onOrgDropDownOpened\"\n            :defer-rendering=\"false\"\n            labelMode=\"hidden\"\n            :disabled=\"editingEventOrg\"\n            :key=\"popupRefreshKey\"\n            :input-attr=\"inputAttrOrg\"\n          >\n            <dxValidator :ref=\"orgValidatorRef\">\n              <dx-required-rule message=\"Organisation is required\" />\n            </dxValidator>\n          </dx-lookup>\n        </div>\n\n        <div class=\"org-details-container\">\n          <div>\n            <div class=\"org-details-header\">Known as</div>\n            <div class=\"org-details-text\">\n              {{\n                orgDetails.organisation != undefined\n                  ? orgDetails.organisation.knownAs\n                  : \"-\"\n              }}\n            </div>\n          </div>\n\n          <div>\n            <div class=\"org-details-header\">Alternative name</div>\n            <div class=\"org-details-text\">\n              {{\n                orgDetails.organisation != undefined\n                  ? orgDetails.organisation.alternativeName\n                  : \"-\"\n              }}\n            </div>\n          </div>\n\n          <div>\n            <div class=\"org-details-header\">Primary Discipline</div>\n            <div class=\"org-details-text\">\n              {{\n                orgDetails.organisation != undefined\n                  ? orgDetails.organisation.discipline\n                  : \"-\"\n              }}\n            </div>\n          </div>\n\n          <div>\n            <div class=\"org-details-header\">Region</div>\n            <div class=\"org-details-text\">\n              {{\n                orgDetails.organisation != undefined\n                  ? orgDetails.organisation.region\n                  : \"-\"\n              }}\n            </div>\n          </div>\n        </div>\n\n        <div>\n          <label id=\"rel-type-dd\"\n            >Relationship type <span class=\"red\">*</span></label\n          >\n          <div class=\"rel-type-info\">\n            'Event owners' will be able to modify this event and create surveys,\n            'Partners' will have a read-only view.\n          </div>\n\n          <dx-select-box\n            value-expr=\"this\"\n            :ref=\"relTypeSelBoxRef\"\n            :data-source=\"relTypesDataSource\"\n            v-model=\"orgDetails.relationshipType\"\n            displayExpr=\"name\"\n            labelMode=\"hidden\"\n            :defer-rendering=\"false\"\n            :input-attr=\"inputAttrRelType\"\n          >\n            <dxValidator :ref=\"relTypeValidatorRef\">\n              <dx-required-rule message=\"Relationship type is required\" />\n            </dxValidator>\n          </dx-select-box>\n        </div>\n\n        <div :key=\"popupRefreshKey\">\n          <label>Subdiscipline <span class=\"red\">*</span></label>\n          <SubDisciplineSelectBox\n            :ref=\"subDiscSelBoxRef\"\n            :read-only=\"!$can(userAction, $subjects.event.subject)\"\n            :value=\"orgDetails.subDisciplineId\"\n            :onValueChanged=\"onSubDiscValueChanged\"\n          />\n        </div>\n\n        <div class=\"actions-container\">\n          <dx-button\n            type=\"default\"\n            class=\"btn-primary\"\n            styling-mode=\"contained\"\n            @click=\"onAddOrgClicked\"\n          >\n            <i class=\"fas fa-plus\" />{{ editingEventOrg ? \"Save\" : \"Add\" }}\n          </dx-button>\n          <dx-button\n            type=\"default\"\n            class=\"btn-secondary\"\n            styling-mode=\"contained\"\n            @click=\"closePopup\"\n          >\n            <i class=\"fas fa-times\" /> Cancel\n          </dx-button>\n        </div>\n      </div>\n    </dx-popup>\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState, mapGetters, mapMutations} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n} from \"devextreme-vue/data-grid\";\nimport DxLookup from \"devextreme-vue/lookup\";\nimport {DxSelectBox} from \"devextreme-vue/select-box\";\nimport {DxValidator, DxRequiredRule} from \"devextreme-vue/validator\";\nimport DxPopup from \"devextreme-vue/popup\";\nimport DataSource from \"devextreme/data/data_source\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport {isNotEmpty, configureLookupSearch} from \"@/common/helperFunctions\";\nimport {\n  LookupCodes,\n  eventOwnerRelationshipType,\n  activeEntityFilter,\n} from \"@/common/constants\";\nimport {createModel} from \"./assigned-org-list-col-defs\";\nimport SubDisciplineSelectBox from \"../../shared/sub-discipline-select-box.vue\";\n\nexport default {\n  components: {\n    DxButton,\n    DxPopup,\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxPaging,\n    DxRequiredRule,\n    DxLookup,\n    DxSelectBox,\n    DxValidator,\n    SubDisciplineSelectBox,\n  },\n  props: [\n    \"assignedOrganisations\",\n    \"isAdd\",\n    \"eventSubDisciplineId\",\n    \"canUserEdit\",\n  ],\n  data() {\n    return {\n      orgsDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrgs,\n          byKey: async (key) => {\n            return this.fetchOrgDetails(key);\n          },\n        }),\n      }),\n      relTypesDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          loadMode: \"raw\",\n          load: this.loadRelationshipTypes,\n        }),\n      }),\n      dataGridRef: \"grid\",\n      noDataText: \"No assigned organisations.\",\n      columns: createModel({}),\n      popupVisible: false,\n      orgDetails: {},\n      orgInitalLoadComplete: false,\n      dataGridRefreshKey: 0,\n      popupRefreshKey: 0,\n      orgValidatorRef: \"orgValidatorRef\",\n      relTypeValidatorRef: \"relTypeValidatorRef\",\n      orgLookupRef: \"orgLookupRef\",\n      relTypeSelBoxRef: \"relTypeSelBoxRef\",\n      subDiscSelBoxRef: \"subDiscSelBoxRef\",\n      editingEventOrg: false,\n      inputAttrOrg: { 'aria-label': 'Organisation' },\n      inputAttrRelType: { 'aria-labelledby': 'rel-type-dd' }\n    };\n  },\n  computed: {\n    ...mapState(\"events\", [\"eventDetails\"]),\n    ...mapGetters(\"events\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    dataGridInstance: function () {\n      return this.$refs[this.dataGridRef].instance;\n    },\n    orgValidatorInstance: function () {\n      return this.$refs[this.orgValidatorRef].instance;\n    },\n    relTypeValidatorInstance: function () {\n      return this.$refs[this.relTypeValidatorRef].instance;\n    },\n    relTypeSelBoxInstance: function () {\n      return this.$refs[this.relTypeSelBoxRef].instance;\n    },\n    orgLookupInstance: function () {\n      return this.$refs[this.orgLookupRef].instance;\n    },\n    initalOrganisationId: function () {\n      return this.$route.query.organisationId;\n    },\n    shouldAssignOrgByDefault() {\n      return this.isAdd && !this.orgInitalLoadComplete;\n    },\n    initalOrganisationExists() {\n      return isNotEmpty(this.initalOrganisationId);\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"organisations\", {\n      fetchOrgDetails: \"fetchOrgDetails\",\n      clearOrgDetails: \"clear\",\n    }),\n    ...mapMutations(\"events\", [\"addOrg\", \"removeOrg\"]),\n    onBackClicked() {\n      this.$router.go(-1);\n    },\n    resetValidators() {\n      this.orgValidatorInstance.reset();\n      this.relTypeValidatorInstance.reset();\n    },\n    onPopupOpened() {\n      if (!this.editingEventOrg) {\n        this.orgDetails.subDiscipline = this.getInitialSubDiscipline();\n      }\n    },\n    getInitialSubDiscipline() {\n      return this.$refs[this.subDiscSelBoxRef].saveInitialSubDiscipline();\n    },\n    onPopupClosed() {\n      this.orgDetails = {};\n      this.editingEventOrg = false;\n      this.resetValidators();\n    },\n    async loadOrgs(searchOptions) {\n      // server side filtering to remove inactive orgs and remove already selected orgs\n      let orgsFilter = [activeEntityFilter];\n      this.getRemoveCurrentOrgsFilter().forEach((x) => {\n        orgsFilter.push(\"and\");\n        orgsFilter.push(x);\n      });\n\n      let loadOptions = configureLookupSearch(\n        searchOptions,\n        \"name\",\n        false,\n        orgsFilter,\n      );\n\n      let response = await this.$http.get(`organisations/all`, {\n        params: loadOptions,\n      });\n\n      // sets inital EventOwner org, see function for logic\n      if (this.shouldAssignOrgByDefault) {\n        this.setIntialOrganisation(response.data.data);\n      }\n\n      this.orgInitalLoadComplete = true;\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    async setIntialOrganisation(orgs) {\n      // sets inital EventOwner org as the one in the URL query \"organisationId\" (if it exists)\n      // If it doesn't exist, and user only has access to 1 org then sets that org as default Event Owner\n      if (this.initalOrganisationExists) {\n        // in try catch in case user doesn't have access to org or ID is invalid\n        try {\n          // use getter from vuex store as easier, but then have to clear it.\n          let resp = await this.$http.get(\n            `organisations/display/${this.initalOrganisationId}`,\n          );\n          this.addInitialEventOwnerOrg(resp.data);\n        } catch (e) {\n          this.notifyError(\"Unable to add default organisation.\");\n        } finally {\n          this.clearOrgDetails();\n        }\n      } else if (orgs.length == 1) {\n        this.addInitialEventOwnerOrg(orgs[0]);\n      }\n    },\n    onSubDiscValueChanged(e) {\n      this.orgDetails.subDiscipline = e;\n    },\n    addInitialEventOwnerOrg(org) {\n      this.addOrg({\n        ...org,\n        organisationId: org.id,\n        relationshipTypeId: eventOwnerRelationshipType.id,\n        relationshipTypeName: eventOwnerRelationshipType.name,\n      });\n      this.$refs.grid.instance.refresh();\n      this.dataGridRefreshKey++;\n    },\n    async loadRelationshipTypes(searchOptions) {\n      let loadOptions = configureLookupSearch(searchOptions);\n\n      let response = await this.$http.get(\n        `lookup/${LookupCodes.eventOrgRelationshipType}`,\n        {params: loadOptions},\n      );\n\n      return response.data.data;\n    },\n    getRemoveCurrentOrgsFilter() {\n      // Returns the filter array needed for server side filtering\n      //    to remove already selected event orgs\n\n      let filter = [];\n\n      // Return if no orgs or no eventDetails yet.\n      if (!this.eventDetails.eventOrganisations) {\n        return filter;\n      }\n\n      // For each org, add filter to remove from returned list.\n      // See DxDataSource.filter Unary filter API for more info\n      for (let i = 0; i < this.eventDetails.eventOrganisations.length; i++) {\n        let id = this.eventDetails.eventOrganisations[i].organisationId;\n        filter.push([\"!\", [\"id\", \"=\", `${id}`]]);\n      }\n\n      return filter;\n    },\n    closePopup() {\n      this.popupVisible = false;\n      this.resetValidators();\n    },\n    async onEditEventOrgClicked(e) {\n      // e = org Id.\n      // set popup form values to the EventOrg that was clicked\n      const [editingOrg] = this.eventDetails.eventOrganisations.filter(\n        (x) => x.organisationId === e,\n      );\n\n      if (editingOrg) {\n        const {subDisciplineId, relationshipTypeId, relationshipTypeName} =\n          editingOrg;\n        let subDisc =\n          this.$refs[this.subDiscSelBoxRef].getFromDataSource(subDisciplineId);\n\n        if (subDisc === undefined) {\n          subDisc = {id: null};\n        }\n\n        // relType is in object because select box uses \"this\" for for value not \"id\"\n        this.orgDetails = {\n          relationshipType: {\n            id: relationshipTypeId,\n            name: relationshipTypeName,\n          },\n          organisation: {\n            ...editingOrg,\n            organisationId: editingOrg.organisationId,\n            id: editingOrg.organisationId,\n          },\n          subDiscipline: subDisc,\n          subDisciplineId: subDisc.id,\n        };\n        this.popupVisible = true;\n        this.orgLookupInstance.repaint();\n        this.popupRefreshKey++;\n        this.editingEventOrg = true;\n      }\n    },\n    onDeleteOrgClicked(id) {\n      this.removeOrg(id);\n      this.dataGridInstance.refresh(); // As using the array from state and not a DataSource this needs manually refreshing to reflect delete.\n    },\n    onAssignOrgClicked() {\n      this.popupVisible = true;\n      let subDisc = this.$refs[this.subDiscSelBoxRef].getFromDataSource(\n        this.eventDetails.subDisciplineId,\n      );\n      this.orgDetails.subDisciplineId = this.eventDetails.subDisciplineId;\n      this.orgDetails.subDiscipline = subDisc;\n    },\n    async onAddOrgClicked(e) {\n      // Handles adding and editing\n\n      let result = await e.validationGroup.validate();\n\n      if (!result.isValid) {\n        this.notifyError(\n          `Unable to add organisation. An organisation and a relationship type must be selected.`,\n        );\n        this.resetValidators();\n        return;\n      }\n\n      // If editing event org then find it and update values\n      // otherwise add new event org\n      if (this.editingEventOrg) {\n        const [editingOrg] = this.eventDetails.eventOrganisations.filter(\n          (x) =>\n            x.organisationId === this.orgDetails.organisation.organisationId,\n        );\n\n        editingOrg.relationshipTypeId = this.orgDetails.relationshipType.id;\n        editingOrg.relationshipTypeName = this.orgDetails.relationshipType.name;\n        editingOrg.subDisciplineId = this.orgDetails.subDiscipline.id;\n        editingOrg.subDisciplineName = this.orgDetails.subDiscipline.name;\n      } else {\n        this.addOrg({\n          ...this.orgDetails.organisation,\n          organisationId: this.orgDetails.organisation.id,\n          relationshipTypeId: this.orgDetails.relationshipType.id,\n          relationshipTypeName: this.orgDetails.relationshipType.name,\n          subDisciplineId: this.orgDetails.subDiscipline.id,\n          subDisciplineName: this.orgDetails.subDiscipline.name,\n        });\n      }\n      this.dataGridInstance.refresh();\n      this.dataGridRefreshKey++;\n      this.popupVisible = false;\n    },\n    onOrgDropDownOpened() {\n      this.orgsDataSource.reload();\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"@/themes/custom-variables.scss\";\n\n.dx-datagrid-header-panel .dx-toolbar {\n  margin: 0;\n  padding-right: 20px;\n  background-color: transparent;\n}\n\n.dx-datagrid-header-panel .dx-toolbar-items-container {\n  height: 70px;\n}\n\n.assigned-org-table-toolbar {\n  border-bottom: 3px solid $brand-primary;\n}\n\n.toolbar-text-container {\n  height: 100%;\n  display: flex;\n  width: 100%;\n  flex-direction: row;\n  justify-content: space-between;\n  gap: 25px;\n  border-bottom: 3px solid $brand-primary;\n  padding-bottom: 10px;\n  margin-bottom: 10px;\n}\n\n.assign-button-container {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  min-width: 175px;\n}\n\n.rel-type-info {\n  font-size: $font-size-component;\n  margin: unset !important;\n  padding-bottom: 5px;\n}\n\n.toolbar-text-header {\n  font: $base-font-family-medium;\n  font-size: $font-size-subheading;\n  margin: unset !important;\n}\n\n.toolbar-text-info {\n  font-size: $font-size-component;\n  margin: unset !important;\n  padding-top: 5px;\n}\n\n.actions-container {\n  display: flex;\n  gap: 15px;\n}\n\n.delete-org-button-container {\n  text-align: center;\n}\n\n.edit-org-button {\n  background-color: transparent !important;\n  color: $brand-primary !important;\n  border: solid 1px $brand-primary;\n\n  &:hover {\n    background-color: $brand-primary !important;\n\n    i {\n      color: $white !important;\n    }\n\n    .dx-icon {\n      color: $white !important;\n    }\n  }\n}\n\n@media (width < 500px) {\n  .toolbar-text-container {\n    flex-wrap: wrap;\n    gap: 10px;\n  }\n  .assign-button-container {\n    min-width: 100%;\n    .btn-secondary {\n      width: 100%;\n    }\n  }\n}\n\n.org-details-container {\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  padding-right: 15px;\n  gap: 10px;\n}\n\n.org-details-header {\n}\n.org-details-text {\n  font: $base-font-family-bold;\n}\n\n.popup-contents-container {\n  display: flex;\n  flex-direction: column;\n  gap: 25px;\n}\n\nlabel {\n  display: block;\n  padding-bottom: 4px;\n}\n\n.red {\n  color: $brand-error;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./assigned-organisations-table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./assigned-organisations-table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./assigned-organisations-table.vue?vue&type=template&id=69b6c8ed&scoped=true\"\nimport script from \"./assigned-organisations-table.vue?vue&type=script&lang=js\"\nexport * from \"./assigned-organisations-table.vue?vue&type=script&lang=js\"\nimport style0 from \"./assigned-organisations-table.vue?vue&type=style&index=0&id=69b6c8ed&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"69b6c8ed\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <div class=\"event-form-group\">\n      <dx-form\n        :form-data=\"eventDetails\"\n        :ref=\"formRefKey\"\n        :readOnly=\"!canUserEdit\"\n        :show-validation-summary=\"true\"\n        :scrolling-enabled=\"false\"\n        validation-group=\"eventDetails\"\n      >\n        <dx-item\n          item-type=\"group\"\n          caption=\"Details\"\n          :col-count=\"4\"\n          :col-span=\"2\"\n          css-class=\"brand-border-top-form-group\"\n        >\n          <dx-simple-item data-field=\"name\">\n            <dx-label text=\"Name of Activity/Tour\" />\n            <dx-required-rule message=\"Name is required\" />\n            <dx-string-length-rule\n              :max=\"maxLength.name\"\n              :message=\"`Name is too long. Maximum allowed length is ${maxLength.name} characters`\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"locationId\"\n            editorType=\"dxLookup\"\n            :editorOptions=\"{\n              ...editorOptions.location,\n              dataSource: locationDataSource,\n              onInitialized: this.onLocationInitialized,\n            }\"\n          >\n            <dx-label text=\"Location\" />\n            <dx-required-rule message=\"Location is required\" />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"isTicketedId\"\n            editorType=\"dxRadioGroup\"\n            :editorOptions=\"{\n              ...editorOptions.isTicketed,\n              layout: 'horizontal',\n              onValueChanged: this.onTicketingValueChanged,\n            }\"\n          >\n            <dx-label text=\"Ticketed\" />\n            <dx-required-rule message=\"Ticketed is required\" />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"boxOfficeProviderId\"\n            editorType=\"dxSelectBox\"\n            :editorOptions=\"{\n              ...editorOptions.boxOfficeProvider,\n              dataSource: boxOfficeProvidersDataSource,\n              disabled: disableBoxOfficeBoxes,\n            }\"\n          >\n            <dx-label text=\"Ticketing Provider\" />\n            <dx-custom-rule\n              :validation-callback=\"validateBoxOffice\"\n              message=\"Ticketing Provider is required\"\n              :reevaluate=\"true\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"boxOfficeReferenceId\"\n            :editorOptions=\"{disabled: disableBoxOfficeBoxes}\"\n          >\n            <dx-label text=\"Ticketing Provider Reference ID\" />\n\n            <dx-string-length-rule\n              :max=\"maxLength.name\"\n              :message=\"`Ticketing Provider Reference ID is too long. Maximum allowed length is ${maxLength.grantiemId} characters`\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"eventTypeId\"\n            editorType=\"dxSelectBox\"\n            :editorOptions=\"editorOptions.eventType\"\n          >\n            <dx-label text=\"Event Type\" />\n            <dx-required-rule message=\"Event Type is required\" />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"distributionTypeId\"\n            editorType=\"dxSelectBox\"\n            cssClass=\"multiline-selectbox\"\n            :editorOptions=\"editorOptions.distributionType\"\n          >\n            <dx-label text=\"Distribution Type\" />\n            <dx-required-rule message=\"Distribution Type is required\" />\n          </dx-simple-item>\n\n          <dx-simple-item>\n            <dx-label text=\"Discipline/Sub-Discipline\" />\n\n            <template #default>\n              <SubDisciplineSelectBox\n                :readOnly=\"!canUserEdit\"\n                :value=\"eventDetails.subDisciplineId\"\n              />\n            </template>\n            <dx-required-rule message=\"Sub-Discipline is required\" />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"startDate\"\n            editor-type=\"dxDateBox\"\n            :editorOptions=\"{\n              dateSerializationFormat: 'yyyy-MM-dd',\n              displayFormat: 'dd/MM/yyyy',\n              max: eventDetails.endDate,\n              dateOutOfRangeMessage: 'Start date must be before the end date',\n            }\"\n          >\n            <dx-label text=\"Start date\" />\n            <dx-required-rule message=\"Start date is required\" />\n            <dx-custom-rule\n              :validation-callback=\"validateDateRange\"\n              message=\"Start date out of range\"\n              :reevaluate=\"true\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"endDate\"\n            editor-type=\"dxDateBox\"\n            :editorOptions=\"{\n              dateSerializationFormat: 'yyyy-MM-dd',\n              displayFormat: 'dd/MM/yyyy',\n              min: eventDetails.startDate,\n              dateOutOfRangeMessage: 'End date must be greater than start date',\n            }\"\n          >\n            <dx-label text=\"End date\" />\n            <dx-required-rule message=\"End date is required\" />\n            <dx-custom-rule\n              :validation-callback=\"validateDateRange\"\n              message=\"End date out of range\"\n              :reevaluate=\"true\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"isFundedId\"\n            editorType=\"dxRadioGroup\"\n            :editorOptions=\"{\n              ...editorOptions.isFunded,\n              layout: 'horizontal',\n            }\"\n          >\n            <dx-label text=\"Event funded by your Arts Council England grant?\" />\n            <dx-required-rule\n              message=\"Event funded by your Arts Council England grant is required\"\n            />\n          </dx-simple-item>\n        </dx-item>\n      </dx-form>\n      <dx-tooltip\n        showEvent=\"dxhoverstart\"\n        hideEvent=\"dxhoverend\"\n        position=\"top\"\n        target=\"label[class*='locationTooltip']\"\n      >\n        <div class=\"tooltip-400-width\">\n          If the location of this event is not listed in this dropdown, then\n          please create a new location within the 'Locations' page\n        </div>\n      </dx-tooltip>\n\n      <div class=\"assigned-org-table\">\n        <AssignedOrganisationsTable\n          :assignedOrganisations=\"assignedOrgs\"\n          :isAdd=\"!isEditMode\"\n          :eventSubDisciplineId=\"eventDetails.subDisciplineId\"\n          :canUserEdit=\"canUserEdit\"\n        />\n      </div>\n      <dx-load-panel\n        :visible.sync=\"isProcessing\"\n        :show-indicator=\"true\"\n        :show-pane=\"true\"\n        :shading=\"true\"\n        :hide-on-outside-click=\"false\"\n      />\n    </div>\n  </div>\n</template>\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {\n  DxForm,\n  DxItem,\n  DxLabel,\n  DxRequiredRule,\n  DxSimpleItem,\n  DxStringLengthRule,\n  DxCustomRule,\n} from \"devextreme-vue/form\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxLookup} from \"devextreme-vue/lookup\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {DxTooltip} from \"devextreme-vue\";\nimport DxRadioGroup from \"devextreme-vue/radio-group\";\nimport {isNotEmpty, configureLookupSearch} from \"@/common/helperFunctions\";\nimport {eventTicketingLookups, activeEntityFilter} from \"@/common/constants.js\";\nimport {editorOptions} from \"./event-details-form-options\";\nimport AssignedOrganisationsTable from \"./assigned-organisations-table.vue\";\nimport SubDisciplineSelectBox from \"../../shared/sub-discipline-select-box.vue\";\n\nexport default {\n  components: {\n    DxForm,\n    DxLabel,\n    DxLoadPanel,\n    DxItem,\n    DxRequiredRule,\n    DxSimpleItem,\n    DxStringLengthRule,\n    AssignedOrganisationsTable,\n    // eslint-disable-next-line vue/no-unused-components\n    DxLookup,\n    DxCustomRule,\n    DxTooltip,\n    // eslint-disable-next-line vue/no-unused-components\n    DxRadioGroup,\n    SubDisciplineSelectBox,\n  },\n  props: [\"canUserEdit\"],\n  data() {\n    return {\n      locationDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadLocations,\n          byKey: async (key) => {\n            return this.fetchLocationDetails(key);\n          },\n        }),\n      }),\n      boxOfficeProvidersDataSource: new DataSource({\n        store: new CustomStore({\n          loadMode: \"raw\",\n          key: \"id\",\n          load: this.loadBoxOfficeProviders,\n        }),\n      }),\n      subDiscGridRef: \"subDiscGridRef\",\n      maxLength: {\n        name: 255,\n      },\n      assignedOrgs: [],\n      boxOfficeRefreshKey: 0,\n      editorOptions: editorOptions,\n      formRefKey: \"formEventDetails\",\n      todaysDate: new Date(),\n    };\n  },\n  computed: {\n    ...mapState(\"events\", [\"eventDetails\"]),\n    ...mapGetters(\"events\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    disableBoxOfficeBoxes: function () {\n      // Not sure why but this needs to be here for boxes to be reactive\n      this.boxOfficeRefreshKey;\n\n      // Only returns true if isTicketedId is not empty and ID relates to false\n      return (\n        isNotEmpty(this.eventDetails.isTicketedId) &&\n        eventTicketingLookups[this.eventDetails.isTicketedId] === false\n      );\n    },\n    formData: function () {\n      return this.$refs[this.formRefKey].formData;\n    },\n    formInstance: function () {\n      return this.$refs[this.formRefKey].instance;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"locations\", {\n      fetchLocationDetails: \"fetchLocationDetails\",\n      clearLocationDetails: \"clear\",\n    }),\n    async loadLocations(searchOptions) {\n      let loadOptions = configureLookupSearch(\n        searchOptions,\n        \"OnlineStatus\",\n        true,\n        activeEntityFilter,\n      );\n\n      let response = await this.$http.get(`locations`, {\n        params: loadOptions,\n      });\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    async loadBoxOfficeProviders(loadOptions) {\n      let response = await this.$http.get(`box-office/providers`, {\n        params: loadOptions,\n      });\n\n      return response.data.data;\n    },\n    onLocationInitialized(e) {\n      if (!this.isEditMode) {\n        e.component\n          .getDataSource()\n          .load()\n          .then(function (data) {\n            e.component.option(\"value\", data[0].id); // Set the value with the data's first element\n          });\n      }\n    },\n    onTicketingValueChanged(e) {\n      // Set Box Office/Ticketing values to null\n      if (eventTicketingLookups[e.value] === false) {\n        this.formInstance.updateData({\n          ...this.formData,\n          boxOfficeProviderId: null,\n          boxOfficeReferenceId: null,\n        });\n      }\n\n      // needed to recalc disableBoxOfficeBoxes\n      this.boxOfficeRefreshKey++;\n    },\n    validateBoxOffice(e) {\n      // true if isTicketed == false and its not an empy array\n      return (\n        eventTicketingLookups[this.eventDetails.isTicketedId] === false ||\n        !(e.value === null || e.value === 0 || e.value.length === 0)\n      );\n    },\n    validateDateRange(e) {\n      let dateValue = new Date(e.value);\n      return (\n        dateValue.getFullYear() >= 2022 &&\n        dateValue.getFullYear() < this.todaysDate.getFullYear() + 15\n      );\n    },\n    validateSubDiscipline() {\n      return (\n        isNotEmpty(this.eventDetails) &&\n        isNotEmpty(this.eventDetails.subDisciplineId)\n      );\n    },\n  },\n  mounted() {\n    document\n      .querySelector(\"label[for*='location']\")\n      .classList.add(\"tooltip\", \"locationTooltip\");\n  },\n  beforeDestroy() {\n    this.clearLocationDetails();\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n.dx-form-validation-summary {\n  margin-top: 0px;\n}\n.dx-fieldset {\n  width: 40%;\n  float: left;\n}\n\n.dx-field > .dx-lookup {\n  flex: 1;\n}\n\n.assigned-org-table {\n  padding-top: 10px;\n  padding-bottom: 50px;\n}\n\n.dx-list-item-content {\n  word-wrap: break-word;\n  white-space: normal;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-details.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./event-details.vue?vue&type=template&id=2c08d358&scoped=true\"\nimport script from \"./event-details.vue?vue&type=script&lang=js\"\nexport * from \"./event-details.vue?vue&type=script&lang=js\"\nimport style0 from \"./event-details.vue?vue&type=style&index=0&id=2c08d358&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2c08d358\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"event-form-group\"},[_c('dx-form',{attrs:{\"form-data\":_vm.eventDetails,\"readOnly\":!_vm.canUserEdit,\"show-validation-summary\":true,\"scrolling-enabled\":false,\"validation-group\":\"eventDetails\"}},[_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Tickets\",\"css-class\":\"form-sub-group-container-forecast\",\"col-count\":4,\"col-span\":2}},[_c('dx-group-item',{attrs:{\"col-count\":4,\"col-span\":4,\"css-class\":\"form-section-label\"}},[_c('dx-label',{attrs:{\"css-class\":\"brand-bottom-border\",\"text\":\"Please detail in this section the number of occurrences of this event at this location - for example, if your event has run 3 times a day for 5 days in total,  then number of occurrences would be 15. The total tickets available is the number of tickets available across all of these occurrences - for example, 100 potential tickets for each of the 15 occurrences= 1500 total tickets available.\"}})],1),_c('dx-group-item',{attrs:{\"col-count\":2,\"col-span\":2}},[_c('dx-simple-item',{attrs:{\"data-field\":\"occurencesAtLocation\",\"editorType\":\"dxNumberBox\",\"editor-options\":_vm.editorOptions.occurrences}},[_c('dx-label',{attrs:{\"text\":\"Occurrences at Location\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"totalTicketsAvailable\",\"editorType\":\"dxNumberBox\",\"editor-options\":{\n              ..._vm.editorOptions.totalTicketsAvailable,\n              disabled: _vm.showTickets\n              }}},[_c('dx-label',{attrs:{\"text\":\"Total Tickets Available\"}})],1)],1)],1),_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Attendance\",\"col-count\":4,\"col-span\":4,\"css-class\":\"form-sub-group-container-forecast\"}},[_c('dx-group-item',{attrs:{\"col-count\":1,\"col-span\":4,\"css-class\":\"form-section-label\"}},[_c('dx-label',{attrs:{\"text\":\"Once this event has finished, please fill out the attendance for this event. This is the number of people who attended across all occurrences of this event. Please note your total attendance should be the sum of the estimated and known attendances. Total attendance can either be 100% known attendance, 100% estimated attendance, or a combination of the two.\"}})],1),_c('dx-group-item',{attrs:{\"col-span\":1,\"col-count\":1}},[_c('dx-simple-item',{attrs:{\"col-span\":1,\"data-field\":\"knownAttendance\",\"editorType\":\"dxNumberBox\",\"editor-options\":_vm.editorOptions.actAttendance}},[_c('dx-label',{attrs:{\"text\":\"Known Attendance\"}})],1),_c('dx-simple-item',{attrs:{\"col-span\":1,\"data-field\":\"estimatedAttendance\",\"editorType\":\"dxNumberBox\",\"editor-options\":_vm.editorOptions.estAttendance}},[_c('dx-label',{attrs:{\"text\":\"Estimated Attendance\"}})],1),_c('dx-simple-item',{attrs:{\"col-span\":1,\"data-field\":\"totalAttendance\",\"editorType\":\"dxNumberBox\",\"editor-options\":{\n              ..._vm.editorOptions.estAttendance,\n              readOnly: true,\n              value: _vm.totalAttendance,\n            }}},[_c('dx-label',{attrs:{\"text\":\"Total Attendance\"}})],1)],1)],1)],1),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='knownAttendance']\"}},[_c('div',{staticClass:\"tooltip-400-width\"},[_vm._v(\"\\n        Use known attendance when you have measured the number of those attending, \\n        for example using tickets or a tally counter.\\n      \")])]),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='estimatedAttendance']\"}},[_c('div',{staticClass:\"tooltip-400-width\"},[_vm._v(\"\\n        Use estimated attendance when estimating the number of people attending, \\n        where attendance measurement methods are not in place. \\n      \")])]),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <div class=\"event-form-group\">\n      <dx-form\n        :form-data=\"eventDetails\"\n        :readOnly=\"!canUserEdit\"\n        :show-validation-summary=\"true\"\n        :scrolling-enabled=\"false\"\n        validation-group=\"eventDetails\"\n      >\n        <dx-item\n          item-type=\"group\"\n          caption=\"Tickets\"\n          css-class=\"form-sub-group-container-forecast\"\n          :col-count=\"4\"\n          :col-span=\"2\"\n        >\n          <dx-group-item\n            :col-count=\"4\"\n            :col-span=\"4\"\n            css-class=\"form-section-label\"\n          >\n            <dx-label\n              css-class=\"brand-bottom-border\"\n              text=\"Please detail in this section the number of occurrences of this event at this location - for example, if your event has run 3 times a day for 5 days in total,  then number of occurrences would be 15. The total tickets available is the number of tickets available across all of these occurrences - for example, 100 potential tickets for each of the 15 occurrences= 1500 total tickets available.\"\n            />\n          </dx-group-item>\n\n          <dx-group-item\n            :col-count=\"2\"\n            :col-span=\"2\"\n          >\n            <dx-simple-item\n              data-field=\"occurencesAtLocation\"\n              editorType=\"dxNumberBox\"\n              :editor-options=\"editorOptions.occurrences\"\n            >\n              <dx-label text=\"Occurrences at Location\" />\n            </dx-simple-item>\n\n            <dx-simple-item\n              data-field=\"totalTicketsAvailable\"\n              editorType=\"dxNumberBox\"\n              :editor-options=\"{\n                ...editorOptions.totalTicketsAvailable,\n                disabled: showTickets\n                }\"\n            >\n              <dx-label text=\"Total Tickets Available\" />\n            </dx-simple-item>\n          </dx-group-item>\n        </dx-item>\n\n        <dx-item\n          item-type=\"group\"\n          caption=\"Attendance\"\n          :col-count=\"4\"\n          :col-span=\"4\"\n          css-class=\"form-sub-group-container-forecast\"\n        >\n          <dx-group-item\n            :col-count=\"1\"\n            :col-span=\"4\"\n            css-class=\"form-section-label\"\n          >\n            <dx-label\n              text=\"Once this event has finished, please fill out the attendance for this event. This is the number of people who attended across all occurrences of this event. Please note your total attendance should be the sum of the estimated and known attendances. Total attendance can either be 100% known attendance, 100% estimated attendance, or a combination of the two.\"\n            />\n          </dx-group-item>\n\n          <dx-group-item\n            :col-span=\"1\"\n            :col-count=\"1\"\n          >\n            <dx-simple-item\n              :col-span=\"1\"\n              data-field=\"knownAttendance\"\n              editorType=\"dxNumberBox\"\n              :editor-options=\"editorOptions.actAttendance\"\n            >\n              <dx-label text=\"Known Attendance\" />\n            </dx-simple-item>\n            <dx-simple-item\n              :col-span=\"1\"\n              data-field=\"estimatedAttendance\"\n              editorType=\"dxNumberBox\"\n              :editor-options=\"editorOptions.estAttendance\"\n            >\n              <dx-label text=\"Estimated Attendance\" />\n            </dx-simple-item>\n            <dx-simple-item\n              :col-span=\"1\"\n              data-field=\"totalAttendance\"\n              editorType=\"dxNumberBox\"\n              :editor-options=\"{\n                ...editorOptions.estAttendance,\n                readOnly: true,\n                value: totalAttendance,\n              }\"\n            >\n              <dx-label text=\"Total Attendance\" />\n            </dx-simple-item>\n          </dx-group-item>\n        </dx-item>\n      </dx-form>\n      <dx-tooltip\n        showEvent=\"dxhoverstart\"\n        hideEvent=\"dxhoverend\"\n        position=\"top\"\n        target=\"label[class*='knownAttendance']\"\n      >\n        <div class=\"tooltip-400-width\">\n          Use known attendance when you have measured the number of those attending, \n          for example using tickets or a tally counter.\n        </div>\n      </dx-tooltip>\n      <dx-tooltip\n        showEvent=\"dxhoverstart\"\n        hideEvent=\"dxhoverend\"\n        position=\"top\"\n        target=\"label[class*='estimatedAttendance']\"\n      >\n        <div class=\"tooltip-400-width\">\n          Use estimated attendance when estimating the number of people attending, \n          where attendance measurement methods are not in place. \n        </div>\n      </dx-tooltip>\n      <dx-load-panel\n        :visible.sync=\"isProcessing\"\n        :show-indicator=\"true\"\n        :show-pane=\"true\"\n        :shading=\"true\"\n        :hide-on-outside-click=\"false\"\n      />\n    </div>\n  </div>\n</template>\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {\n  DxForm,\n  DxItem,\n  DxLabel,\n  DxSimpleItem,\n  DxGroupItem,\n} from \"devextreme-vue/form\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxTooltip} from \"devextreme-vue\";\nimport {isNotEmpty} from \"@/common/helperFunctions\";\nimport {eventTicketingLookups} from \"@/common/constants.js\";\n\nlet defaultNumberBoxOptions = {\n  format: \",###\",\n  showSpinButtons: true,\n  mode: \"numeric\",\n  min: 0,\n};\n\nexport default {\n  components: {\n    DxForm,\n    DxLabel,\n    DxGroupItem,\n    DxLoadPanel,\n    DxItem,\n    DxSimpleItem,\n    DxTooltip,\n  },\n  props: [\"canUserEdit\"],\n  data() {\n    return {\n      editorOptions: {\n        occurrences: {\n          ...defaultNumberBoxOptions,\n        },\n        totalTicketsAvailable: {\n          ...defaultNumberBoxOptions,\n        },\n        estAttendance: {\n          ...defaultNumberBoxOptions,\n        },\n        actAttendance: {\n          ...defaultNumberBoxOptions,\n        },\n      },\n    };\n  },\n  computed: {\n    ...mapState(\"events\", [\"eventDetails\"]),\n    ...mapGetters(\"events\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    showTickets: function () {\n      this.refreshKey;\n      if (!isNotEmpty(this.eventDetails.isTicketedId)) {\n        return false;\n      }\n      if (eventTicketingLookups[this.eventDetails.isTicketedId] === false) {\n        return true;\n      }\n      return false;\n    },\n    // TODO: fix these.\n    totalTicketsNumBoxStep: function () {\n      return 25; // this.calcNumBoxStep(this.eventDetails.totalTicketsAvailable);\n    },\n    estAttendanceStep: function () {\n      return 25; //this.calcNumBoxStep(this.eventDetails.estimatedAttendance);\n    },\n    totalAttendance: function () {\n      let est = this.eventDetails.estimatedAttendance;\n      let act = this.eventDetails.knownAttendance;\n\n      // If both values are empty return null.\n      if (\n        (est === null || est === undefined) &&\n        (act === null || act === undefined)\n      ) {\n        return null;\n      }\n      // Return sum. If value is empty then default to 0.\n      return (\n        (est === null || est === undefined ? 0 : est) +\n        (act === null || act === undefined ? 0 : act)\n      );\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ticketingValueChanged() {\n      this.refreshKey++; // needed to recalc computed ShowBoxOffice property\n    },\n    // TODO: Fix this\n    calcNumBoxStep(value) {\n      if (value >= 200 && value <= 500) {\n        return 50;\n      }\n      if (value >= 500) {\n        return 100;\n      }\n      return 50;\n    },\n  },\n  mounted() {\n    document\n      .querySelector(\"label[for*='estimatedAttendance']\")\n      .classList.add(\"tooltip\", \"estimatedAttendanceTooltip\");\n    document\n    .querySelector(\"label[for*='knownAttendance']\")\n    .classList.add(\"tooltip\", \"knownAttendanceTooltip\");\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"@/themes/custom-variables.scss\";\n\n.dx-form-validation-summary {\n  margin-top: 0px;\n}\n\n.dx-fieldset {\n  width: 40%;\n  float: left;\n}\n\n.dx-field > .dx-lookup {\n  flex: 1;\n}\n\n.dx-texteditor.dx-editor-outlined.dx-state-readonly {\n  background-color: transparentize($brand-primary, 0.92) !important;\n  border-color: $grey3 !important;\n}\n\n.dx-texteditor-input-container {\n  input,\n  select,\n  textarea {\n    color: black !important;\n  }\n}\n\n.form-sub-group-container-forecast {\n  .dx-texteditor.dx-state-disabled input,\n  .dx-texteditor.dx-state-readonly input {\n    color: $grey1 !important;\n  }\n}\n\n.form-section-label{\n  .dx-field-item-label-text{\n  font-size: $font-size-component;\n  }\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-forecast.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-forecast.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./event-forecast.vue?vue&type=template&id=3d4e28d1&scoped=true\"\nimport script from \"./event-forecast.vue?vue&type=script&lang=js\"\nexport * from \"./event-forecast.vue?vue&type=script&lang=js\"\nimport style0 from \"./event-forecast.vue?vue&type=style&index=0&id=3d4e28d1&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"3d4e28d1\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.isAddSurveyDisabled)?_c('div',[_vm._m(0)]):_vm._e(),_c('DxToolbar',{staticClass:\"event-surveys-table-toolbar\"},[_c('DxToolbarItem',{attrs:{\"location\":\"before\",\"css-class\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('div',{staticClass:\"toolbar-text-container\"},[_c('div',[_c('p',{staticClass:\"toolbar-text-header\"},[_vm._v(\"Surveys\")])]),_c('div',[_c('p',{staticClass:\"toolbar-text-info\"},[_vm._v(\"\\n              The list of surveys created for this event.\\n            \")])])])]},proxy:true}])}),_c('DxToolbarItem',{attrs:{\"location\":\"after\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [(_vm.canUserEdit)?_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"disabled\":_vm.isAddSurveyDisabled,\"type\":\"default\"},on:{\"click\":_vm.onAddSurveyClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" Add survey\")]):_vm._e()]},proxy:true}])})],1),_c('div',[_c('dx-data-grid',{ref:_vm.dataGridRef,staticClass:\"thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.surveyDataSource,\"noDataText\":_vm.noDataText,\"key-expr\":\"surveyId\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true},scopedSlots:_vm._u([{key:\"name-template\",fn:function(cell){return [_c('dx-button',{staticClass:\"grid-name-link dx-link link-custom\",on:{\"click\":function($event){return _vm.viewSurvey(cell.data.data.id)}}},[_vm._v(_vm._s(cell.data.value == null\n              ? `Draft - ${_vm.formatDate(cell.data.data.createdAt)}`\n              : cell.data.value)+\"\\n        \")])]}},{key:\"draft-template\",fn:function({data}){return [_c('div',[_c('span',[_vm._v(_vm._s(data.data.isDraft ? \"No\" : \"Yes\")+\" \")]),_c('i',{staticClass:\"is-draft-icon\",class:data.data.isDraft\n                ? 'fas fa-times red-icon'\n                : `fas fa-check green-icon`})])]}},{key:\"active-template\",fn:function({data}){return [(!data.data.isDraft)?_c('div',{staticClass:\"table-pill\",class:`table-pill-${data.data.isActive ? 'active' : 'inactive'}`},[_vm._v(\"\\n          \"+_vm._s(data.data.isActive ? \"Active\" : \"Inactive\")+\"\\n        \")]):_vm._e()]}},{key:\"actions-template\",fn:function(cell){return [_c('div',{staticClass:\"survey-link-container\"},[(true)?_c('div',[_c('dx-button',{staticClass:\"btn-create survey-link-button\",attrs:{\"disabled\":!cell.data.data.isActive || cell.data.data.isDraft,\"type\":\"default\",\"icon\":\"video\",\"hint\":\"Go to Survey\"},on:{\"click\":function($event){return _vm.onAddSurveyResponseClicked(cell.data.data.id)}}})],1):_vm._e()])]}}])},[_c('dx-paging',{attrs:{\"page-size\":5}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}})],1)],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('p',{staticClass:\"info-caption entity-warning red\"},[_c('span',{staticClass:\"info-header\"},[_vm._v(\"No Event Owner: \")]),_vm._v(\" Please add an event\\n      owner before creating a survey\\n    \")])\n}]\n\nexport { render, staticRenderFns }","export const createModel = () => {\n  return [\n    {\n      dataField: \"id\",\n      dataType: \"number\",\n      visible: false,\n      showInColumnChooser: false,\n    },\n    {\n      dataField: \"name\",\n      caption: \"Name\",\n      dataType: \"string\",\n      cellTemplate: \"name-template\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"surveyTemplateName\",\n      caption: \"Survey Template Name\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"numberOfQuestions\",\n      caption: \"Question Count\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"numberOfResponses\",\n      caption: \"Responses Count\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"createdDate\",\n      caption: \"Created Date\",\n      dataType: \"date\",\n      format: \"dd/MM/yyyy\",\n      sortOrder: \"desc\",\n    },\n    {\n      dataField: \"isDraft\",\n      cellTemplate: \"draft-template\",\n      caption: \"Published\",\n      dataType: \"string\",\n      headerFilter: {\n        dataSource: [\n          {\n            text: \"No\",\n            value: true,\n          },\n          {\n            text: \"Yes\",\n            value: false,\n          },\n        ],\n      },\n    },\n\n    {\n      dataField: \"isActive\",\n      cellTemplate: \"active-template\",\n      caption: \"Active\",\n      dataType: \"string\",\n      headerFilter: {\n        dataSource: [\n          {\n            text: \"Active\",\n            value: true,\n          },\n          {\n            text: \"Inactive\",\n            value: false,\n          },\n        ],\n      },\n    },\n    {\n      caption: \"\",\n      cellTemplate: \"actions-template\",\n      width: 190,\n      cssClass: \"text-center\",\n    },\n  ];\n};\n","<template>\n  <div>\n    <div v-if=\"isAddSurveyDisabled\">\n      <p class=\"info-caption entity-warning red\">\n        <span class=\"info-header\">No Event Owner: </span> Please add an event\n        owner before creating a survey\n      </p>\n    </div>\n    <DxToolbar class=\"event-surveys-table-toolbar\">\n      <DxToolbarItem\n        location=\"before\"\n        css-class=\"\"\n      >\n        <template #default>\n          <div class=\"toolbar-text-container\">\n            <div>\n              <p class=\"toolbar-text-header\">Surveys</p>\n            </div>\n            <div>\n              <p class=\"toolbar-text-info\">\n                The list of surveys created for this event.\n              </p>\n            </div>\n          </div>\n        </template>\n      </DxToolbarItem>\n\n      <DxToolbarItem\n        location=\"after\"\n      >\n        <template #default>\n          <dx-button\n            :disabled=\"isAddSurveyDisabled\"\n            v-if=\"canUserEdit\"\n            type=\"default\"\n            class=\"btn-secondary\"\n            @click=\"onAddSurveyClicked\"\n            ><i class=\"fas fa-plus\" /> Add survey</dx-button\n          >\n        </template>\n      </DxToolbarItem>\n    </DxToolbar>\n    <div>\n      <dx-data-grid\n        class=\"thin-column-chooser multi-select-grid-property\"\n        :show-borders=\"false\"\n        :data-source=\"surveyDataSource\"\n        :noDataText=\"noDataText\"\n        key-expr=\"surveyId\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"true\"\n        :ref=\"dataGridRef\"\n      >\n        <dx-paging :page-size=\"5\" />\n        <dx-pager\n          :allowed-page-sizes=\"[5, 10, 25]\"\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <dx-filter-row :visible=\"true\" />\n        <DxHeaderFilter\n          :visible=\"true\"\n          :allowSearch=\"true\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n\n        <template #name-template=\"cell\">\n          <dx-button\n            class=\"grid-name-link dx-link link-custom\"\n            @click=\"viewSurvey(cell.data.data.id)\"\n            >{{\n              cell.data.value == null\n                ? `Draft - ${formatDate(cell.data.data.createdAt)}`\n                : cell.data.value\n            }}\n          </dx-button>\n        </template>\n\n        <template #draft-template=\"{data}\">\n          <div>\n            <span>{{ data.data.isDraft ? \"No\" : \"Yes\" }} </span>\n            <i\n              class=\"is-draft-icon\"\n              :class=\"\n                data.data.isDraft\n                  ? 'fas fa-times red-icon'\n                  : `fas fa-check green-icon`\n              \"\n            ></i>\n          </div>\n        </template>\n\n        <template #active-template=\"{data}\">\n          <div\n            v-if=\"!data.data.isDraft\"\n            class=\"table-pill\"\n            :class=\"`table-pill-${data.data.isActive ? 'active' : 'inactive'}`\"\n          >\n            {{ data.data.isActive ? \"Active\" : \"Inactive\" }}\n          </div>\n        </template>\n\n        <template #actions-template=\"cell\">\n          <div class=\"survey-link-container\">\n            <div v-if=\"true\">\n              <dx-button\n                @click=\"onAddSurveyResponseClicked(cell.data.data.id)\"\n                :disabled=\"!cell.data.data.isActive || cell.data.data.isDraft\"\n                type=\"default\"\n                class=\"btn-create survey-link-button\"\n                icon=\"video\"\n                hint=\"Go to Survey\"\n              />\n            </div>\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n} from \"devextreme-vue/data-grid\";\nimport DxToolbar, {DxItem as DxToolbarItem} from \"devextreme-vue/toolbar\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {isNotEmpty} from \"@/common/helperFunctions\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {eventOwnerRelationshipType} from \"@/common/constants\";\nimport {createModel} from \"./event-surveys-list-col-defs\";\n\nexport default {\n  components: {\n    DxButton,\n    DxToolbarItem,\n    DxToolbar,\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxPaging,\n  },\n  props: [\"canUserEdit\"],\n  data() {\n    return {\n      surveyDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadSurveys,\n        }),\n      }),\n      dataGridRef: \"grid\",\n      noDataText: \"No surveys.\",\n      columns: createModel({}),\n      popupVisible: false,\n      surveyDetails: {},\n      surveyToDelete: null,\n      currentDeleteSurveyName: \"\",\n    };\n  },\n  computed: {\n    ...mapState(\"events\", [\"eventDetails\"]),\n    ...mapGetters(\"events\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    isAddSurveyDisabled: function () {\n      // Disable if no orgs yet.\n      if (!this.eventDetails.eventOrganisations) {\n        return true;\n      }\n      if (\n        this.eventDetails.eventOrganisations.find(\n          (x) => x.relationshipTypeName == eventOwnerRelationshipType.name,\n        )\n      ) {\n        return false;\n      }\n      return true;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"surveys\", {\n      fetchSurveyDetails: \"fetchSurveyDetails\",\n      clearSurveyDetails: \"clear\",\n    }),\n    ...mapActions(\"surveys\", {\n      createSurvey: \"create\",\n    }),\n    async loadSurveys() {\n      let response = await this.$http.get(\n        `events/${this.eventDetails.id}/surveys`, {},\n      );\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    formatDate(date) {\n      let d = new Date(date);\n      return (\n        d.getFullYear() +\n        \"-\" +\n        (d.getMonth() + 1) +\n        \"-\" +\n        d.getDate() +\n        \"-\" +\n        d.getHours() +\n        \":\" +\n        d.getMinutes()\n      );\n    },\n    viewSurvey(id) {\n      this.$router.push({\n        name: \"survey-details\",\n        params: {\n          id: id,\n        },\n      });\n    },\n    async onAddSurveyResponseClicked(surveyId) {\n      let result = await this.fetchSurveyDetails(surveyId);\n      if (result.quickCode) {\n        this.$router.push({\n          name: \"survey-responses\",\n          params: {\n            quickcode: result.quickCode,\n          },\n        });\n        return;\n      }\n      this.notifyError(\"Unable to open survey.\");\n    },\n    async onAddSurveyClicked() {\n      try {\n        let response = await this.createSurvey(this.eventDetails.id);\n        this.$router.push({\n          name: \"survey-details\",\n          params: {\n            id: response.id,\n          },\n        });\n      } catch (err) {\n        this.notifyError(`Unable to create survey. ${fromResponse(err)}`);\n      }\n    },\n  },\n  destroyed() {\n    this.clearSurveyDetails();\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"@/themes/custom-variables.scss\";\n\n.dx-datagrid-header-panel .dx-toolbar {\n  margin: 0;\n  padding-right: 20px;\n  background-color: transparent;\n}\n\n.dx-datagrid-header-panel .dx-toolbar-items-container {\n  height: 70px;\n}\n\n.event-surveys-table-toolbar {\n  border-bottom: 3px solid $brand-primary;\n}\n\n.toolbar-text-container {\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  align-content: flex-start;\n}\n\n.toolbar-text-header {\n  font: $base-font-family-medium;\n  font-size: $font-size-subheading;\n  margin: unset !important;\n}\n\n.toolbar-text-info {\n  font-size: $font-size-component;\n  margin: unset !important;\n  padding-top: 5px;\n}\n\n.is-draft-icon {\n  padding-left: 5px\n}\n\n.survey-link-container {\n  text-align: center;\n}\n\n.survey-link-button {\n  margin-left: 10px; \n  width: 20px; \n  float:right;\n}\n\n@media (max-width: 500px) {\n  .toolbar-text-info {\n    max-width: 200px;\n  }\n}\n\n@media (max-width: 420px) {\n  .toolbar-text-info {\n    max-width: 150px;\n  }\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-surveys-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-surveys-list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./event-surveys-list.vue?vue&type=template&id=a83753b2&scoped=true\"\nimport script from \"./event-surveys-list.vue?vue&type=script&lang=js\"\nexport * from \"./event-surveys-list.vue?vue&type=script&lang=js\"\nimport style0 from \"./event-surveys-list.vue?vue&type=style&index=0&id=a83753b2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"a83753b2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('dx-popup',{attrs:{\"visible\":_vm.popupVisible,\"drag-enabled\":true,\"hide-on-outside-click\":true,\"show-title\":true,\"max-width\":700,\"height\":\"auto\",\"title\":`Confirm ${_vm.titleMessage}`,\"onHiding\":_vm.closePopup},on:{\"update:visible\":function($event){_vm.popupVisible=$event}}},[_c('div',[_c('div',{staticClass:\"confirm-message-container\"},[_c('p',[_vm._v(\"\\n          \"+_vm._s(_vm.confirmationMessage)+\"\\n        \")])]),_c('div',{staticClass:\"actions-container\"},[_c('dx-button',{staticClass:\"btn-primary btn-secondary\",attrs:{\"text\":\"Cancel\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.closePopup}}),_c('dx-button',{staticClass:\"btn-primary confirm-button\",attrs:{\"text\":\"Confirm\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onConfirm}})],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <dx-popup\n      :visible.sync=\"popupVisible\"\n      :drag-enabled=\"true\"\n      :hide-on-outside-click=\"true\"\n      :show-title=\"true\"\n      :max-width=\"700\"\n      height=\"auto\"\n      :title=\"`Confirm ${titleMessage}`\"\n      :onHiding=\"closePopup\"\n    >\n      <div>\n        <div class=\"confirm-message-container\">\n          <p>\n            {{ confirmationMessage }}\n          </p>\n        </div>\n\n        <div class=\"actions-container\">\n          <dx-button\n            text=\"Cancel\"\n            type=\"default\"\n            class=\"btn-primary btn-secondary\"\n            styling-mode=\"contained\"\n            :on-click=\"closePopup\"\n          ></dx-button>\n\n          <dx-button\n            text=\"Confirm\"\n            type=\"default\"\n            class=\"btn-primary confirm-button\"\n            styling-mode=\"contained\"\n            :on-click=\"onConfirm\"\n          ></dx-button>\n        </div>\n      </div>\n    </dx-popup>\n  </div>\n</template>\n\n<script>\nimport {DxButton} from \"devextreme-vue/button\";\nimport {DxPopup} from \"devextreme-vue/popup\";\nimport {isNotEmpty} from \"../common/helperFunctions\";\n\nexport default {\n  components: {\n    DxButton,\n    DxPopup,\n  },\n  props: [\"popupVisible\", \"confirmMessage\", \"titleName\", \"onConfirm\"],\n  computed: {\n    confirmationMessage: function () {\n      return isNotEmpty(this.confirmMessage)\n        ? this.confirmMessage\n        : \"\";\n    },\n    titleMessage: function () {\n      return isNotEmpty(this.titleName) ? this.titleName : \"\";\n    },\n  },\n  methods: {\n    closePopup() {\n      this.$emit(\"onPopupClosed\");\n    },\n  },\n\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n\n.dx-toolbar-label {\n  .dx-toolbar-item-content {\n    div {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      font: 500 16px !important;\n      font-size: $font-size-heading !important;\n      letter-spacing: 0 !important;\n      /* font-weight: bold; */\n      /* width: 100%; */\n    }\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-popup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-popup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./confirm-popup.vue?vue&type=template&id=1a17fe6e&scoped=true\"\nimport script from \"./confirm-popup.vue?vue&type=script&lang=js\"\nexport * from \"./confirm-popup.vue?vue&type=script&lang=js\"\nimport style0 from \"./confirm-popup.vue?vue&type=style&index=0&id=1a17fe6e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1a17fe6e\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <div class=\"page-header\">\n      <div class=\"title-back-container\">\n        <div class=\"page-back\">\n          <dx-button\n            class=\"btn-back\"\n            icon=\"fas fa-arrow-left\"\n            styling-mode=\"contained\"\n            @click=\"onBackClicked\"\n          >\n          </dx-button>\n        </div>\n        <div class=\"page-title-container\">\n          <div>\n            <p class=\"page-breadcrumb\">\n              Event\n              {{\n                isEditMode && eventDetails && eventDetails.name\n                  ? ` > ${eventDetails.name}`\n                  : ``\n              }}\n            </p>\n          </div>\n          <h1 class=\"page-title\">Event Overview</h1>\n        </div>\n      </div>\n      <div class=\"action-section\">\n        <dx-button\n          class=\"btn-primary fas fa-save\"\n          v-if=\"eventDetails && canUserEdit\"\n          validation-group=\"eventDetails\"\n          text=\"Save event\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"onSaveEventClicked\"\n        />\n        <dx-button\n          class=\"btn-primary fas fa-clone\"\n          v-if=\"eventDetails && isEditMode && canUserEdit\"\n          validation-group=\"eventDetails\"\n          text=\"Duplicate event\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          @click=\"dupePopupVisible = true\"\n        />\n        <dx-button\n          class=\"btn-primary btn-delete fas fa-trash-alt\"\n          v-if=\"eventDetails && isEditMode && canUserEdit\"\n          type=\"warning\"\n          text=\"Delete\"\n          styling-mode=\"contained\"\n          @click=\"deletePopupVisible = true\"\n        />\n      </div>\n    </div>\n\n    <DxTabPanel\n      :ref=\"tabPanelRef\"\n      :data-source=\"tabs\"\n      :selectedIndex.sync=\"currTab\"\n      :animation-enabled=\"false\"\n      :swipe-enabled=\"false\"\n      :key=\"refreshKey\"\n      aria-labelledby=\"tabpanel-label\"\n    >\n      <template #title=\"{data: tab, index: i}\">\n        <span\n          :id=\"`tab-${tab.id}`\"\n          >{{ tab.text }}</span\n        >\n      </template>\n\n      <template #event-details-template>\n        <div class=\"event-content\">\n          <event-details\n            v-if=\"\n              !isEditMode ||\n              (eventDetails.id !== null && eventDetails.id !== undefined)\n            \"\n            :canUserEdit=\"canUserEdit\"\n          />\n        </div>\n      </template>\n\n      <template #event-forecast-template>\n        <div class=\"event-content\">\n          <event-forecast\n            v-if=\"\n              !isEditMode ||\n              (eventDetails.id !== null && eventDetails.id !== undefined)\n            \"\n            :canUserEdit=\"canUserEdit\"\n          />\n        </div>\n      </template>\n\n      <template #event-surveys-template>\n        <div class=\"event-content\">\n          <event-surveys-list :canUserEdit=\"canUserEdit\" />\n        </div>\n      </template>\n    </DxTabPanel>\n\n    <ConfirmPopup\n      :popupVisible=\"dupePopupVisible\"\n      titleName=\"duplicate event\"\n      :onConfirm=\"onDuplicateEventClicked\"\n      @onPopupClosed=\"dupePopupVisible = false\"\n      :confirmMessage=\"`This will create a duplicate of '${eventDetails.name}', excluding ticketing data and surveys. Please note that any changes will not be saved until you click 'Save event.'`\"\n    />\n\n    <ConfirmDeletePopup\n      :entityName=\"eventDetails && eventDetails.name ? eventDetails.name : ''\"\n      titleName=\"Event\"\n      :onDelete=\"deleteEventFunction\"\n      :popupVisible=\"deletePopupVisible\"\n      @onPopupClosed=\"deletePopupVisible = false\"\n    />\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState, mapGetters, mapMutations} from \"vuex\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport DxTabPanel from \"devextreme-vue/tab-panel\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {\n  isNotEmpty,\n  objectEquals,\n  isEmpty,\n  deepCopyJson,\n} from \"@/common/helperFunctions\";\nimport {\n  eventTicketingLookups,\n  eventOwnerRelationshipType,\n} from \"@/common/constants.js\";\nimport EventDetails from \"../components/events/event-overview/event-details.vue\";\nimport EventForecast from \"../components/events/event-overview/event-forecast.vue\";\nimport EventSurveysList from \"../components/events/event-overview/event-surveys-list.vue\";\nimport ConfirmDeletePopup from \"../components/confirm-delete-popup.vue\";\nimport ConfirmPopup from \"../components/confirm-popup.vue\";\n\nexport default {\n  components: {\n    DxTabPanel,\n    EventDetails,\n    EventForecast,\n    DxButton,\n    ConfirmDeletePopup,\n    EventSurveysList,\n    DxLoadPanel,\n    ConfirmPopup,\n  },\n  data() {\n    return {\n      deletePopupVisible: false,\n      dupePopupVisible: false,\n      initialEventDetailsObj: null,\n      currTab: 0,\n      creatingDuplicatedEvent: false,\n      refreshKey: 0,\n      tabPanelRef: \"tabPanelRef\",\n    };\n  },\n  computed: {\n    ...mapState(\"events\", [\"eventDetails\", \"duplicatingEvent\"]),\n    ...mapGetters(\"events\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    showTabContent: function () {\n      // Show tabs always if creating\n      if (!this.isEditMode) {\n        return true;\n      }\n      // Event Details must be loaded before showing tabs\n      return isNotEmpty(\n        this.eventDetails.id !== null && this.eventDetails.id !== undefined,\n      );\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    isEventOwner() {\n      return (\n        this.eventDetails.actingAsRelationshipTypeValue ===\n        eventOwnerRelationshipType.name\n      );\n    },\n    canUserEdit() {\n      // if not in edit mode, then in create mode so user should be able to edit\n      // OR if in edit mode, user should be able to edit if they have the right permissions\n      return (\n        !this.isEditMode ||\n        (this.$can(this.userAction, this.$subjects.event.subject) &&\n          this.isEventOwner)\n      );\n    },\n    tabs: function () {\n      return [\n        {\n          id: 0,\n          text: \"Details\",\n          template: \"event-details-template\",\n        },\n        {\n          id: 1,\n          text: \"Tickets & Attendance\",\n          template: \"event-forecast-template\",\n        },\n        {\n          id: 2,\n          text: \"Surveys\",\n          template: \"event-surveys-template\",\n          disabled: !isNotEmpty(this.eventDetails.id),\n        },\n      ];\n    },\n    tabPanelInstance: function () {\n      return this.$refs[this.tabPanelRef].instance;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"events\", {\n      createEvent: \"create\",\n      updateEvent: \"update\",\n      deleteEvent: \"delete\",\n      fetchEventDetails: \"fetchEventDetails\",\n      clearEventDetails: \"clear\",\n      fetchDuplicateEventName: \"fetchDuplicateEventName\",\n    }),\n    ...mapMutations(\"events\", {\n      setDuplicatingEvent: \"setDuplicatingEvent\",\n    }),\n    preventNav(event) {\n      if (!this.areUnsavedChanges() || this.savedSuccessfully) return;\n      event.preventDefault();\n      event.returnValue = \"\";\n    },\n    areUnsavedChanges() {\n      let eventDets = deepCopyJson(this.eventDetails);\n      let a = !objectEquals(eventDets, this.initialEventDetailsObj);\n      return a;\n    },\n    onBackClicked() {\n      // If this event is being duplicated, go back\n      //    should go back to original event page\n      if (this.creatingDuplicatedEvent) {\n        this.$router.go(-1);\n        return;\n      }\n\n      this.$router.push({\n        name: \"events-list\",\n      });\n    },\n    cancel() {\n      this.$router.push({\n        name: \"events-list\",\n      });\n    },\n    validateAssignedOrgs() {\n      if (\n        isEmpty(this.eventDetails.eventOrganisations) ||\n        this.eventDetails.eventOrganisations.length === 0\n      ) {\n        this.notifyError(\n          `Unable to save event. There must be at least 1 assigned organisation.`,\n        );\n        return false;\n      }\n      return true;\n    },\n    async deleteEventFunction() {\n      try {\n        await this.deleteEvent();\n\n        this.notifySuccess(`Event successfully deleted.`);\n        this.savedSuccessfully = true;\n        this.$router.push({\n          name: \"events-list\",\n        });\n      } catch (err) {\n        this.notifyError(`Unable to delete event. ${fromResponse(err)}`);\n        this.deletePopupVisible = false;\n      }\n    },\n    async onSaveEventClicked(e) {\n      let result = await e.validationGroup.validate();\n      let orgsResult = this.validateAssignedOrgs();\n\n      if (!orgsResult) {\n        return;\n      }\n\n      if (!result.isValid) {\n        this.notifyError(\n          `Unable to save event. ${result.brokenRules.length} validation errors.`,\n        );\n        return;\n      }\n\n      if (eventTicketingLookups[this.eventDetails.isTicketedId] == false) {\n        this.eventDetails.totalTicketsAvailable = null;\n      }\n      try {\n        let eventId;\n\n        if (!this.isEditMode) {\n          eventId = await this.createEvent();\n        } else {\n          await this.updateEvent();\n        }\n\n        this.notifySuccess(\n          `Event successfully ${this.isEditMode ? \"updated\" : \"created\"}.`,\n        );\n        this.savedSuccessfully = true;\n\n        // if creating or duplicating, then don't route to events-list,\n        //   just refresh the page\n\n        if (!this.isEditMode || this.creatingDuplicatedEvent) {\n          this.$router.push({\n            name: \"event-details\",\n            params: {\n              id: eventId,\n            },\n          });\n          return;\n        } else {\n          this.$router.push({\n            name: \"events-list\",\n          });\n        }\n      } catch (err) {\n        this.notifyError(\n          `Unable to ${\n            this.isEditMode ? \"create\" : \"update\"\n          } event. ${fromResponse(err)}`,\n        );\n      }\n    },\n    onDuplicateEventClicked() {\n      this.setDuplicatingEvent(true);\n\n      // remove Box Office/Ticketing Reference ID and ticketing data\n      delete this.eventDetails.id;\n      delete this.eventDetails.boxOfficeReferenceId;\n      delete this.eventDetails.estimatedAttendance;\n      delete this.eventDetails.knownAttendance;\n      delete this.eventDetails.totalTicketsAvailable;\n      delete this.eventDetails.occurencesAtLocation;\n\n      // Will be 0 if event doesn't have one as property on\n      // Result in backend isn't nullable\n      if (this.eventDetails.boxOfficeProviderId == 0) {\n        delete this.eventDetails.boxOfficeProviderId;\n      }\n\n      // load the event-details page w/o an id\n      //  this is the CREATE Event page, but with\n      //  the eventDetails object still in vuex state.\n      this.$router.push({name: \"event-details\"});\n\n      this.dupePopupVisible = false;\n    },\n    async handleDuplicatedEvent() {\n      this.creatingDuplicatedEvent = true;\n      this.fetchDuplicateEventName();\n      this.setDuplicatingEvent(false);\n\n      this.initialEventDetailsObj = JSON.parse(\n        JSON.stringify(this.eventDetails),\n      );\n\n      this.refreshKey++; // force tab panel to refresh\n    },\n    async loadEvent(id) {\n      await this.fetchEventDetails(id);\n      this.initialEventDetailsObj = deepCopyJson(this.eventDetails);\n    },\n    async handlePageLoad(routeTo) {\n      this.currTab = isNotEmpty(routeTo.query.tabIndex)\n        ? parseInt(routeTo.query.tabIndex)\n        : 0;\n      let editMode = isNotEmpty(routeTo.params.id);\n\n      if (editMode) {\n        this.loadEvent(routeTo.params.id);\n      }\n\n      if (this.duplicatingEvent) {\n        this.handleDuplicatedEvent();\n      }\n    },\n  },\n  beforeMount() {\n    // https://austingil.com/prevent-browser-refresh-url-changes-route-navigation-vue/\n    window.addEventListener(\"beforeunload\", this.preventNav);\n    this.$once(\"hook:beforeDestroy\", () => {\n      window.removeEventListener(\"beforeunload\", this.preventNav);\n    });\n  },\n  beforeRouteEnter(to, from, next) {\n    next((vm) => {\n      vm.handlePageLoad(to);\n    });\n  },\n  beforeRouteUpdate(to, from, next) {\n    this.handlePageLoad(to);\n    next();\n  },\n  beforeDestroy() {\n    // Only clear state if not duplicating event\n    if (!this.duplicatingEvent) {\n      this.clearEventDetails();\n    }\n  },\n  beforeRouteLeave(to, from, next) {\n    if (!this.areUnsavedChanges() || this.savedSuccessfully) {\n      next();\n      return;\n    }\n\n    const answer = window.confirm(\n      \"Are you sure you would like to leave? You have unsaved changes.\",\n    );\n\n    if (answer) {\n      next();\n    } else {\n      next(false);\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.page-header {\n  padding-bottom: 15px !important;\n}\n\n.event-content {\n  padding-top: 15px;\n}\n\n.action-section {\n  display: flex;\n  justify-content: flex-end;\n  flex-wrap: wrap;\n}\n\n@media (max-width: 775px) {\n  .action-section {\n    flex-wrap: nowrap;\n  }\n}\n\n@media (max-width: 400px) {\n  .action-section {\n    flex-wrap: wrap;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-overview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-overview.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./event-overview.vue?vue&type=template&id=623e6836&scoped=true\"\nimport script from \"./event-overview.vue?vue&type=script&lang=js\"\nexport * from \"./event-overview.vue?vue&type=script&lang=js\"\nimport style0 from \"./event-overview.vue?vue&type=style&index=0&id=623e6836&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"623e6836\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"title-back-container\"},[_c('div',{staticClass:\"page-back\"},[_c('dx-button',{staticClass:\"btn-back\",attrs:{\"icon\":\"fas fa-arrow-left\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onBackClicked}})],1),_c('div',{staticClass:\"page-title-container\"},[_c('div',[_c('p',{staticClass:\"page-breadcrumb\"},[_vm._v(\"\\n            \"+_vm._s(_vm.surveyDetails.eventName)+\"\\n            > Survey\\n            \"+_vm._s(_vm.surveyDetails && _vm.surveyDetails.name\n                ? ` > ${_vm.surveyDetails.name}`\n                : ``)+\"\\n          \")])]),_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Survey Overview\")])])]),_c('div',{staticClass:\"action-section\"},[(_vm.surveyDetails && _vm.canUserEdit && _vm.isDraft)?_c('dx-button',{staticClass:\"btn-primary fas fa-save\",attrs:{\"validation-group\":\"surveyDetails\",\"text\":\"Save draft\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onSaveSurveyClicked}}):_vm._e(),(\n          _vm.surveyDetails &&\n          !_vm.surveyDetails.isNew &&\n          _vm.canUserEdit &&\n          !_vm.surveyHasResponses\n        )?_c('dx-button',{staticClass:\"btn-primary btn-delete fas fa-trash-alt\",attrs:{\"type\":\"warning\",\"text\":\"Delete\",\"styling-mode\":\"contained\",\"on-click\":_vm.deleteButtonClicked}}):_vm._e(),(_vm.canUserEdit && !_vm.isArchived)?_c('dx-button',{staticClass:\"btn-primary btn-publish ml-2\",class:_vm.isDraft ? '' : 'fas fa-save',attrs:{\"text\":_vm.isDraft ? 'Publish' : 'Save changes',\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.showPublishPopup}}):_vm._e(),(_vm.$can(_vm.userAction, _vm.$subjects.survey.subject) && _vm.canUserEdit)?_c('dx-button',{staticClass:\"btn-secondary ml-2\",attrs:{\"text\":\"Cancel\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onBackClicked}}):_vm._e()],1)]),(_vm.isArchived)?_c('div',[_vm._m(0)]):_vm._e(),(_vm.showQuickCode && !_vm.surveyDetails.isDraft)?_c('div',[_c('PublishedSurveyDetailsBanner',{attrs:{\"is-archived\":_vm.isArchived}})],1):_vm._e(),_c('DxTabPanel',{attrs:{\"data-source\":_vm.tabs,\"selectedIndex\":_vm.currTab,\"selectedItem\":_vm.currItem,\"swipeEnabled\":false,\"aria-labelledby\":\"tabpanel-label\"},on:{\"update:selectedIndex\":function($event){_vm.currTab=$event},\"update:selected-index\":function($event){_vm.currTab=$event},\"update:selectedItem\":function($event){_vm.currItem=$event},\"update:selected-item\":function($event){_vm.currItem=$event}},scopedSlots:_vm._u([{key:\"title\",fn:function({data: tab, index: i}){return [_c('span',{attrs:{\"id\":`tab-${tab.id}`}},[_vm._v(_vm._s(tab.text))])]}},{key:\"survey-details-template\",fn:function({data: tab}){return [_c('div',{staticClass:\"survey-content\"},[_c('SurveyHeader',{attrs:{\"tab-title\":tab.title,\"curr-tab\":_vm.currTab,\"isDraft\":_vm.isDraft},on:{\"onPreviousClicked\":_vm.onPreviousClicked,\"onNextClicked\":_vm.onNextClicked}}),_c('div',[(_vm.currTab === 0)?_c('survey-details',{ref:_vm.surveyDetailsRef,attrs:{\"is-archived\":_vm.isArchived}}):_vm._e()],1)],1)]}},{key:\"survey-optional-questions-template\",fn:function({data: tab}){return [_c('div',{staticClass:\"survey-content\"},[_c('SurveyHeader',{attrs:{\"tab-title\":tab.title,\"tab-subtitle\":tab.subtitle,\"curr-tab\":_vm.currTab,\"isDraft\":_vm.isDraft},on:{\"onPreviousClicked\":_vm.onPreviousClicked,\"onNextClicked\":_vm.onNextClicked}}),_c('div',[(_vm.currTab === 1)?_c('survey-optional-questions',{attrs:{\"is-archived\":_vm.isArchived}}):_vm._e()],1)],1)]}},{key:\"survey-summary-template\",fn:function({data: tab}){return [_c('div',{staticClass:\"survey-content\"},[_c('SurveyHeader',{attrs:{\"tab-title\":tab.title,\"curr-tab\":_vm.currTab,\"isDraft\":_vm.isDraft},on:{\"onPreviousClicked\":_vm.onPreviousClicked,\"onNextClicked\":_vm.onNextClicked}}),_c('div',[(_vm.currTab === 2)?_c('survey-summary'):_vm._e()],1)],1)]}}])}),_c('ConfirmDeletePopup',{attrs:{\"entityName\":_vm.surveyDetails && _vm.surveyDetails.name ? _vm.surveyDetails.name : '',\"titleName\":\"Survey\",\"onDelete\":_vm.deleteSurveyFunction,\"popupVisible\":_vm.popupVisible},on:{\"onPopupClosed\":_vm.deletePopUpClosed}}),_c('ConfirmPopup',{attrs:{\"popupVisible\":_vm.publishPopupVisible,\"titleName\":`${_vm.isDraft ? 'publishing' : 'saving'} survey`,\"confirmMessage\":`Please confirm that you would like to ${\n      _vm.isDraft ? 'publish' : 'save'\n    } ${\n      _vm.surveyDetails !== null && _vm.surveyDetails.name !== null\n        ? _vm.surveyDetails.name\n        : ''\n    }`,\"onConfirm\":_vm.onCreateClicked},on:{\"onPopupClosed\":_vm.closePublishPopup}}),_c('dx-load-panel',{attrs:{\"visible\":_vm.showLoader,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false}})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('p',{staticClass:\"info-caption entity-warning fail\"},[_c('span',{staticClass:\"info-header\"},[_vm._v(\"This survey has been archived and is now read-only\\n      \")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"event-org-details-container\"},[_c('div',{staticClass:\"event-org-details-section\"},[_c('div',[_vm._v(\"Event\")]),_c('div',{staticClass:\"event-org-details-chip purple\"},[_vm._v(\"\\n        \"+_vm._s(_vm.surveyDetails.eventName)+\"\\n      \")])]),_c('div',{staticClass:\"event-org-details-section\"},[_c('div',[_vm._v(\"Event Owner(s)\")]),_c('div',{staticClass:\"event-org-details-chips\"},_vm._l((_vm.surveyDetails.assignedEventOwnerOrganisations),function(org){return _c('div',{key:org.id,staticClass:\"event-org-details-chip grey\"},[_vm._v(\"\\n          \"+_vm._s(org.knownAs)+\"\\n        \")])}),0)])]),_c('div',{staticClass:\"survey-form-group\"},[(_vm.surveyDetails.id)?_c('dx-form',{ref:_vm.formRef,attrs:{\"form-data\":_vm.surveyDetails,\"readOnly\":!_vm.canUserEdit,\"show-validation-summary\":true,\"scrolling-enabled\":false,\"validation-group\":\"surveyDetails\"}},[_c('dx-item',{attrs:{\"item-type\":\"group\",\"col-count\":4,\"col-span\":2}},[_c('dx-simple-item',{attrs:{\"data-field\":\"name\",\"editorOptions\":_vm.editorOptions.name}},[_c('dx-label',{attrs:{\"text\":\"Survey name\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Survey name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Survey name is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}}),_c('dx-async-rule',{attrs:{\"validation-callback\":_vm.checkNameAvailabilityCall,\"ignore-empty-value\":true}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"surveyTemplateId\",\"editorType\":\"dxSelectBox\",\"editorOptions\":{\n            ..._vm.editorOptions.template,\n            dataSource: _vm.templateDataSource,\n            onValueChanged: _vm.onTemplateValueChanged,\n            disabled: _vm.templateDisabled,\n          }}},[_c('dx-label',{attrs:{\"text\":\"Template\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Template is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"activeFrom\",\"editor-type\":\"dxDateBox\",\"editorOptions\":{\n            dateSerializationFormat: 'yyyy-MM-dd',\n            displayFormat: 'dd/MM/yyyy',\n            max: _vm.surveyDetails.endDate,\n            dateOutOfRangeMessage:\n              'Active from date must be before the active to date',\n          }}},[_c('dx-label',{attrs:{\"text\":\"Active from\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"activeTo\",\"editor-type\":\"dxDateBox\",\"editorOptions\":{\n            dateSerializationFormat: 'yyyy-MM-dd',\n            displayFormat: 'dd/MM/yyyy',\n            min: _vm.surveyDetails.startDate,\n            dateOutOfRangeMessage:\n              'Active to date must be greater than active from date',\n          }}},[_c('dx-label',{attrs:{\"text\":\"Active to\"}})],1),_c('dx-simple-item',{attrs:{\"col-span\":2,\"data-field\":\"introduction\",\"editorType\":\"dxTextArea\",\"editorOptions\":_vm.editorOptions.introduction}},[_c('dx-label',{attrs:{\"text\":\"Introduction\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Introduction is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.intro,\"message\":`Introduction is too long. Maximum allowed length is ${_vm.maxLength.intro} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"organisationDisplayName\",\"editorOptions\":_vm.editorOptions.organisationDisplayName}},[_c('dx-label',{attrs:{\"text\":\"Organisation display name\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Organisation display  name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.organisationDisplayName,\"message\":`Organisation display  name is too long. Maximum allowed length is ${_vm.maxLength.organisationDisplayName} characters`}}),_c('dx-pattern-rule',{attrs:{\"pattern\":_vm.displayNameRegex,\"message\":\"Organisation display name contains invalid characters, underscores are not allowed\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"disciplineDisplayName\",\"editorOptions\":_vm.editorOptions.disciplineDisplayName}},[_c('dx-label',{attrs:{\"text\":\"Discipline display name\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Discipline display name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.disciplineDisplayName,\"message\":`Discipline display name is too long. Maximum allowed length is ${_vm.maxLength.disciplineDisplayName} characters`}}),_c('dx-pattern-rule',{attrs:{\"pattern\":_vm.displayNameRegex,\"message\":\"Discipline display name contains invalid characters, underscores are not allowed\"}})],1)],1)],1):_vm._e(),_c('div',{staticClass:\"survey-logo-upload-container\"},[_c('survey-logo-upload')],1)],1),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.logoRefreshKey,staticClass:\"survey-logo-upload-section\"},[_c('div',{staticClass:\"survey-logo-org-sel-box\"},[_c('label',{attrs:{\"id\":\"logo-label\"}},[_vm._v(\"Logo\")]),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"#logo-label\"}},[[_c('div',{staticClass:\"tooltip\"},[_vm._v(\"\\n          Allowed file extensions: .jpg, .jpeg, .png. Maximum file size: 100\\n          KB.\\n        \")])]],2),(_vm.surveyDetails.assignedEventOwnerOrganisations)?_c('dx-select-box',{attrs:{\"data-source\":_vm.getOrganisationsDataSource(),\"value-expr\":\"id\",\"display-expr\":\"name\",\"disabled\":!_vm.canUserEdit,\"input-attr\":_vm.inputAttrLogo},on:{\"value-changed\":_vm.onOrgValueChanged},model:{value:(_vm.selectedOrgId),callback:function ($$v) {_vm.selectedOrgId=$$v},expression:\"selectedOrgId\"}}):_vm._e()],1),_c('div',{staticClass:\"upload-container survey-logo-upload-container\"},[_c('div',{staticClass:\"logo-upload-flex-item\"},[_c('div',{staticClass:\"upload-container-text\"},[_vm._v(\"\\n        Select here to upload a custom logo for your survey\\n      \")]),_c('i',{staticClass:\"uploader-icon fas fa-upload\"}),_c('dx-file-uploader',{ref:_vm.fileUploaderRef,attrs:{\"multiple\":false,\"name\":\"file\",\"accept\":\"image/*\",\"selectButtonText\":\"Select logo\",\"labelText\":\"or Drop logo here\",\"uploadMode\":\"instantly\",\"show-file-list\":false,\"uploadFile\":_vm.onUploadFile,\"disabled\":!_vm.canUserEdit},on:{\"value-changed\":_vm.attachmentsValueChanged}})],1),_c('div',{key:_vm.logoRefreshKey + 1,staticClass:\"logo-upload-flex-item\"},[_c('div',[_vm._v(\"Preview\")]),_c('div',{staticClass:\"logo-preview-container\"},[(_vm.logoBase64 == null)?_c('img',{attrs:{\"src\":require(\"../../assets/illuminate_logo.svg\"),\"alt\":\"logo\"}}):_c('img',{attrs:{\"src\":_vm.logoBase64,\"alt\":\"logo\"}})])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div\n    class=\"survey-logo-upload-section\"\n    :key=\"logoRefreshKey\"\n  >\n    <div class=\"survey-logo-org-sel-box\">\n      <label id=\"logo-label\">Logo</label>\n      <dx-tooltip\n        showEvent=\"dxhoverstart\"\n        hideEvent=\"dxhoverend\"\n        position=\"top\"\n        target=\"#logo-label\"\n      >\n        <template>\n          <div class=\"tooltip\">\n            Allowed file extensions: .jpg, .jpeg, .png. Maximum file size: 100\n            KB.\n          </div>\n        </template>\n      </dx-tooltip>\n      <dx-select-box\n        v-if=\"surveyDetails.assignedEventOwnerOrganisations\"\n        :data-source=\"getOrganisationsDataSource()\"\n        value-expr=\"id\"\n        @value-changed=\"onOrgValueChanged\"\n        display-expr=\"name\"\n        v-model=\"selectedOrgId\"\n        :disabled=\"!canUserEdit\"\n        :input-attr=\"inputAttrLogo\"\n      />\n    </div>\n\n    <div class=\"upload-container survey-logo-upload-container\">\n      <div class=\"logo-upload-flex-item\">\n        <div class=\"upload-container-text\">\n          Select here to upload a custom logo for your survey\n        </div>\n        <i class=\"uploader-icon fas fa-upload\"></i>\n        <dx-file-uploader\n          :ref=\"fileUploaderRef\"\n          :multiple=\"false\"\n          name=\"file\"\n          accept=\"image/*\"\n          selectButtonText=\"Select logo\"\n          labelText=\"or Drop logo here\"\n          uploadMode=\"instantly\"\n          :show-file-list=\"false\"\n          @value-changed=\"attachmentsValueChanged\"\n          :uploadFile=\"onUploadFile\"\n          :disabled=\"!canUserEdit\"\n        >\n        </dx-file-uploader>\n      </div>\n\n      <div\n        class=\"logo-upload-flex-item\"\n        :key=\"logoRefreshKey + 1\"\n      >\n        <div>Preview</div>\n        <div class=\"logo-preview-container\">\n          <img\n            v-if=\"logoBase64 == null\"\n            src=\"../../assets/illuminate_logo.svg\"\n            alt=\"logo\"\n          />\n          <img\n            v-else\n            :src=\"logoBase64\"\n            alt=\"logo\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n<script>\nimport {mapActions, mapState} from \"vuex\";\nimport {DxSelectBox} from \"devextreme-vue/select-box\";\nimport {\n  isNotEmpty,\n  getLogoFromEndpoint,\n  fileToBase64,\n} from \"../../common/helperFunctions\";\nimport {DxTooltip} from \"devextreme-vue\";\nimport {DxFileUploader} from \"devextreme-vue/file-uploader\";\nimport {logoUploadConfig, eventOwnerRelationshipType} from \"@/common/constants\";\n\nconst defaultLogoOptionsNames = Object.freeze({\n  default: \"Illuminate (default)\",\n});\n\nconst {VUE_APP_API_HOSTNAME} = process.env;\n\nexport default {\n  components: {\n    DxFileUploader,\n    DxSelectBox,\n    DxTooltip,\n  },\n  data() {\n    return {\n      fileUploaderRef: \"fileUploaderRef\",\n      logoRefreshKey: 0,\n      allowedFileExtensions: logoUploadConfig.fileExtensions,\n      maxFileUploadSize: logoUploadConfig.maxFileUploadSize,\n      logoBase64: null,\n      selectedOrgId: null,\n      validCharacters: /^[\\p{L}+\\d\\s._-]+\\.[\\w]+/u,\n      defaultOrgOptions: [\n        {\n          id: 0,\n          name: defaultLogoOptionsNames.default,\n        },\n      ],\n      inputAttrLogo: { 'aria-label': 'Logo' }\n    };\n  },\n  computed: {\n    ...mapState(\"surveys\", [\"surveyDetails\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    surveyId: function () {\n      return this.$route.params.id;\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    uploadUrl() {\n      return `${VUE_APP_API_HOSTNAME}/surveys/${this.surveyId}/logo`;\n    },\n    isEventOwner() {\n      return (\n        this.surveyDetails.actingAsRelationshipTypeValue ===\n        eventOwnerRelationshipType.name\n      );\n    },\n    canUserEdit() {\n      return (\n        this.$can(this.userAction, this.$subjects.survey.subject) &&\n        this.isEventOwner\n      );\n    },\n    fileUploaderInstance() {\n      return this.$refs[this.fileUploaderRef].instance;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    async onUploadFile(file) {\n      this.surveyDetails.logoFile = file;\n\n      this.logoBase64 = await fileToBase64(file);\n\n      // set the selected organisation to custom and org ID to null\n      // this is becuase users can still upload custom logo if diff org is chosen\n      this.surveyDetails.logoOrganisationId = null;\n      this.selectedOrgId = null;\n    },\n    getDefaultOrgOptionId(optionName) {\n      return this.defaultOrgOptions.filter((x) => x.name === optionName)[0].id;\n    },\n    getOrganisationsDataSource() {\n      if (\n        this.selectedOrgId == null &&\n        this.surveyDetails.logoOrganisationId !== null\n      ) {\n        this.selectedOrgId = this.surveyDetails.logoOrganisationId;\n        this.logoRefreshKey++;\n      }\n\n      if (!this.surveyDetails.assignedEventOwnerOrganisations) {\n        return [];\n      }\n\n      let eventOwnersWithLogo =\n        this.surveyDetails.assignedEventOwnerOrganisations.filter(\n          (x) => x.hasLogo,\n        );\n\n      return eventOwnersWithLogo.concat(this.defaultOrgOptions);\n    },\n    async onOrgValueChanged(e) {\n      let selectedOrg = e.component.option(\"selectedItem\");\n\n      if (selectedOrg === null) {\n        return;\n      }\n\n      // then its default or custom logo so set everything to null and return\n      if (selectedOrg.id <= 0) {\n        this.surveyDetails.logoOrganisationId = null;\n        this.surveyDetails.logoFile = null;\n        this.logoBase64 = null;\n        this.logoRefreshKey++;\n\n        return;\n      }\n\n      // then its an org's logo so fetch logo and set values\n      try {\n        let result = await getLogoFromEndpoint(\n          `organisations/${selectedOrg.id}/logo`,\n        );\n\n        this.logoBase64 = result.base64;\n        this.surveyDetails.logoFile = null;\n        this.surveyDetails.logoOrganisationId = selectedOrg.id;\n        this.selectedOrgId = selectedOrg.id;\n        this.logoRefreshKey++;\n      } catch (e) {\n        this.notifyError(\"Failed to load organisation logo\");\n      }\n    },\n    attachmentsValueChanged(e) {\n      let file = e.value[0];\n\n      // return if file is empty\n      if (!file) {\n        return;\n      }\n\n      if (file.size > this.maxFileUploadSize) {\n        this.notifyError(\"File size is too large. Maximum file size is 100 KB\");\n        this.fileUploaderInstance.reset();\n        return;\n      }\n\n      if (!this.validCharacters.test(file.name)) {\n        this.notifyError(\n          \"Invalid characters in filename. Please rename the file and try again.\",\n        );\n        this.fileUploaderInstance.reset();\n        return;\n      }\n\n      if (this.allowedFileExtensions.includes(file.name.split(\".\").pop())) {\n        this.notifyError(\n          \"Invalid characters in filename. Please rename the file and try again.\",\n        );\n        this.fileUploaderInstance.reset();\n        return;\n      }\n    },\n  },\n  mounted() {\n    getLogoFromEndpoint(`surveys/${this.surveyId}/logo`)\n      .then((result) => {\n        this.logoBase64 = result.base64;\n        this.surveyDetails.logoFile = null;\n      })\n      .catch(() => {\n        // if no logo exists then default to illuminate logo\n        this.selectedOrgId = this.getDefaultOrgOptionId(\n          defaultLogoOptionsNames.default,\n        );\n      })\n      .finally(() => {\n        this.logoRefreshKey++;\n      });\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"@/themes/custom-variables.scss\";\n\n.survey-logo-upload-section {\n  max-width: 50%;\n  display: flex;\n  flex-direction: column;\n  gap: 25px;\n}\n\n.survey-logo-upload-container {\n  display: flex;\n  flex-direction: row;\n  gap: 25px;\n\n  .logo-upload-flex-item {\n    flex: 1;\n    gap: 5px;\n    display: flex;\n    flex-direction: column;\n    justify-content: flex-end;\n  }\n}\n\n.uploader-icon {\n  top: 60px !important;\n  position: relative !important;\n}\n\n.survey-logo-org-sel-box {\n  max-width: calc(\n    50% - 15px\n  ); // 15px is the padding on each of the other form elements\n}\n\n@media (max-width: 767px) {\n  .survey-logo-upload-section {\n    max-width: 100%;\n  }\n  .survey-logo-org-sel-box {\n    max-width: 100%; // 15px is the padding on each of the other form elements\n  }\n}\n\n@media (max-width: 500px) {\n  .survey-logo-upload-container {\n    flex-direction: column;\n  }\n}\n\n.upload-container-text {\n  margin-bottom: -37px;\n}\n\n.logo-preview-container {\n  display: flex;\n  flex-direction: row;\n  border-radius: 5px;\n  align-content: center;\n  justify-content: center;\n  align-items: center;\n  border: 1px solid $grey3;\n  height: 173px;\n\n  img {\n    object-fit: contain;\n    height: 80%;\n    width: 80%;\n  }\n}\n\nlabel {\n  display: block;\n  padding-bottom: 4px;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-logo-uploader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-logo-uploader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-logo-uploader.vue?vue&type=template&id=24cf9c60&scoped=true\"\nimport script from \"./survey-logo-uploader.vue?vue&type=script&lang=js\"\nexport * from \"./survey-logo-uploader.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-logo-uploader.vue?vue&type=style&index=0&id=24cf9c60&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"24cf9c60\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <div class=\"event-org-details-container\">\n      <div class=\"event-org-details-section\">\n        <div>Event</div>\n        <div class=\"event-org-details-chip purple\">\n          {{ surveyDetails.eventName }}\n        </div>\n      </div>\n      <div class=\"event-org-details-section\">\n        <div>Event Owner(s)</div>\n        <div class=\"event-org-details-chips\">\n          <div\n            class=\"event-org-details-chip grey\"\n            v-for=\"org in surveyDetails.assignedEventOwnerOrganisations\"\n            :key=\"org.id\"\n          >\n            {{ org.knownAs }}\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"survey-form-group\">\n      <dx-form\n        v-if=\"surveyDetails.id\"\n        :form-data=\"surveyDetails\"\n        :ref=\"formRef\"\n        :readOnly=\"!canUserEdit\"\n        :show-validation-summary=\"true\"\n        :scrolling-enabled=\"false\"\n        validation-group=\"surveyDetails\"\n      >\n        <dx-item\n          item-type=\"group\"\n          :col-count=\"4\"\n          :col-span=\"2\"\n        >\n          <dx-simple-item\n            data-field=\"name\"\n            :editorOptions=\"editorOptions.name\"\n          >\n            <dx-label text=\"Survey name\" />\n            <dx-required-rule message=\"Survey name is required\" />\n            <dx-string-length-rule\n              :max=\"maxLength.name\"\n              :message=\"`Survey name is too long. Maximum allowed length is ${maxLength.name} characters`\"\n            />\n            <dx-async-rule\n              :validation-callback=\"checkNameAvailabilityCall\"\n              :ignore-empty-value=\"true\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"surveyTemplateId\"\n            editorType=\"dxSelectBox\"\n            :editorOptions=\"{\n              ...editorOptions.template,\n              dataSource: templateDataSource,\n              onValueChanged: onTemplateValueChanged,\n              disabled: templateDisabled,\n            }\"\n          >\n            <dx-label text=\"Template\" />\n            <dx-required-rule message=\"Template is required\" />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"activeFrom\"\n            editor-type=\"dxDateBox\"\n            :editorOptions=\"{\n              dateSerializationFormat: 'yyyy-MM-dd',\n              displayFormat: 'dd/MM/yyyy',\n              max: surveyDetails.endDate,\n              dateOutOfRangeMessage:\n                'Active from date must be before the active to date',\n            }\"\n          >\n            <dx-label text=\"Active from\" />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"activeTo\"\n            editor-type=\"dxDateBox\"\n            :editorOptions=\"{\n              dateSerializationFormat: 'yyyy-MM-dd',\n              displayFormat: 'dd/MM/yyyy',\n              min: surveyDetails.startDate,\n              dateOutOfRangeMessage:\n                'Active to date must be greater than active from date',\n            }\"\n          >\n            <dx-label text=\"Active to\" />\n          </dx-simple-item>\n\n          <dx-simple-item\n            :col-span=\"2\"\n            data-field=\"introduction\"\n            editorType=\"dxTextArea\"\n            :editorOptions=\"editorOptions.introduction\"\n          >\n            <dx-label text=\"Introduction\" />\n            <dx-required-rule message=\"Introduction is required\" />\n            <dx-string-length-rule\n              :max=\"maxLength.intro\"\n              :message=\"`Introduction is too long. Maximum allowed length is ${maxLength.intro} characters`\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"organisationDisplayName\"\n            :editorOptions=\"editorOptions.organisationDisplayName\"\n          >\n            <dx-label text=\"Organisation display name\" />\n            <dx-required-rule\n              message=\"Organisation display  name is required\"\n            />\n            <dx-string-length-rule\n              :max=\"maxLength.organisationDisplayName\"\n              :message=\"`Organisation display  name is too long. Maximum allowed length is ${maxLength.organisationDisplayName} characters`\"\n            />\n            <dx-pattern-rule\n            :pattern=\"displayNameRegex\"\n            message=\"Organisation display name contains invalid characters, underscores are not allowed\"\n          />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"disciplineDisplayName\"\n            :editorOptions=\"editorOptions.disciplineDisplayName\"\n          >\n            <dx-label text=\"Discipline display name\" />\n            <dx-required-rule message=\"Discipline display name is required\" />\n            <dx-string-length-rule\n              :max=\"maxLength.disciplineDisplayName\"\n              :message=\"`Discipline display name is too long. Maximum allowed length is ${maxLength.disciplineDisplayName} characters`\"\n            />\n            <dx-pattern-rule\n              :pattern=\"displayNameRegex\"\n              message=\"Discipline display name contains invalid characters, underscores are not allowed\"\n            />\n          </dx-simple-item>\n        </dx-item>\n      </dx-form>\n\n      <div class=\"survey-logo-upload-container\">\n        <survey-logo-upload />\n      </div>\n    </div>\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\n\nimport {\n  DxForm,\n  DxItem,\n  DxAsyncRule,\n  DxLabel,\n  DxRequiredRule,\n  DxSimpleItem,\n  DxStringLengthRule,\n  DxPatternRule,\n  // eslint-disable-next-line no-unused-vars\n  DxGroupItem,\n} from \"devextreme-vue/form\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxLookup} from \"devextreme-vue/lookup\";\nimport checkNameAvailability from \"@/mixins/check-name-availability\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {isNotEmpty, configureLookupSearch} from \"../../common/helperFunctions\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport SurveyLogoUpload from \"./survey-logo-uploader.vue\";\nimport {eventOwnerRelationshipType} from \"@/common/constants\";\n\n\nlet defaultDropDownOptions = {\n  displayExpr: \"name\",\n  valueExpr: \"id\",\n  stylingMode: \"outlined\",\n  applyValueMode: \"instantly\",\n};\n\nlet defaultLookupOptions = {\n  displayExpr: \"name\",\n  valueExpr: \"id\",\n  searchEnabled: true,\n  searchMode: \"contains\",\n  searchExpr: [\"name\"],\n  minSearchLength: 2,\n  showDataBeforeSearch: true,\n  searchPlaceholder: \"Search...\",\n  disabled: true,\n  deferRendering: false,\n};\n\nexport default {\n  props: [\"isArchived\"],\n  components: {\n    DxForm,\n    DxLabel,\n    DxLoadPanel,\n    DxAsyncRule,\n    DxItem,\n    DxRequiredRule,\n    DxSimpleItem,\n    DxStringLengthRule,\n    SurveyLogoUpload,\n    DxPatternRule,\n    // eslint-disable-next-line vue/no-unused-components\n    DxLookup,\n  },\n  mixins: [checkNameAvailability],\n  data() {\n    return {\n      eventDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadEvents,\n          byKey: async (key) => {\n            return await this.fetchEventDetails(key);\n          },\n        }),\n      }),\n      orgDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrgs,\n          byKey: async (key) => {\n            return await this.fetchOrgDetails(key);\n          },\n        }),\n      }),\n      templateDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadTemplates,\n          byKey: (key) => {\n            return this.fetchSurveyTemplateDetails(key);\n          },\n        }),\n      }),\n      formRef: \"formRef\",\n      eventRef: \"eventLookupRef\",\n      popupVisible: false,\n      savedSuccessfully: false,\n      initialSurveyDetailsObj: null,\n      maxLength: {\n        name: 75,\n        intro: 1000,\n        organisationDisplayName: 250,\n        disciplineDisplayName: 100,\n      },\n      displayNameRegex: /^[^_]*$/,\n      editorOptions: {\n        template: {\n          ...defaultDropDownOptions,\n        },\n        name: {\n          ...defaultDropDownOptions,\n        },\n        event: {\n          ...defaultLookupOptions,\n        },\n        organisation: {\n          ...defaultLookupOptions,\n        },\n\n        introduction: {\n          ...defaultDropDownOptions,\n        },\n      },\n    };\n  },\n  computed: {\n    ...mapState(\"surveys\", [\"surveyDetails\"]),\n    ...mapGetters(\"surveys\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    surveyId: function () {\n      return this.$route.params.id;\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    templateDisabled() {\n      if (this.surveyDetails.numberOfResponses > 0) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n    isEventOwner(){\n      return this.surveyDetails.actingAsRelationshipTypeValue === eventOwnerRelationshipType.name;\n    },\n    canUserEdit(){\n      return this.$can(this.userAction, this.$subjects.survey.subject) && this.isEventOwner && !this.isArchived\n    }\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"surveys\", {\n      fetchSurveyTemplateDetails: \"fetchSurveyTemplateDetails\",\n    }),\n    ...mapActions(\"events\", {\n      fetchEventDetails: \"fetchEventDetails\",\n      clearEventDetails: \"clear\",\n    }),\n    ...mapActions(\"organisations\", {\n      fetchOrgDetails: \"fetchOrgDetails\",\n    }),\n    async checkNameAvailabilityCall(params) {\n      if (!this.surveyDetails && !this.surveyDetails.eventId) {\n        throw new Error(\n          `Unable to check name availability. Event is not specified.`,\n        );\n      }\n      return await this.checkNameAvailability(\"surveys/checknameavailability\", {\n        name: params.value,\n        eventId: this.surveyDetails ? this.surveyDetails.eventId : 0,\n        surveyId: this.surveyDetails.id,\n      });\n    },\n    async checkNameAvailability(url, data) {\n      if (data.name === this.originalName) return;\n      let response;\n      try {\n        // Only includes id if it exists\n        response = await this.$http.get(\n          `${url}/?name=${data.name}&&surveyId=${data.surveyId}`,\n        );\n      } catch (err) {\n        throw new Error(\n          `Unable to check name availability. ${fromResponse(err)}`,\n        );\n      }\n      if (!response.data.nameAvailable) {\n        throw new Error(\"Name is already used\");\n      }\n    },\n    async onTemplateValueChanged(e) {\n      if (!isNotEmpty(e) || !isNotEmpty(e.value)) {\n        return;\n      }\n      try {\n        // Do nothing if value hasn't changed\n        if (e.value === e.previousValue) {\n          return;\n        }\n        let template = await this.fetchSurveyTemplateDetails(e.value);\n        // If set to template w/o org id then this is question bank.\n        //    therefore, we should clear optional questions\n        //    and set the optionalTemplate to the default template\n        if (!isNotEmpty(template.organisationId)) {\n          this.surveyDetails.optionalQuestions = [];\n          let response = await this.$http.get(\n            `surveys/${this.surveyId}/survey-templates/?qbank=true`,\n          );\n          this.surveyDetails.optionalQuestionTemplateId =\n            response.data.data[0].id;\n          this.surveyDetails.optionalTemplate = response.data.data[0];\n        }\n        // Else will be organisational Template, so\n        //    set optional Qs from the org template schema\n        else {\n          this.surveyDetails.optionalQuestions =\n            this.getOptionalQuestionsFromSchema(template.schema);\n        }\n      } catch (err) {\n        this.notifyError(\"Unable to update survey template.\");\n        this.surveyDetails.surveyTemplateId = null;\n      }\n    },\n    getOptionalQuestionsFromSchema(schema) {\n      let questions = [];\n      schema.pages.forEach((page) => {\n        page.elements.forEach((elt) => {\n          // Only add optional questions\n          if (elt.name.slice(0, 2) === \"O-\") {\n            questions.push(elt.name);\n          }\n        });\n      });\n      return questions;\n    },\n    async loadTemplates(searchOptions) {\n      let loadOptions = configureLookupSearch(searchOptions);\n      let response = await this.$http.get(\n        `surveys/${this.surveyId}/survey-templates/?qbank=false`,\n        {\n          params: loadOptions,\n        },\n      );\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    async loadEvents(searchOptions) {\n      let loadOptions = configureLookupSearch(searchOptions);\n\n      let response = await this.$http.get(\n        `events?organisationId=${this.surveyDetails.organisationId}`,\n        {\n          params: loadOptions,\n        },\n      );\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    async loadOrgs(searchOptions) {\n      let loadOptions = configureLookupSearch(searchOptions);\n\n      let response = await this.$http.get(`organisations`, {\n        params: loadOptions,\n      });\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"@/themes/custom-variables.scss\";\n\n.dx-textarea {\n  height: 100px !important;\n}\n\n.dx-texteditor-input::-webkit-scrollbar {\n  width: 4px;\n}\n\n.dx-texteditor-input::-webkit-scrollbar-track {\n  background: #e5e5e5;\n}\n\n.dx-texteditor-input::-webkit-scrollbar-thumb {\n  background-color: #cccccc;\n}\n\n/* Works on Firefox */\n.dx-texteditor-input {\n  scrollbar-width: thin;\n  scrollbar-color: #cccccc #e5e5e5;\n}\n\n.event-org-details-container {\n  display: flex;\n  flex-direction: row;\n  gap: 25px;\n  // janky fix for .head-container having too much padding\n  margin-top: -30px;\n  padding-bottom: 20px;\n}\n\n.event-org-details-section {\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n}\n\n.event-org-details-chips {\n  display: flex;\n  flex-direction: row;\n  gap: 5px;\n}\n\n.event-org-details-chip {\n  border-radius: 4px;\n  padding: 4px 7px 4px 7px;\n  font: $base-font-family-bold;\n  width: fit-content;\n  &.purple {\n    background-color: transparentize($color: $brand-primary, $amount: 0.9);\n    color: $brand-primary;\n  }\n  &.grey {\n    background-color: $grey-01;\n    color: $black;\n  }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-details.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-details.vue?vue&type=template&id=0f24f064&scoped=true\"\nimport script from \"./survey-details.vue?vue&type=script&lang=js\"\nexport * from \"./survey-details.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-details.vue?vue&type=style&index=0&id=0f24f064&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0f24f064\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"optional-questions-wrapper\"},[_c('div',[_c('dx-data-grid',{ref:_vm.dataGridRef,staticClass:\"thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.questionDataSource,\"noDataText\":_vm.noDataText,\"key-expr\":\"questionName\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true,\"onToolbarPreparing\":_vm.onDataGridToolbarPreparing,\"on-selection-changed\":_vm.questionSelectionChanged,\"selected-row-keys\":_vm.selectedRowKeys},on:{\"update:selectedRowKeys\":function($event){_vm.selectedRowKeys=$event},\"update:selected-row-keys\":function($event){_vm.selectedRowKeys=$event}},scopedSlots:_vm._u([{key:\"template-select-template\",fn:function(){return [_c('div',{staticClass:\"opt-questions-table-header-toolbar\"},[_c('div',{attrs:{\"id\":\"label-template\"}},[_vm._v(\"Template\")]),_c('dx-select-box',{ref:_vm.templateSelectRef,staticClass:\"optional-template-select-box\",attrs:{\"value\":_vm.surveyDetails.optionalTemplate,\"data-source\":_vm.templateDataSource,\"stylingMode\":\"outlined\",\"display-expr\":\"name\",\"value-expr\":\"this\",\"applyValueMode\":\"instantly\",\"placeholder\":\"Select Template\",\"disabled\":_vm.isSelectionDisabled,\"input-attr\":_vm.inputAttrTemplate},on:{\"update:value\":function($event){return _vm.$set(_vm.surveyDetails, \"optionalTemplate\", $event)},\"value-changed\":_vm.templateValueChanged}})],1)]},proxy:true},{key:\"names-template\",fn:function({data}){return [_c('div',{staticClass:\"choices-row\"},[_c('span',[_vm._v(\"\\n            \"+_vm._s(data.data.name)+\"\\n          \")])])]}},{key:\"choices-template\",fn:function({data}){return [_c('div',{staticClass:\"choices-row\"},[_c('span',[_vm._v(\"\\n            \"+_vm._s(_vm.calculateChoicesValue(data.data))+\"\\n          \")])])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-pager',{attrs:{\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('dx-selection',{attrs:{\"mode\":\"multiple\",\"show-check-boxes-mode\":\"always\"}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":false}}),_c('dx-selection',{attrs:{\"mode\":\"multiple\",\"show-check-boxes-mode\":_vm.getCheckboxMode}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}})],1)],1),_c('dx-load-panel',{attrs:{\"visible\":_vm.showLoader,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const createModel = () => {\n  return [\n    {\n      dataField: \"id\",\n      dataType: \"number\",\n      visible: false,\n      showInColumnChooser: false,\n    },\n    {\n      dataField: \"sequence\",\n      caption: \"Sequence\",\n      dataType: \"string\",\n      allowHiding: true,\n      width: \"100px\",\n    },\n    {\n      dataField: \"name\",\n      caption: \"Question\",\n      dataType: \"string\",\n      allowHiding: false,\n      cellTemplate: \"names-template\",\n      width: \"300px\",\n    },\n    {\n      dataField: \"questionTheme\",\n      caption: \"Question Theme\",\n      dataType: \"string\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"questionChoices\",\n      cellTemplate: \"choices-template\",\n      caption: \"Response Options\",\n      dataType: \"string\",\n      allowHiding: false,\n      allowFiltering: false,\n      width: \"600px\",\n    },\n    {\n      dataField: \"questionType\",\n      caption: \"Question Type\",\n      dataType: \"string\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"templateName\",\n      caption: \"Template\",\n      dataType: \"string\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"questionName\",\n      caption: \"Question Number \",\n      dataType: \"string\",\n      visible: false,\n      allowHiding: false,\n    },\n   \n  ];\n};\n","<template>\n  <div class=\"optional-questions-wrapper\">\n    <div>\n      <dx-data-grid\n        class=\"thin-column-chooser multi-select-grid-property\"\n        :show-borders=\"false\"\n        :data-source=\"questionDataSource\"\n        :noDataText=\"noDataText\"\n        key-expr=\"questionName\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"true\"\n        :ref=\"dataGridRef\"\n        :onToolbarPreparing=\"onDataGridToolbarPreparing\"\n        :on-selection-changed=\"questionSelectionChanged\"\n        :selected-row-keys.sync=\"selectedRowKeys\"\n      >\n        <dx-paging :page-size=\"10\" />\n        <dx-pager\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <dx-pager\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <dx-filter-row :visible=\"true\" />\n        <dx-selection\n          mode=\"multiple\"\n          show-check-boxes-mode=\"always\"\n        />\n        <DxHeaderFilter\n          :visible=\"true\"\n          :allowSearch=\"false\"\n        />\n        <dx-selection\n          mode=\"multiple\"\n          :show-check-boxes-mode=\"getCheckboxMode\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n        <template #template-select-template>\n          <div class=\"opt-questions-table-header-toolbar\">\n            <div id=\"label-template\">Template</div>\n            <dx-select-box\n              class=\"optional-template-select-box\"\n              :value.sync=\"surveyDetails.optionalTemplate\"\n              :data-source=\"templateDataSource\"\n              :ref=\"templateSelectRef\"\n              stylingMode=\"outlined\"\n              display-expr=\"name\"\n              value-expr=\"this\"\n              applyValueMode=\"instantly\"\n              placeholder=\"Select Template\"\n              @value-changed=\"templateValueChanged\"\n              :disabled=\"isSelectionDisabled\"\n              :input-attr=\"inputAttrTemplate\"\n            />\n          </div>\n        </template>\n        <template #names-template=\"{data}\">\n          <div class=\"choices-row\">\n            <span>\n              {{ data.data.name }}\n            </span>\n          </div>\n        </template>\n        <template #choices-template=\"{data}\">\n          <div class=\"choices-row\">\n            <span>\n              {{ calculateChoicesValue(data.data) }}\n            </span>\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n    <dx-load-panel\n      :visible=\"showLoader\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {DxSelectBox} from \"devextreme-vue\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxSelection,\n  DxPaging,\n  DxFilterRow,\n} from \"devextreme-vue/data-grid\";\nimport {createModel} from \"./survey-questions-table-col-defs\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\n\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {\n  isNotEmpty,\n  configureLookupSearch,\n  titleCase,\n} from \"../../common/helperFunctions\";\nimport subjects from \"../../config/subjects\";\nimport {eventOwnerRelationshipType} from \"@/common/constants\";\n\nexport default {\n  props: [\"isArchived\"],\n  components: {\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxSelection,\n    DxPaging,\n    DxLoadPanel,\n    DxSelectBox,\n  },\n  data() {\n    return {\n      questionDataSource: [],\n      checkboxMode: \"\",\n      templateDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadTemplates,\n          byKey: () => {\n            return this.surveyDetails.optionalTemplate;\n          },\n        }),\n      }),\n      noDataText: \"No questions found.\",\n      dataGridRef: \"templateGridRef\",\n      templateSelectRef: \"templateSelectRef\",\n      columns: createModel().filter((x) => x.dataField != \"templateName\"),\n      selectedRowKeys: [],\n      currentOptionalTemplate: null,\n      showLoader: false,\n      inputAttrTemplate: { 'aria-labelledby': 'label-template' }\n    };\n  },\n  computed: {\n    ...mapState(\"surveys\", [\"surveyDetails\", \"surveyTemplateDetails\"]),\n    ...mapGetters(\"surveys\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    isEventOwner(){\n      return this.surveyDetails.actingAsRelationshipTypeValue === eventOwnerRelationshipType.name;\n    },\n    canUserEdit(){\n      return this.$can(this.userAction, this.$subjects.survey.subject) && this.isEventOwner\n    },\n    getCheckboxMode() {\n      // \"none\" if user cannot complete action or if the SurveyTemplate is an org one.\n      return !this.$can(this.userAction, subjects.survey.subject) ||\n        this.isOrgSurveyTemplate ||\n        !this.canUserEdit ||\n        this.surveyDetails.numberOfResponses > 0 ||\n        this.isArchived\n        ? \"none\"\n        : \"always\";\n    },\n    isSelectionDisabled() {\n      if (\n        this.surveyDetails.numberOfResponses > 0 ||\n        this.isOrgSurveyTemplate ||\n        this.isArchived ||\n        !this.canUserEdit\n      ) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n    templateDisabled() {\n      if (this.surveyDetails.numberOfResponses > 0) {\n        return true;\n      } else {\n        return false;\n      }\n    },\n    isOrgSurveyTemplate(){\n      if(this.surveyTemplateDetails){\n        return isNotEmpty(this.surveyTemplateDetails.organisationId);\n      }\n      return false;\n    },\n    surveyId: function () {\n      return this.$route.params.id;\n    },\n  },\n  created(){\n    if(isNotEmpty(this.surveyDetails.surveyTemplateId)){\n      this.fetchSurveyTemplateDetails(this.surveyDetails.surveyTemplateId);\n    }\n  },\n  \n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"events\", {\n      createEvent: \"create\",\n      updateEvent: \"update\",\n      deleteEvent: \"delete\",\n      fetchEventDetails: \"fetchEventDetails\",\n      clearEventDetails: \"clear\",\n    }),\n    ...mapActions(\"surveys\", {\n      createSurvey: \"create\",\n      updateSurvey: \"update\",\n      deleteSurvey: \"delete\",\n      fetchSurveyDetails: \"fetchSurveyDetails\",\n      fetchSurveyTemplateDetails: \"fetchSurveyTemplateDetails\",\n    }),\n    ...mapActions(\"locations\", {\n      fetchLocationDetails: \"fetchLocationDetails\",\n      clearLocationDetails: \"clear\",\n    }),\n    calculateChoicesValue(rowData) {\n      let formattedRowData = [];\n\n      if (\n        rowData.questionType === \"Dropdown\" ||\n        rowData.questionType === \"Checkbox\"\n      ) {\n        rowData.questionChoices.forEach((element) => {\n          formattedRowData.push(\" \" + element);\n        });\n      }\n\n      if (rowData.questionType === \"Radiogroup\") {\n        rowData.questionChoices.forEach((element) => {\n          formattedRowData.push(\" \" + element.text);\n        });\n      }\n\n      if (rowData.questionType === \"Text\") {\n        formattedRowData.push(\"Free Text Input\");\n      }\n\n      if (rowData.questionType === \"Matrixdropdown\") {\n        formattedRowData.push(\"Matrix Dropdown\");\n      }\n\n      return formattedRowData.join();\n    },\n    onDataGridToolbarPreparing(e) {\n      let toolbarItems = e.toolbarOptions.items;\n\n      toolbarItems.unshift({\n        location: \"before\",\n        template: \"template-select-template\",\n      });\n    },\n    questionSelectionChanged(e) {\n      if(!this.isOrgSurveyTemplate) {\n        this.surveyDetails.optionalQuestions = e.selectedRowsData.map(\n          (x) => x.questionName,\n        );\n      }\n    },\n    loadTemplateQuestionsFromSchema(schema) {\n      this.questionDataSource = [];\n      let orgDisplayName = this.surveyDetails.organisationDisplayName;\n      let orgDisplayNamePossessive = orgDisplayName.endsWith(\"s\")\n        ? `${orgDisplayName}'`\n        : `${orgDisplayName}'s`;\n      schema.pages.forEach((page) => {\n        let questionTheme = page.title;\n        page.elements.forEach((elt) => {\n          let seq = this.questionDataSource.length + 1;\n          let choices = elt.choices;\n          if (elt.type === \"dropdown\" || elt.type === \"checkbox\") {\n            let choicesText = [];\n            choices.forEach((element) => {\n              choicesText.push(element.text);\n            });\n            choices = choicesText;\n          }\n\n          // Only add optional questions\n          if (elt.name.slice(0, 2) === \"O-\") {\n            // Replace plurals\n            if ([\"O-Q16\", \"O-Q17\", \"O-Q18\", \"O-Q39\", \"O-Q49\", \"O-Q50\", \"O-Q56\"].includes(elt.name)) {\n              elt.title = elt.title\n                .replaceAll(\"[NPO]\", orgDisplayNamePossessive)\n                .replaceAll(\"[discipline]\", this.surveyDetails.disciplineDisplayName);\n            }\n            else {\n              elt.title = elt.title\n                .replaceAll(\"[NPO]\", orgDisplayName)\n                .replaceAll(\"[discipline]\", this.surveyDetails.disciplineDisplayName);\n            }\n\n            this.questionDataSource.push({\n              name: elt.title,\n              questionType: titleCase(elt.type),\n              questionName: elt.name,\n              questionChoices: choices,\n              questionTheme: questionTheme,\n              sequence: seq,\n            });\n          }\n        });\n      });\n    },\n    templateValueChanged(e) {\n      if (isNotEmpty(e.event)) {\n        this.selectedRowKeys = [];\n        this.surveyDetails.optionalQuestions = [];\n        this.surveyDetails.optionalTemplate = e.value;\n        this.surveyDetails.optionalQuestionTemplateId = e.value.id;\n        this.loadTemplateQuestionsFromSchema(e.value.schema);\n      }\n    },\n    async loadTemplates(searchOptions) {\n      let loadOptions = configureLookupSearch(searchOptions);\n\n      let response = await this.$http.get(\n        `surveys/${this.surveyId}/survey-templates/?qbank=true`,\n        {\n          params: loadOptions,\n        },\n      );\n      // If optional template hasn't been set then use the first value as default.\n      if (\n        this.surveyDetails.optionalQuestionTemplateId === null &&\n        !this.isOrgSurveyTemplate\n      ) {\n        this.surveyDetails.optionalQuestionTemplateId =\n          response.data.data[0].id;\n        this.surveyDetails.optionalTemplate = response.data.data[0];\n        this.templateSelectBoxRefreshKey = this.templateSelectBoxRefreshKey + 1;\n        this.$forceUpdate();\n        this.loadTemplateQuestionsFromSchema(\n          this.surveyDetails.optionalTemplate.schema,\n        );\n      }\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n  },\n  mounted() {\n    this.showLoader = true;\n    if (this.isOrgSurveyTemplate) {\n      this.surveyDetails.optionalTemplate = null;\n      this.loadTemplateQuestionsFromSchema(this.surveyTemplateDetails.schema);\n        this.selectedRowKeys = this.questionDataSource.map(\n            (x) => x.questionName\n        );\n      this.showLoader = false;\n      return;\n    }\n\n    // if optional template exists then add selected rows\n    if (isNotEmpty(this.surveyDetails.optionalQuestionTemplateId)) {\n      this.fetchSurveyTemplateDetails(\n        this.surveyDetails.optionalQuestionTemplateId,\n      ).then((response) => {\n        this.currentOptionalTemplate = response;\n        this.surveyDetails.optionalTemplate = response;\n        this.loadTemplateQuestionsFromSchema(response.schema);\n        this.selectedRowKeys = this.questionDataSource\n          .filter((x) =>\n            this.surveyDetails.optionalQuestions.includes(x.questionName),\n          )\n          .map((x) => x.questionName);\n\n        if (this.getCheckboxMode === \"none\") {\n          this.questionDataSource = this.questionDataSource.filter((x) =>\n            this.surveyDetails.optionalQuestions.includes(x.questionName),\n          );\n        }\n\n        if (\n          !isNotEmpty(this.surveyDetails.optionalTemplate) &&\n          !isNotEmpty(this.surveyDetails.optionalQuestionTemplateId)\n        ) {\n          this.surveyDetails.optionalQuestions = [];\n        }\n        this.showLoader=false;\n      });\n    } else {\n      this.templateDataSource.reload();\n      this.showLoader=false;\n    }\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../../themes/custom-variables.scss\";\n\n.opt-questions-table-header-toolbar{\n  display: flex;\n  flex-direction: column;\n  align-content: center;\n  align-items: flex-start;\n  gap: 5px;\n}\n\n//.header-subtitle {\n//font: $base-font-family-medium !important;\n//font-size: $font-size-subheading !important;\n\n//}\n\ntable > tbody > tr.dx-row.dx-header-row > td.dx-command-select {\n  vertical-align: bottom !important;\n  padding-bottom: 5px !important;\n  background-color: transparent !important;\n}\n\n.dx-datagrid\n  .dx-datagrid-content\n  .dx-datagrid-table\n  .dx-row\n  > td.dx-command-select {\n  padding-left: 5px !important;\n  padding-top: 3px !important;\n}\n\n.choices-row {\n  max-width: 600px;\n  white-space: initial;\n  word-wrap: break-word;\n}\n\n.optional-questions-wrapper {\n  padding-bottom: 15px;\n}\n\n.optional-template-select-box {\n  width: fit-content;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-optional-questions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-optional-questions.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-optional-questions.vue?vue&type=template&id=4a0551ee&scoped=true\"\nimport script from \"./survey-optional-questions.vue?vue&type=script&lang=js\"\nexport * from \"./survey-optional-questions.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-optional-questions.vue?vue&type=style&index=0&id=4a0551ee&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4a0551ee\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"survey-summary-container\"},[_c('div',{staticClass:\"survey-details-container\"},[_c('div',{staticClass:\"row details-flex\"},[_c('div',{staticClass:\"col\"},[_c('p',{staticClass:\"info-header\"},[_vm._v(\"Survey Name\")]),_c('p',{staticClass:\"info-caption\"},[_vm._v(\"\\n          \"+_vm._s(_vm.surveyDetails.name !== null ? _vm.surveyDetails.name : `-`)+\"\\n        \")])]),_c('div',{staticClass:\"col\"},[_c('p',{staticClass:\"info-header\"},[_vm._v(\"Template\")]),_c('p',{staticClass:\"info-caption\"},[_vm._v(\"\\n          \"+_vm._s(_vm.surveyTemplateName !== \"\" ? _vm.surveyTemplateName : `-`)+\"\\n        \")])]),_c('div',{staticClass:\"col\"},[_c('p',{staticClass:\"info-header\"},[_vm._v(\"Event\")]),_c('p',{staticClass:\"info-caption\"},[_vm._v(\"\\n          \"+_vm._s(_vm.eventName !== \"\" ? _vm.eventName : `-`)+\"\\n        \")])])])]),_c('div',{staticClass:\"row details-flex justify-content-start org-template-container\"},[_c('div',{staticClass:\"col org-template-item\"},[_c('dx-check-box',{attrs:{\"text\":\"Create as an organisational template for future use\",\"value\":_vm.surveyDetails.createAsOrganisationTemplate,\"disabled\":!_vm.canSaveAsOrgTemplate,\"visible\":_vm.surveyDetails.isDraft || !_vm.isEditMode},on:{\"update:value\":function($event){return _vm.$set(_vm.surveyDetails, \"createAsOrganisationTemplate\", $event)},\"value-changed\":_vm.onCheckBoxValueChanged}})],1),_c('div',{key:_vm.orgTemplateFreshKey + 1,staticClass:\"col org-template-item\"},[_c('dx-text-box',{attrs:{\"value\":_vm.surveyDetails.orgSurveyTemplateName,\"placeholder\":\"Enter template name...\",\"visible\":_vm.surveyDetails.createAsOrganisationTemplate === true,\"max-length\":75},on:{\"update:value\":function($event){return _vm.$set(_vm.surveyDetails, \"orgSurveyTemplateName\", $event)}}})],1),_c('div',{key:_vm.orgTemplateFreshKey,staticClass:\"col org-template-item\"},[_c('dx-text-box',{attrs:{\"value\":_vm.surveyDetails.orgSurveyTemplateDescription,\"placeholder\":\"Enter template description...\",\"visible\":_vm.surveyDetails.createAsOrganisationTemplate === true,\"max-length\":255},on:{\"update:value\":function($event){return _vm.$set(_vm.surveyDetails, \"orgSurveyTemplateDescription\", $event)}}})],1)]),_c('div',[_c('dx-data-grid',{ref:_vm.dataGridRef,staticClass:\"thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.questionsDataSource,\"key-expr\":\"name\",\"noDataText\":_vm.noDataText,\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true},scopedSlots:_vm._u([{key:\"names-template\",fn:function({data}){return [_c('div',{staticClass:\"choices-row\"},[_c('span',[_vm._v(\"\\n            \"+_vm._s(data.data.name)+\"\\n          \")])])]}},{key:\"choices-template\",fn:function({data}){return [_c('div',{staticClass:\"choices-row\"},[_c('span',[_vm._v(\"\\n            \"+_vm._s(_vm.calculateChoicesValue(data.data))+\"\\n          \")])])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}})],1)],1),_c('dx-load-panel',{attrs:{\"visible\":_vm.showLoader,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"survey-summary-container\">\n    <div class=\"survey-details-container\">\n      <div class=\"row details-flex\">\n        <div class=\"col\">\n          <p class=\"info-header\">Survey Name</p>\n          <p class=\"info-caption\">\n            {{ surveyDetails.name !== null ? surveyDetails.name : `-` }}\n          </p>\n        </div>\n        <div class=\"col\">\n          <p class=\"info-header\">Template</p>\n          <p class=\"info-caption\">\n            {{ surveyTemplateName !== \"\" ? surveyTemplateName : `-` }}\n          </p>\n        </div>\n        <div class=\"col\">\n          <p class=\"info-header\">Event</p>\n          <p class=\"info-caption\">\n            {{ eventName !== \"\" ? eventName : `-` }}\n          </p>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"row details-flex justify-content-start org-template-container\">\n      <div class=\"col org-template-item\">\n        <dx-check-box\n          text=\"Create as an organisational template for future use\"\n          :value.sync=\"surveyDetails.createAsOrganisationTemplate\"\n          @value-changed=\"onCheckBoxValueChanged\"\n          :disabled=\"!canSaveAsOrgTemplate\"\n          :visible=\"surveyDetails.isDraft || !isEditMode\"\n        />\n      </div>\n      <div\n        class=\"col org-template-item\"\n        :key=\"orgTemplateFreshKey + 1\"\n      >\n        <dx-text-box\n          :value.sync=\"surveyDetails.orgSurveyTemplateName\"\n          placeholder=\"Enter template name...\"\n          :visible=\"surveyDetails.createAsOrganisationTemplate === true\"\n          :max-length=\"75\"\n        />\n      </div>\n      <div\n        class=\"col org-template-item\"\n        :key=\"orgTemplateFreshKey\"\n      >\n        <dx-text-box\n          :value.sync=\"surveyDetails.orgSurveyTemplateDescription\"\n          placeholder=\"Enter template description...\"\n          :visible=\"surveyDetails.createAsOrganisationTemplate === true\"\n          :max-length=\"255\"\n        />\n      </div>\n    </div>\n\n    <div>\n      <dx-data-grid\n        class=\"thin-column-chooser multi-select-grid-property\"\n        :show-borders=\"false\"\n        :data-source=\"questionsDataSource\"\n        key-expr=\"name\"\n        :noDataText=\"noDataText\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"true\"\n        :ref=\"dataGridRef\"\n      >\n        <dx-paging :page-size=\"10\" />\n        <dx-pager\n          :allowed-page-sizes=\"[5, 10, 25]\"\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n        <template #names-template=\"{data}\">\n          <div class=\"choices-row\">\n            <span>\n              {{ data.data.name }}\n            </span>\n          </div>\n        </template>\n        <template #choices-template=\"{data}\">\n          <div class=\"choices-row\">\n            <span>\n              {{ calculateChoicesValue(data.data) }}\n            </span>\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n    <dx-load-panel\n      :visible=\"showLoader\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {createModel} from \"./survey-questions-table-col-defs\";\nimport {serializeLoadOptions} from \"../../utils/load-options-serializer\";\nimport {isNotEmpty, titleCase} from \"../../common/helperFunctions\";\nimport {DxCheckBox} from \"devextreme-vue/check-box\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxTextBox} from \"devextreme-vue/text-box\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxColumnFixing,\n  DxPaging,\n} from \"devextreme-vue/data-grid\";\nimport {eventOwnerRelationshipType} from \"@/common/constants\";\n\nexport default {\n  components: {\n    DxCheckBox,\n    DxTextBox,\n    DxDataGrid,\n    DxLoadPanel,\n    DxPager,\n    DxColumnFixing,\n    DxPaging,\n  },\n  data() {\n    return {\n      noDataText: \"No questions found.\",\n      dataGridRef: \"templateGridRef\",\n      columns: createModel(),\n      mandatoryQs: [],\n      optionalQs: [],\n      eventName: \"\",\n      gettingSurvey: false,\n      surveyTemplateName: \"\",\n      orgTemplateFreshKey: 0,\n      loadingList: [],\n    };\n  },\n  computed: {\n    ...mapState(\"surveys\", [\"surveyDetails\", \"surveyTemplateDetails\"]),\n    ...mapGetters(\"surveys\", [\"isProcessing\"]),\n    ...mapGetters(\"surveys\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    questionsDataSource() {\n      let array = this.mandatoryQs.concat(this.optionalQs);\n      let newArray = [];\n      let mandQs = [];\n\n      // sort array so that B-Q1 and B-Q2 are first, then optional Qs and then mandatory\n      array.forEach((q) => {\n        if (q.id == \"B-Q1\" || q.id == \"B-Q2\" || q.id.startsWith(\"O-Q\")) {\n          newArray.push(q)\n        }\n        else{\n          mandQs.push(q);\n        }\n      });\n\n      newArray = newArray.concat(mandQs);\n\n      newArray = newArray.map((item, index) => {\n        item.sequence = index + 1;\n        return item;\n      });\n\n      return newArray;\n    },\n    surveyHasResponses: function () {\n      return this.surveyDetails.numberOfResponses > 0;\n    },\n    showLoader: function () {\n      return this.loadingList.length > 0;\n    },\n    isOrgSurveyTemplate() {\n      if (this.surveyTemplateDetails) {\n        return isNotEmpty(this.surveyTemplateDetails.organisationId);\n      }\n      return true;\n    },\n    isEventOwner() {\n      return (\n        this.surveyDetails.actingAsRelationshipTypeValue ===\n        eventOwnerRelationshipType.name\n      );\n    },\n    canUserEdit() {\n      return (\n        this.$can(this.userAction, this.$subjects.survey.subject) &&\n        this.isEventOwner\n      );\n    },\n    canSaveAsOrgTemplate() {\n      return (\n        this.surveyDetails.isDraft &&\n        this.isEditMode &&\n        !this.isOrgSurveyTemplate &&\n        this.canUserEdit\n      );\n    },\n  },\n  created() {\n    if (isNotEmpty(this.surveyDetails.surveyTemplateId)) {\n      this.fetchSurveyTemplateDetails(this.surveyDetails.surveyTemplateId);\n    }\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"events\", {\n      fetchEventDetails: \"fetchEventDetails\",\n    }),\n    ...mapActions(\"surveys\", {\n      fetchSurveyTemplateDetails: \"fetchSurveyTemplateDetails\",\n    }),\n    calculateChoicesValue(rowData) {\n      let formattedRowData = [];\n\n      if (\n        rowData.questionType === \"Dropdown\" ||\n        rowData.questionType === \"Checkbox\"\n      ) {\n        rowData.questionChoices.forEach((element) => {\n          formattedRowData.push(\" \" + element);\n        });\n      }\n\n      if (rowData.questionType === \"Radiogroup\") {\n        rowData.questionChoices.forEach((element) => {\n          formattedRowData.push(\" \" + element.text);\n        });\n      }\n\n      if (rowData.questionType === \"Text\") {\n        formattedRowData.push(\"Free Text Input\");\n      }\n\n      if (rowData.questionType === \"Matrixdropdown\") {\n        formattedRowData.push(\"Matrix Dropdown\");\n      }\n\n      return formattedRowData.join();\n    },\n    parseSchemaToQuestionsTable(\n      isMandatory,\n      schema,\n      templateName,\n      optionalNames,\n    ) {\n      let orgDisplayName = this.surveyDetails.organisationDisplayName;\n      let orgDisplayNamePossessive = orgDisplayName.endsWith(\"s\")\n        ? `${orgDisplayName}'`\n        : `${orgDisplayName}'s`;\n      // Iterate over each page in the schema.\n      // Iterating over each element(question) in each page.\n      // Push the question name into questionDataSource.\n      // Mand Q then add Mand Q template name else add Optional Q Template name\n      for (let i = 0; i < schema.pages.length; i++) {\n        let qs = schema.pages[i].elements;\n        let theme = schema.pages[i].title;\n        for (let j = 0; j < qs.length; j++) {\n            let title = \"\";\n            // Replace plurals\n          if ([\"O-Q16\", \"O-Q17\", \"O-Q18\", \"O-Q39\", \"O-Q49\", \"O-Q50\", \"O-Q56\"].includes(qs[j].name)) {\n            title = qs[j].title\n              .replaceAll(\"[NPO]\", orgDisplayNamePossessive)\n              .replaceAll(\"[discipline]\", this.surveyDetails.disciplineDisplayName);\n          }\n          else {\n            title = qs[j].title\n              .replaceAll(\"[NPO]\", orgDisplayName)\n              .replaceAll(\"[discipline]\", this.surveyDetails.disciplineDisplayName);\n          }\n          let qType = qs[j].type;\n          let name = qs[j].name;\n          let choices = qs[j].choices;\n          let qId = qs[j].name;\n\n          if (qType === \"dropdown\") {\n            let choicesText = [];\n            choices.forEach((element) => {\n              choicesText.push(element.text);\n            });\n            choices = choicesText;\n          }\n\n          if (qType === \"checkbox\") {\n            let checkboxText = [];\n            choices.forEach((element) => {\n              checkboxText.push(element.text);\n            });\n            choices = checkboxText;\n          }\n\n          if (isNotEmpty(optionalNames)) {\n            if (!optionalNames.includes(name)) {\n              continue;\n            }\n          }\n          if (isMandatory === true) {\n            this.mandatoryQs.push({\n              id: qId,\n              name: title,\n              questionType: titleCase(qType),\n              templateName: templateName,\n              questionChoices: choices,\n              questionTheme: theme,\n            });\n          } else {\n            //if(!this.isOrgSurveyTemplate) {\n            this.optionalQs.push({\n              id: qId,\n              name: title,\n              questionType: titleCase(qType),\n              templateName: templateName,\n              questionChoices: choices,\n              questionTheme: theme,\n            });\n            //}\n          }\n        }\n      }\n    },\n    onCheckBoxValueChanged(e) {\n      if (e.value === true) {\n        this.surveyDetails.createAsOrganisationTemplate = true;\n      } else {\n        this.surveyDetails.createAsOrganisationTemplate = false;\n        this.surveyDetails.orgSurveyTemplateName = null;\n        this.surveyDetails.orgSurveyTemplateDescription = null;\n      }\n      this.orgTemplateFreshKey++;\n    },\n  },\n  async mounted() {\n    this.loadingList.push(\"event\");\n    this.fetchEventDetails(this.surveyDetails.eventId)\n      .then(async (response) => {\n        this.surveyDetails.event = response;\n        this.eventName = response.name;\n      })\n      .finally(\n        () => (this.loadingList = this.loadingList.filter((x) => x != \"event\")),\n      );\n\n    if (isNotEmpty(this.surveyDetails.surveyTemplateId)) {\n      this.loadingList.push(\"template\");\n      this.fetchSurveyTemplateDetails(this.surveyDetails.surveyTemplateId)\n        .then(async (responseMand) => {\n          this.surveyDetails.surveyTemplate = responseMand;\n          this.surveyTemplateName = responseMand.name;\n          this.parseSchemaToQuestionsTable(\n            true,\n            responseMand.schema,\n            responseMand.name,\n          );\n        })\n        .finally(\n          () =>\n            (this.loadingList = this.loadingList.filter(\n              (x) => x != \"template\",\n            )),\n        );\n    }\n    if (\n      isNotEmpty(this.surveyDetails.optionalQuestionTemplateId) &&\n      !this.isOrgSurveyTemplate\n    ) {\n      this.loadingList.push(\"optionaltemplate\");\n      await this.fetchSurveyTemplateDetails(\n        this.surveyDetails.optionalQuestionTemplateId,\n      )\n        .then((responseOpt) => {\n          this.surveyDetails.optionalQuestionTemplate = responseOpt;\n          this.parseSchemaToQuestionsTable(\n            false,\n            responseOpt.schema,\n            responseOpt.name,\n            this.surveyDetails.optionalQuestions,\n          );\n        })\n        .finally(\n          () =>\n            (this.loadingList = this.loadingList.filter(\n              (x) => x != \"optionaltemplate\",\n            )),\n        );\n    }\n  },\n  beforeDestroy() {},\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../../themes/custom-variables.scss\";\n\np {\n  margin: unset;\n}\n\n.col {\n  padding: unset;\n}\n.row {\n  gap: 10px;\n  margin: unset;\n  justify-content: space-between;\n}\n\n.details-flex {\n  margin-left: 10px;\n  margin-right: 10px;\n}\n\n.org-template-container {\n  padding-top: 15px;\n  padding-bottom: 20px;\n}\n\n.choices-row {\n  max-width: 600px;\n  white-space: initial;\n  word-wrap: break-word;\n}\n\n.survey-details-container {\n  padding-bottom: 15px;\n}\n\n.survey-summary-container {\n  padding-bottom: 30px;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-summary.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-summary.vue?vue&type=template&id=07af3821&scoped=true\"\nimport script from \"./survey-summary.vue?vue&type=script&lang=js\"\nexport * from \"./survey-summary.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-summary.vue?vue&type=style&index=0&id=07af3821&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"07af3821\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"entity-warning red survey-link-container\"},[_c('div',{staticClass:\"qr-details-container\"},[(!_vm.isArchived)?_c('div',{staticClass:\"qr-container\"},[_c('qrcode-vue',{staticClass:\"qr-code\",attrs:{\"value\":`${_vm.baseUrl}/survey/${_vm.surveyDetails.quickCode}`,\"level\":\"M\"}})],1):_vm._e(),_c('div',{staticClass:\"details-container\"},[(!_vm.isArchived)?_c('div',[_vm._m(0),_c('a',{class:_vm.surveyDetails.isActive ? `` : `disable-link`,attrs:{\"target\":\"_blank\",\"href\":_vm.surveyUrl}},[_vm._v(_vm._s(_vm.surveyUrl))])]):_vm._e(),_c('div',[_c('p',{staticClass:\"info-caption\",attrs:{\"id\":\"exportDiv\",\"tabindex\":\"0\"},on:{\"click\":_vm.downloadSurveyResponseExport,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.downloadSurveyResponseExport.apply(null, arguments)}}},[_c('i',{staticClass:\"fas fa-external-link-alt\"}),_c('span',{staticClass:\"info-header\"},[_vm._v(\" Number of responses: \")]),_vm._v(_vm._s(_vm.surveyDetails.numberOfResponses)+\"\\n          \")])]),_c('div',{staticClass:\"btn-container left-side-actions-container\"},[(_vm.surveyDetails.schema)?_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.downloadQrCode}},[_c('i',{staticClass:\"fas fa-file-download\"}),_vm._v(\"Download QR code\")]):_vm._e(),_c('dx-button',{staticClass:\"btn-secondary unattended-mode-btn\",attrs:{\"disabled\":!_vm.isSurveyActive || _vm.isInUnattendedMode,\"on-click\":_vm.onStartUnattendedModeClicked}},[_c('i',{staticClass:\"fas fa-eye-slash\"}),_vm._v(\"Start unattended mode\")])],1)])]),(!_vm.isArchived)?_c('div',{staticClass:\"btn-container\"},[(_vm.surveyDetails.schema)?_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.downloadOfflineTemplate}},[_c('i',{staticClass:\"fas fa-file-download\"}),_vm._v(\"Download offline\\n        template\")]):_vm._e(),_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\",\"disabled\":!_vm.isSurveyActive,\"on-click\":_vm.uploadTemplateClicked}},[_c('i',{staticClass:\"fas fa-upload\"}),_vm._v(\"Upload offline template\")])],1):_vm._e()]),_c('ConfirmPopup',{attrs:{\"popupVisible\":_vm.unattendedPopupVisible,\"titleName\":\"Start unattended mode\",\"onConfirm\":_vm.startUnattendedModeFunction,\"confirmMessage\":`This will start the survey in a mode suitable for unattended use (e.g. on a device in a foyer) to collect multiple responses from your audience members. Continuing will log you out of Illuminate, and redirect to this survey. Unattended mode will will remain active for the duration of your current browser session. You can enter unattended mode for multiple surveys on this device, and can also enter on multiple devices at the same time. If leaving this device unattended, please ensure that Illuminate log-in information is not stored on this device.`},on:{\"onPopupClosed\":function($event){_vm.unattendedPopupVisible = false}}}),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}}),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"#exportDiv\"}},[_c('div',{staticClass:\"tooltip\"},[_vm._v(\"\\n      Click here to download an export of the survey responses.\\n    \")])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('p',{staticClass:\"info-caption\"},[_c('span',{staticClass:\"info-header\"},[_vm._v(\"Survey Link: \")])])\n}]\n\nexport { render, staticRenderFns }","import {Workbook} from \"exceljs\";\nimport * as fs from \"file-saver\";\nimport {isNotEmpty} from \"../common/helperFunctions\";\n\nconst qTypes = {\n  dropdown: \"dropdown\",\n  text: \"text\",\n  checkbox: \"checkbox\",\n  radiogroup: \"radiogroup\",\n  matrixdropdown: \"matrixdropdown\",\n  number: \"number\",\n  date: \"date\",\n};\n\n/**\n * Exports and downloads the offline survey template to an Excel file.\n * \n * @param {Object} surveyDetails - The details of the survey, returned from GET Survey By ID.\n */\nexport async function exportSurveyTemplate(surveyDetails) {\n  let surveySchema = surveyDetails.schema;\n  let orgName = surveyDetails.organisationDisplayName;\n  let disciplineName = surveyDetails.disciplineDisplayName;\n\n  //The filename is constructed by combining the survey quick code, event name, and survey name.\n  // Any non-alphanumeric characters are removed from the filename.\n  let fileName =\n          `Illuminate-${surveyDetails.quickCode}-${surveyDetails.eventName}-${surveyDetails.name}`.replace(\n            /[^a-z0-9\\-_\\s]/gi,\n            \"\",\n          ) + \".xlsx\";\n\n  let questions = parseQuestions(surveySchema, orgName, disciplineName);\n  let rows = getRowsFromQuestions(questions);\n\n  const options = {\n    dateFormat: \"DD/MM/YYYY HH:mm:ss\",\n    dateUTC: true, // use utc when rendering dates\n  };\n\n  generateExcel(rows, questions, \"Offline Template\", fileName, options);\n}\n\n/**\n * Converts an array of questions into an array of rows for exporting survey templates.\n * Each row contains the name, text, options, and responses of a question.\n *\n * @param {Array} questions - The array of questions to convert.\n * @returns {Array} - The array of rows representing the questions.\n */\nfunction getRowsFromQuestions(questions) {\n  const properties = ['name', 'text', 'options', 'responses'];\n  return properties.map(property => questions.map(question => ({ value: question[property] })));\n}\n\n/**\n * Parses the survey schema and generates an array of questions.\n * \n * @param {Object} surveySchema - The survey schema object.\n * @param {string} orgName - The name of the organization.\n * @param {string} disciplineName - The name of the discipline.\n * @returns {Array} - An array of questions.\n */\nfunction parseQuestions(surveySchema, orgName, disciplineName) {\n  let questions = [\n    {\n      name: \"Question Name\",\n      text: \"Question Text\",\n      options: \"Options\",\n      responses: \"Responses\",\n    },\n  ];\n\n  let orgDisplayName = orgName;\n  let orgDisplayNamePossessive = orgName.endsWith(\"s\")\n    ? `${orgName}'`\n    : `${orgName}'s`;\n\n  for (let i = 0; i < surveySchema.pages.length; i++) {\n    let qs = surveySchema.pages[i].elements;\n    for (let j = 0; j < qs.length; j++) {\n      let curQ = qs[j];\n      let name = curQ.name;\n      let text = \"\";\n      // Replace plurals\n      if ([\"O-Q16\", \"O-Q17\", \"O-Q18\", \"O-Q39\", \"O-Q49\", \"O-Q50\", \"O-Q56\"].includes(name)) {\n        text = curQ.title\n          .replaceAll(\"[NPO]\", orgDisplayNamePossessive)\n          .replaceAll(\"[discipline]\", disciplineName);\n      }\n      else {\n        text = curQ.title\n          .replaceAll(\"[NPO]\", orgDisplayName)\n          .replaceAll(\"[discipline]\", disciplineName);\n      }\n      let options = \"Free text\";\n      let type = curQ.type;\n      let inputType = curQ.inputType;\n\n      if (isNotEmpty(curQ.choices)) {\n        let optionsList = curQ.choices.map((x) => x.text);\n        options = optionsList.join(\"\\n\");\n      }\n\n      // Parse matrix dropdowns\n      if (isNotEmpty(curQ.rows)) {\n        let matrixCols = curQ.rows.map((x, i) => {\n          return {\n            name: `${name}.${i + 1}`,\n            text: `${text}\\n\\n${x.text}`,\n            options: \"\",\n            responses: \"\",\n            type: curQ.type,\n            inputType: curQ.columns[0].inputType,\n          };\n        });\n        matrixCols.forEach((x) => {\n          questions.push(x);\n        });\n        continue;\n      }\n\n      // Parse dropdowns with otherText\n      if (isNotEmpty(curQ.otherText) && isNotEmpty(curQ.choices)) {\n        let optionsList = curQ.choices.map((x) => x.text);\n        optionsList.push(curQ.otherText);\n        options = optionsList.join(\"\\n\");\n\n        questions.push({\n          name: `${name}`,\n          text: text,\n          options: options,\n          responses: \"\",\n          type: type,\n          inputType: inputType,\n        });\n\n        questions.push({\n          name: `${name}-Comment`,\n          text: `${text}\\n\\n${curQ.otherText}`,\n          options: \"Free Text\",\n          responses: \"\",\n          type: qTypes.Text,\n          inputType: inputType,\n        });\n\n        continue;\n      }\n\n      // Parse checkboxes with noneText\n      if (isNotEmpty(curQ.noneText) && isNotEmpty(curQ.choices)) {\n        let optionsList = curQ.choices.map((x) => x.text);\n        optionsList.push(\"none\");\n        options = optionsList.join(\"\\n\");\n\n        questions.push({\n          name: `${name}`,\n          text: text,\n          options: options,\n          responses: \"\",\n          type: type,\n          inputType: inputType,\n        });\n\n        continue;\n      }\n\n      questions.push({\n        name: name,\n        text: text,\n        options: options,\n        responses: \"\",\n        type: type,\n        inputType: inputType,\n      });\n    }\n  }\n\n  return questions;\n}\n\n/**\n * Generates an Excel file with the provided data.\n * \n * @param {Array<Array<any>>} rows - The rows of data to be included in the Excel file.\n * @param {Array<string>} questions - The list of questions corresponding to the data rows.\n * @param {string} sheetName - The name of the worksheet in the Excel file.\n * @param {string} fileName - The name of the generated Excel file.\n * @param {object} options - The options for generating the Excel file.\n */\nfunction generateExcel(rows, questions, sheetName, fileName, options) {\n  //Create workbook and worksheet\n  let workbook = new Workbook();\n  let worksheet = workbook.addWorksheet(sheetName);\n\n  rows.forEach((row) => {\n    worksheet.addRow(row.map((x) => x.value));\n  });\n\n  addDataValidation(workbook, worksheet, rows, questions);\n  styleExcel(worksheet, rows);\n\n  //Generate Excel File with given name\n  workbook.xlsx.writeBuffer(options).then((data) => {\n    let blob = new Blob([data], {\n      type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n    });\n    fs.saveAs(blob, fileName);\n  });\n}\n\n/**\n * Styles the Excel worksheet with specific formatting rules.\n * @param {Worksheet} worksheet - The Excel worksheet to style.\n * @param {Array<Array<any>>} rows - The rows of data in the worksheet.\n */\nfunction styleExcel(worksheet, rows) {\n  const numCols = rows[0].length;\n\n  //Cols have width 35 and use Arial 10.\n  for (let i = 1; i <= rows[0].length; i++) {\n    let col = worksheet.getColumn(i);\n    col.width = 35;\n    col.font = {name: \"Arial\", size: 10};\n  }\n\n  // Rows wrap text and align top left\n  for (let i = 1; i < rows.length; i++) {\n    let row = worksheet.getRow(i);\n    row.alignment = {wrapText: true, vertical: \"top\", horizontal: \"left\"};\n  }\n\n  // Col 1 has width 15, is bold and has a right border\n  let col1 = worksheet.getColumn(1);\n  col1.width = 15;\n  col1.border = {\n    right: {style: \"thin\", color: {argb: \"FF000000\"}},\n  };\n  col1.font = {bold: true};\n\n  // Row 3 (options row) is hidden\n  let row3 = worksheet.getRow(3);\n  row3.hidden = true;\n\n  // Row 4 (responses row) has bottom border\n  let row4 = worksheet.getRow(4);\n  row4.border = {\n    right: {style: \"thin\", color: {argb: \"FF000000\"}},\n    bottom: {style: \"thin\", color: {argb: \"FF000000\"}},\n  };\n\n  // Make unanswered questions light grey background and darker grey border\n  worksheet.addConditionalFormatting({\n    ref: `B1:${numberToLetters(numCols)}1000`,\n    rules: [\n      {\n        type: \"expression\",\n        formulae: [`OR(B1=\"\", ISBLANK(B1))`],\n        style: {\n          fill: {\n            type: \"pattern\",\n            pattern: \"solid\",\n            bgColor: {argb: \"FFF2F2F2\"},\n          },\n          border: {\n            top: {style: \"thin\", color: {argb: \"FFA6A6A6\"}},\n            left: {\n              style: \"thin\",\n              color: {argb: \"FFA6A6A6\"},\n              right: {style: \"thin\", color: {argb: \"FFA6A6A6\"}},\n              bottom: {style: \"thin\", color: {argb: \"FFA6A6A6\"}},\n            },\n          },\n        },\n      },\n    ],\n  });\n}\n\n/**\n * Adds data validation to the worksheet based on the provided rows and question data.\n * @param {Workbook} workbook - The workbook object.\n * @param {Worksheet} worksheet - The worksheet object.\n * @param {Array} rows - The rows array containing the data.\n * @param {Array} qs - The question data array.\n */\nfunction addDataValidation(workbook, worksheet, rows, qs) {\n  // 2D array. Each list i a list of options.\n  let rowsOptionsSplit = rows[2].map((x) => x.value.split(\"\\n\"));\n\n  // Create hidden sheet for mapping data validation values.\n  let answersSheet = workbook.addWorksheet(\"Options\");\n  for (let i = 0; i < rowsOptionsSplit.length; i++) {\n    let col = answersSheet.getColumn(i + 1);\n    col.values = rowsOptionsSplit[i];\n  }\n\n  // Iterate over every row from 4-99\n  // Add the data validation to each cell using the values from the hidden sheet.\n  for (let rowIndex = 4; rowIndex < 100; rowIndex++) {\n    let row = worksheet.getRow(rowIndex);\n\n    // Start at 1 as 1st col is headers.\n    for (let i = 1; i < rowsOptionsSplit.length; i++) {\n      let curQ = qs[i];\n      let optionsSplit = rowsOptionsSplit[i];\n      let qType = curQ.type;\n      let qInputType = curQ.inputType;\n      let numRows = optionsSplit.length;\n\n      let column = numberToLetters(i);\n\n      switch (qType) {\n        case qTypes.dropdown:\n        case qTypes.radiogroup:\n          addSingleOptionValidation(row, column, numRows, i);\n          break;\n        default:\n        //pass\n      }\n\n      switch (qInputType) {\n        case qTypes.date:\n          addDateValidation(row, column, rowIndex, i);\n          break;\n        case qTypes.number:\n          addNumberValidation(row, i);\n          break;\n        default:\n        //pass\n      }\n\n      const regex = /B-Q13./;\n      if (regex.test(curQ.name)) {\n        setDefaultValue(row, 0, i)\n      }\n    }\n  }\n}\n\n/**\n * Sets the default value for a given row and column index.\n * @param {Row} row - The row object.\n * @param {any} value - The default value to set.\n * @param {number} colIndex - The column index.\n */\nfunction setDefaultValue(row,  value, colIndex) {\n  row.getCell(colIndex + 1).value = value;\n}\n\n/**\n * Adds single option validation to a specific cell in a row.\n * @param {Object} row - The row object.\n * @param {string} column - The column letter.\n * @param {number} numRows - The number of rows in the options range.\n * @param {number} colIndex - The column index.\n */\nfunction addSingleOptionValidation(row, column, numRows, colIndex) {\n  let formula = `Options!$${column}$1:${column}$${numRows}`; // eg Options!$B$1:$B$15\n\n  // Need plus 1 getCell is 1-based.\n  row.getCell(colIndex + 1).dataValidation = {\n    type: \"list\",\n    allowBlank: true,\n    showErrorMessage: true,\n    formulae: [`${formula}`],\n  };\n}\n\n/**\n * Adds number validation to a specific cell in a row.\n * @param {Row} row - The row containing the cell.\n * @param {number} colIndex - The index of the cell in the row.\n */\nfunction addNumberValidation(row, colIndex) {\n  row.getCell(colIndex + 1).dataValidation = {\n    type: \"whole\",\n    operator: \"greaterThanOrEqual\",\n    showErrorMessage: true,\n    formulae: [0],\n    errorStyle: \"error\",\n    errorTitle: \"Whole number\",\n    error: \"Please provide a whole number that is greater than or equal to 0.\",\n  };\n}\n\n/**\n * Adds date validation to a specific cell in a row.\n * @param {Object} row - The row object.\n * @param {Object} column - The column object.\n * @param {number} rowIndex - The index of the row.\n * @param {number} colIndex - The index of the column.\n */\nfunction addDateValidation(row, column, rowIndex, colIndex) {\n  let formula = `NOT(ISERROR(DATE(DAY(${column}${rowIndex}),MONTH(${column}${rowIndex}),YEAR(${column}${rowIndex}))))`;\n\n  // Need plus 1 getCell is 1-based.\n  row.getCell(colIndex + 1).dataValidation = {\n    type: \"custom\",\n    allowBlank: true,\n    showErrorMessage: true,\n    formulae: [`${formula}`],\n    errorStyle: \"error\",\n    errorTitle: \"Valid date\",\n    error: \"Please provide a valid date in the format DD/MM/YYYY.\",\n  };\n}\n\n/**\n * Converts a number to its corresponding letters representation.\n * For example, 1 is converted to \"A\", 2 to \"B\", 26 to \"Z\", 27 to \"AA\", and so on.\n * https://stackoverflow.com/questions/8240637/convert-numbers-to-letters-beyond-the-26-character-alphabet\n *\n * @param {number} num - The number to convert.\n * @returns {string} The letters representation of the number.\n */\nfunction numberToLetters(num) {\n  let letters = \"\";\n  while (num >= 0) {\n    letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"[num % 26] + letters;\n    num = Math.floor(num / 26) - 1;\n  }\n  return letters;\n}\n\n// To do come back and try and fix this\nfunction addMultiOptionValidation(row, column, numRows, rowIndex, colIndex) {\n  // If\n  // The number of unique rows when concatenating:\n  //    1) The list of values provided as an answer, split but ', '.\n  //    2) The list of possible answers\n  // is greater than the number of possible answers\n  let formula = `ROWS(UNIQUE(LET(a, FILTERXML(\"<x><y>\"&SUBSTITUTE($${column}$${rowIndex}, \", \",\"</y><y>\")&\"</y></x>\",\"//y\"),b, Options!$${column}$1:${column}$${numRows},s, SEQUENCE(ROWS(a) + ROWS(b)),IF(s > ROWS(a),INDEX(b, s - ROWS(a)),INDEX(a, s))))) = ${numRows}`;\n\n  // Need plus 1 getCell is 1-based.\n  row.getCell(colIndex + 1).dataValidation = {\n    type: \"custom\",\n    allowBlank: true,\n    showErrorMessage: true,\n    formulae: [`${formula}`],\n  };\n}\n\n/*\n=\n\nIF(\nROWS(UNIQUE(LET(\n    a, FILTERXML(\"<x><y>\"&SUBSTITUTE(T2, \", \",\"</y><y>\")&\"</y></x>\",\"//y\"),\n    b, FILTERXML(\"<x><y>\"&SUBSTITUTE(A1, CHAR(10),\"</y><y>\")&\"</y></x>\",\"//y\"),\n    s, SEQUENCE(ROWS(a) + ROWS(b)),\n    IF(s > ROWS(a),\n        INDEX(b, s - ROWS(a)),\n        INDEX(a, s)\n    ))))\n> ROWS(FILTERXML(\"<x><y>\"&SUBSTITUTE(A1, CHAR(10),\"</y><y>\")&\"</y></x>\",\"//y\")),\n\nFALSE,\nTRUE)\n\n\n*/\n","import fileDownload from \"file-saver\";\nimport {isNotEmpty} from \"../common/helperFunctions\";\nimport ContentDisposition from \"content-disposition\";\n\nexport default {\n  methods: {\n  async downloadTemplate(link) {\n      if (isNotEmpty(link)) {\n        try{\n          let response = await this.$http.get(link, {responseType: \"blob\"});       \n            return fileDownload(           \n              response.data,\n              ContentDisposition.parse(response.headers[\"content-disposition\"])\n                .parameters.filename.replace(\n                  /[^a-z0-9\\-_\\s]/gi,\n                  \"\",\n                ),\n            ); \n        }\n        catch(ex){\n          return false;\n        }               \n      }\n    },\n  },\n};\n","<template>\n  <div>\n    <div class=\"entity-warning red survey-link-container\">\n      <div class=\"qr-details-container\">\n        <div\n          class=\"qr-container\"\n          v-if=\"!isArchived\"\n        >\n          <qrcode-vue\n            class=\"qr-code\"\n            :value=\"`${baseUrl}/survey/${surveyDetails.quickCode}`\"\n            level=\"M\"\n          ></qrcode-vue>\n        </div>\n\n        <div class=\"details-container\">\n          <div v-if=\"!isArchived\">\n            <p class=\"info-caption\">\n              <span class=\"info-header\">Survey Link: </span>\n            </p>\n            <a\n              target=\"_blank\"\n              :class=\"surveyDetails.isActive ? `` : `disable-link`\"\n              :href=\"surveyUrl\"\n              >{{ surveyUrl }}</a\n            >\n          </div>\n          <div>\n            <p\n              class=\"info-caption\"\n              id=\"exportDiv\"\n              tabindex=\"0\"\n              @click=\"downloadSurveyResponseExport\"\n              @keydown.enter=\"downloadSurveyResponseExport\"\n            >\n              <i class=\"fas fa-external-link-alt\"></i>\n              <span class=\"info-header\"> Number of responses: </span\n              >{{ surveyDetails.numberOfResponses }}\n            </p>\n          </div>\n          <div class=\"btn-container left-side-actions-container\">\n            <dx-button\n              v-if=\"surveyDetails.schema\"\n              class=\"btn-secondary\"\n              type=\"default\"\n              styling-mode=\"contained\"\n              :on-click=\"downloadQrCode\"\n              ><i class=\"fas fa-file-download\" />Download QR code</dx-button\n            >\n            <dx-button\n              :disabled=\"!isSurveyActive || isInUnattendedMode\"\n              class=\"btn-secondary unattended-mode-btn\"\n              :on-click=\"onStartUnattendedModeClicked\"\n              ><i class=\"fas fa-eye-slash\" />Start unattended mode</dx-button\n            >\n          </div>\n        </div>\n      </div>\n      <div\n        class=\"btn-container\"\n        v-if=\"!isArchived\"\n      >\n        <dx-button\n          v-if=\"surveyDetails.schema\"\n          class=\"btn-secondary\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"downloadOfflineTemplate\"\n          ><i class=\"fas fa-file-download\" />Download offline\n          template</dx-button\n        >\n\n        <dx-button\n          class=\"btn-secondary\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :disabled=\"!isSurveyActive\"\n          :on-click=\"uploadTemplateClicked\"\n          ><i class=\"fas fa-upload\" />Upload offline template</dx-button\n        >\n      </div>\n    </div>\n\n    <ConfirmPopup\n      :popupVisible=\"unattendedPopupVisible\"\n      titleName=\"Start unattended mode\"\n      :onConfirm=\"startUnattendedModeFunction\"\n      @onPopupClosed=\"unattendedPopupVisible = false\"\n      :confirmMessage=\"`This will start the survey in a mode suitable for unattended use (e.g. on a device in a foyer) to collect multiple responses from your audience members. Continuing will log you out of Illuminate, and redirect to this survey. Unattended mode will will remain active for the duration of your current browser session. You can enter unattended mode for multiple surveys on this device, and can also enter on multiple devices at the same time. If leaving this device unattended, please ensure that Illuminate log-in information is not stored on this device.`\"\n    />\n\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n    <dx-tooltip\n      showEvent=\"dxhoverstart\"\n      hideEvent=\"dxhoverend\"\n      position=\"top\"\n      target=\"#exportDiv\"\n    >\n      <div class=\"tooltip\">\n        Click here to download an export of the survey responses.\n      </div>\n    </dx-tooltip>\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxTooltip} from \"devextreme-vue\";\nimport QrcodeVue from \"qrcode.vue\";\nimport {exportSurveyTemplate} from \"../../utils/export-survey-template\";\nimport downloadTemplate from \"../../mixins/download-template\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\nimport ConfirmPopup from \"@/components/confirm-popup.vue\";\nimport {\n  setUnattendedModeForSurvey,\n  getUnattendedModeStatusForSurvey,\n  resetUnattendedModeForSurvey,\n} from \"@/common/unattendedModeService\";\nimport {ApplicationPaths} from \"@/components/api-authorization/ApiAuthorizationConstants\";\n\nexport default {\n  props: [\"isArchived\"],\n  components: {\n    QrcodeVue,\n    DxButton,\n    DxLoadPanel,\n    DxTooltip,\n    ConfirmPopup,\n  },\n  data() {\n    return {\n      isProcessing: false,\n      unattendedPopupVisible: false,\n      isInUnattendedMode: null,\n    };\n  },\n  mixins: [downloadTemplate],\n  computed: {\n    ...mapState(\"surveys\", [\"surveyDetails\"]),\n    ...mapState(\"events\", [\"eventDetails\"]),\n    ...mapState(\"organisations\", [\"orgDetails\"]),\n    showQuickCode: function () {\n      return isNotEmpty(this.surveyDetails.quickCode);\n    },\n    userAction: function () {\n      return \"update\";\n    },\n    baseUrl: function () {\n      return window.location.origin;\n    },\n    surveyUrl: function () {\n      return `${this.baseUrl}/survey/${this.surveyDetails.quickCode}`;\n    },\n    isSurveyActive: function () {\n      return isNotEmpty(this.surveyDetails.quickCode);\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    async downloadQrCode() {\n      this.isProcessing = true;\n      try {\n        const a = document.createElement(\"a\");\n        a.download = \"qr-code\";\n        a.href = document\n          .getElementsByClassName(\"qr-code\")[0]\n          .getElementsByTagName(\"canvas\")[0]\n          .toDataURL();\n        document.body.append();\n        a.click();\n        a.remove();\n      } catch (err) {\n        this.notifyError(\"Could not download qr code. Please try again\");\n      } finally {\n        this.isProcessing = false;\n      }\n    },\n    onStartUnattendedModeClicked() {\n      this.unattendedPopupVisible = true;\n    },\n    onEndUnattendedModeClicked() {\n      try {\n        resetUnattendedModeForSurvey(this.surveyDetails.quickCode);\n        this.notifySuccess(\n          \"Unattended mode successfully ended for this survey\",\n        );\n        this.isInUnattendedMode = false;\n      } catch {\n        this.notifyError(\"Unable to end unattended mode, please try again.\");\n      }\n    },\n    startUnattendedModeFunction() {\n      // Save survey quickcode\n      setUnattendedModeForSurvey(this.surveyDetails.quickCode);\n      this.isInUnattendedMode = true;\n\n      // open survey link in new tab\n      window.open(this.surveyUrl);\n\n      // logout current window (copied from Logout from toolbar)\n      this.$router.push({path: `${ApplicationPaths.LogOut}`, replace: true});\n    },\n    async downloadOfflineTemplate() {\n      this.isProcessing = true;\n      try {\n        await exportSurveyTemplate(this.surveyDetails);\n      } catch (err) {\n        this.notifyError(\n          \"Could not export offline template. Please try again.\",\n        );\n      } finally {\n        this.isProcessing = false;\n      }\n    },\n    uploadTemplateClicked() {\n      this.$router.push({\n        name: \"survey-data\",\n        params: {surveyId: this.surveyDetails.id},\n      });\n    },\n    async downloadSurveyResponseExport() {\n      this.isProcessing = true;\n      try {\n        await this.downloadTemplate(\n          `surveys/${this.surveyDetails.id}/export-responses`,\n        );\n      } catch (e) {\n        this.notifyError(\"Unable to download survey export.\");\n      } finally {\n        this.isProcessing = false;\n      }\n    },\n  },\n  mounted() {\n    this.isInUnattendedMode = getUnattendedModeStatusForSurvey(\n      this.surveyDetails.quickCode,\n    );\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.button .info-header {\n  color: black;\n}\n\n.info-caption {\n  margin: unset;\n  &:hover {\n    text-decoration: underline;\n    cursor: pointer;\n  }\n}\n\n.btn-container {\n  display: flex;\n  flex-direction: row;\n  gap: 10px;\n}\n\n@media (width < 600px) {\n  .btn-container {\n    flex-direction: column;\n  }\n}\n\n.btn-secondary {\n  background-color: white !important;\n  justify-content: center;\n  margin-bottom: 1px;\n  align-items: center;\n  gap: 7px;\n}\n\n.details-container {\n  display: flex;\n  flex-direction: column;\n  justify-content: flex-start;\n  align-content: flex-start;\n  gap: 10px;\n}\n\n.qr-details-container {\n  display: flex;\n  flex-direction: row;\n  gap: 10px;\n  flex-wrap: wrap;\n}\n\n.disable-link {\n  pointer-events: none;\n}\n\n.left-side-actions-container {\n  justify-content: flex-start;\n}\n\n// needed as for some reason when the buttons changed from start unatt mode to end unatt mode,\n//  the cursor is not a pointer\n.unattended-mode-btn {\n  &:hover {\n    cursor: pointer;\n  }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./published-survey-details-banner.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./published-survey-details-banner.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./published-survey-details-banner.vue?vue&type=template&id=699996cd&scoped=true\"\nimport script from \"./published-survey-details-banner.vue?vue&type=script&lang=js\"\nexport * from \"./published-survey-details-banner.vue?vue&type=script&lang=js\"\nimport style0 from \"./published-survey-details-banner.vue?vue&type=style&index=0&id=699996cd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"699996cd\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"head-container\"},[_c('div',{staticClass:\"head-Sec survey-header\"},[_c('div',{staticClass:\"tab-title-container\"},[_c('div',[_c('h2',[_vm._v(_vm._s(_vm.tabTitle))])])]),_c('div',{staticClass:\"action-section\"},[(_vm.$can(_vm.userAction, _vm.$subjects.survey.subject) && _vm.currTab > 0)?_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"icon\":\"fas fa-caret-left\",\"styling-mode\":\"contained\",\"hint\":\"Previous\",\"on-click\":_vm.clickPrevious}}):_vm._e(),(_vm.$can(_vm.userAction, _vm.$subjects.survey.subject) && _vm.currTab < 2)?_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"icon\":\"fas fa-caret-right\",\"styling-mode\":\"contained\",\"hint\":\"Next\",\"on-click\":_vm.clickNext}}):_vm._e()],1)]),_c('div',{staticClass:\"dv-Subheader\"},[_c('div',{staticClass:\"h3-Subheader\"},[_vm._v(_vm._s(_vm.tabSubtitle))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"head-container\">\n    <div class=\"head-Sec survey-header\">\n      <div class=\"tab-title-container\">\n        <div>\n          <h2>{{ tabTitle }}</h2>\n        </div>\n      </div>\n\n      <div class=\"action-section\">\n        <dx-button\n          class=\"btn-secondary\"\n          v-if=\"$can(userAction, $subjects.survey.subject) && currTab > 0\"\n          icon=\"fas fa-caret-left\"\n          styling-mode=\"contained\"\n          hint=\"Previous\"\n          :on-click=\"clickPrevious\"\n        />\n        <dx-button\n          class=\"btn-secondary\"\n          v-if=\"$can(userAction, $subjects.survey.subject) && currTab < 2\"\n          icon=\"fas fa-caret-right\"\n          styling-mode=\"contained\"\n          hint=\"Next\"\n          :on-click=\"clickNext\"\n        />\n      </div>\n    </div>\n\n    <div class=\"dv-Subheader\">\n      <div class=\"h3-Subheader\">{{ tabSubtitle }}</div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {DxButton} from \"devextreme-vue/button\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\n\nexport default {\n  props: [\"currTab\", \"tabTitle\", \"isDraft\", \"tabSubtitle\"],\n  components: {\n    DxButton,\n  },\n  data() {\n    return {};\n  },\n  computed: {\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    parentEventId: function () {\n      return this.$route.query.eventId;\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n  },\n  methods: {\n    clickPrevious() {\n      this.$emit(\"onPreviousClicked\");\n    },\n    clickNext() {\n      this.$emit(\"onNextClicked\");\n    },\n  },\n  mounted() {},\n  beforeDestroy() {},\n};\n</script>\n<style lang=\"scss\" scoped>\n.row {\n  margin: unset;\n  justify-content: space-between;\n}\n\n.page-subtitle-container {\n  max-width: 700px;\n}\n\n.head-Sec {\n  display: flex;\n  align-items: center;\n  width: 100%;\n  justify-content: space-between;\n\n  .action-section {\n    display: flex;\n    float: right;\n  }\n  h1,\n  p {\n    margin: 0;\n    margin-bottom: 4px;\n  }\n}\n\n.dv-Subheader {\n  width: 90%;\n  margin-top: 1px !important;\n}\n\n.h3-Subheader {\n  margin-top: 1px !important;\n}\n\n.head-container {\n  padding-bottom: 30px;\n}\n\n.tab-title-container {\n  float: left;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-header.vue?vue&type=template&id=4bda8614&scoped=true\"\nimport script from \"./survey-header.vue?vue&type=script&lang=js\"\nexport * from \"./survey-header.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-header.vue?vue&type=style&index=0&id=4bda8614&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4bda8614\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <div class=\"page-header\">\n      <div class=\"title-back-container\">\n        <div class=\"page-back\">\n          <dx-button\n            class=\"btn-back\"\n            icon=\"fas fa-arrow-left\"\n            styling-mode=\"contained\"\n            @click=\"onBackClicked\"\n          >\n          </dx-button>\n        </div>\n        <div class=\"page-title-container\">\n          <div>\n            <p class=\"page-breadcrumb\">\n              {{ surveyDetails.eventName }}\n              > Survey\n              {{\n                surveyDetails && surveyDetails.name\n                  ? ` > ${surveyDetails.name}`\n                  : ``\n              }}\n            </p>\n          </div>\n          <h1 class=\"page-title\">Survey Overview</h1>\n        </div>\n      </div>\n      <div class=\"action-section\">\n        <dx-button\n          class=\"btn-primary fas fa-save\"\n          v-if=\"surveyDetails && canUserEdit && isDraft\"\n          validation-group=\"surveyDetails\"\n          text=\"Save draft\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"onSaveSurveyClicked\"\n        />\n        <dx-button\n          class=\"btn-primary btn-delete fas fa-trash-alt\"\n          v-if=\"\n            surveyDetails &&\n            !surveyDetails.isNew &&\n            canUserEdit &&\n            !surveyHasResponses\n          \"\n          type=\"warning\"\n          text=\"Delete\"\n          styling-mode=\"contained\"\n          :on-click=\"deleteButtonClicked\"\n        />\n        <dx-button\n          class=\"btn-primary btn-publish ml-2\"\n          :class=\"isDraft ? '' : 'fas fa-save'\"\n          v-if=\"canUserEdit && !isArchived\"\n          :text=\"isDraft ? 'Publish' : 'Save changes'\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"showPublishPopup\"\n        />\n        <dx-button\n          class=\"btn-secondary ml-2\"\n          v-if=\"$can(userAction, $subjects.survey.subject) && canUserEdit\"\n          text=\"Cancel\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"onBackClicked\"\n        />\n      </div>\n    </div>\n    <div v-if=\"isArchived\">\n      <p class=\"info-caption entity-warning fail\">\n        <span class=\"info-header\"\n          >This survey has been archived and is now read-only\n        </span>\n      </p>\n    </div>\n    <div v-if=\"showQuickCode && !surveyDetails.isDraft\">\n      <PublishedSurveyDetailsBanner :is-archived=\"isArchived\" />\n    </div>\n\n    <DxTabPanel\n      :data-source=\"tabs\"\n      :selectedIndex.sync=\"currTab\"\n      :selectedItem.sync=\"currItem\"\n      :swipeEnabled=\"false\"\n      aria-labelledby=\"tabpanel-label\"\n    >\n      <template #title=\"{data: tab, index: i}\">\n        <span\n          :id=\"`tab-${tab.id}`\"          \n          >{{ tab.text }}</span\n        >\n      </template>\n\n      <template #survey-details-template=\"{data: tab}\">\n        <div class=\"survey-content\">\n          <SurveyHeader\n            :tab-title=\"tab.title\"\n            :curr-tab=\"currTab\"\n            :isDraft=\"isDraft\"\n            @onPreviousClicked=\"onPreviousClicked\"\n            @onNextClicked=\"onNextClicked\"\n          />\n          <div>\n            <survey-details\n              :ref=\"surveyDetailsRef\"\n              v-if=\"currTab === 0\"\n              :is-archived=\"isArchived\"\n            />\n          </div>\n        </div>\n      </template>\n\n      <template #survey-optional-questions-template=\"{data: tab}\">\n        <div class=\"survey-content\">\n          <SurveyHeader\n            :tab-title=\"tab.title\"\n            :tab-subtitle=\"tab.subtitle\"\n            :curr-tab=\"currTab\"\n            :isDraft=\"isDraft\"\n            @onPreviousClicked=\"onPreviousClicked\"\n            @onNextClicked=\"onNextClicked\"\n          />\n          <div>\n            <survey-optional-questions\n              v-if=\"currTab === 1\"\n              :is-archived=\"isArchived\"\n            />\n          </div>\n        </div>\n      </template>\n\n      <template #survey-summary-template=\"{data: tab}\">\n        <div class=\"survey-content\">\n          <SurveyHeader\n            :tab-title=\"tab.title\"\n            :curr-tab=\"currTab\"\n            :isDraft=\"isDraft\"\n            @onPreviousClicked=\"onPreviousClicked\"\n            @onNextClicked=\"onNextClicked\"\n          />\n          <div>\n            <survey-summary v-if=\"currTab === 2\" />\n          </div>\n        </div>\n      </template>\n    </DxTabPanel>\n\n    <ConfirmDeletePopup\n      :entityName=\"\n        surveyDetails && surveyDetails.name ? surveyDetails.name : ''\n      \"\n      titleName=\"Survey\"\n      :onDelete=\"deleteSurveyFunction\"\n      :popupVisible=\"popupVisible\"\n      @onPopupClosed=\"deletePopUpClosed\"\n    />\n\n    <ConfirmPopup\n      :popupVisible=\"publishPopupVisible\"\n      :titleName=\"`${isDraft ? 'publishing' : 'saving'} survey`\"\n      :confirmMessage=\"`Please confirm that you would like to ${\n        isDraft ? 'publish' : 'save'\n      } ${\n        surveyDetails !== null && surveyDetails.name !== null\n          ? surveyDetails.name\n          : ''\n      }`\"\n      :onConfirm=\"onCreateClicked\"\n      @onPopupClosed=\"closePublishPopup\"\n    />\n\n    <dx-load-panel\n      :visible=\"showLoader\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport DxTabPanel from \"devextreme-vue/tab-panel\";\nimport SurveyDetails from \"../components/surveys/survey-details.vue\";\nimport SurveyOptionalQuestions from \"../components/surveys/survey-optional-questions.vue\";\nimport SurveySummary from \"../components/surveys/survey-summary.vue\";\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {isNotEmpty, objectEquals} from \"../common/helperFunctions\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport ConfirmDeletePopup from \"../components/confirm-delete-popup.vue\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport PublishedSurveyDetailsBanner from \"../components/surveys/published-survey-details-banner.vue\";\nimport SurveyHeader from \"../components/surveys/survey-header.vue\";\nimport ConfirmPopup from \"../components/confirm-popup.vue\";\nimport {eventOwnerRelationshipType} from \"@/common/constants\";\n\nexport default {\n  components: {\n    DxTabPanel,\n    SurveyDetails,\n    SurveyOptionalQuestions,\n    DxButton,\n    ConfirmDeletePopup,\n    SurveySummary,\n    DxLoadPanel,\n    PublishedSurveyDetailsBanner,\n    SurveyHeader,\n    ConfirmPopup,\n  },\n  data() {\n    return {\n      popupVisible: false,\n      publishPopupVisible: false,\n      isLoading: false,\n      currTab: 0,\n      currItem: null,\n      initialSurveyDetailsObj: null,\n      surveyDetailsRef: \"surveyDetailsRef\",\n    };\n  },\n  computed: {\n    ...mapState(\"surveys\", [\"surveyDetails\"]),\n    ...mapState(\"events\", [\"eventDetails\"]),\n\n    ...mapGetters(\"surveys\", {isSurveyProcessing: \"isProcessing\"}),\n    ...mapGetters(\"events\", {isEventProcessing: \"isProcessing\"}),\n    ...mapGetters(\"organisations\", {isOrgProcessing: \"isProcessing\"}),\n    isDraft: function () {\n      return this.surveyDetails.isDraft !== false;\n    },\n    parentEventId: function () {\n      return this.$route.query.eventId;\n    },\n    baseUrl: function () {\n      return window.location.origin;\n    },\n    surveyHasResponses: function () {\n      return this.surveyDetails.numberOfResponses > 0;\n    },\n    showQuickCode: function () {\n      return isNotEmpty(this.surveyDetails.quickCode);\n    },\n    isArchived: function () {\n      return (\n        !isNotEmpty(this.surveyDetails.quickCode) &&\n        this.surveyDetails.isDraft === false\n      );\n    },\n    isEventOwner() {\n      return (\n        this.surveyDetails.actingAsRelationshipTypeValue ===\n        eventOwnerRelationshipType.name\n      );\n    },\n    canUserEdit() {\n      return (\n        this.$can(this.userAction, this.$subjects.survey.subject) &&\n        this.isEventOwner\n      );\n    },\n    showLoader: function () {\n      return (\n        this.isSurveyProcessing ||\n        this.isEventProcessing ||\n        this.isOrgProcessing ||\n        this.isLoading\n      );\n    },\n    tabs: function () {\n      return [\n        {\n          id: 0,\n          text: \"Details\",\n          title: \"Step 1. Survey Details\",\n          template: \"survey-details-template\",\n        },\n        {\n          id: 1,\n          text: \"Optional Questions\",\n          title: \"Step 2. Optional Questions\",\n          subtitle:\n            \"In addition to the Arts Council England mandated questions, you can include some additional questions within your survey to learn more about your audiences. To include any of the additional questions below within your survey, please select the checkbox of the respective question to include it within your final survey.\",\n          template: \"survey-optional-questions-template\",\n        },\n        {\n          id: 2,\n          text: \"Summary\",\n          title: \"Step 3. Survey Summary\",\n          template: \"survey-summary-template\",\n        },\n      ];\n    },\n    userAction: function () {\n      return \"update\";\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"surveys\", {\n      createSurvey: \"create\",\n      updateSurvey: \"update\",\n      deleteSurvey: \"delete\",\n      fetchSurveyDetails: \"fetchSurveyDetails\",\n      clearSurveyDetails: \"clear\",\n    }),\n    ...mapActions(\"events\", {\n      fetchEventDetails: \"fetchEventDetails\",\n      clearEventDetails: \"clear\",\n    }),\n    ...mapActions(\"locations\", {\n      clearLocationDetails: \"clear\",\n    }),\n    ...mapActions(\"organisations\", {\n      clearOrgDetails: \"clear\",\n    }),\n    preventNav(survey) {\n      if (!this.areUnsavedChanges()) return;\n      survey.preventDefault();\n      survey.returnValue = \"\";\n    },\n    async validateSurveyDetails() {\n      return await this.$refs[\n        this.surveyDetailsRef\n      ].$refs.formRef.instance.validate();\n    },\n    deleteButtonClicked() {\n      this.popupVisible = true;\n    },\n    deletePopUpClosed() {\n      this.popupVisible = false;\n    },\n    showPublishPopup() {\n      this.publishPopupVisible = true;\n    },\n    closePublishPopup() {\n      this.publishPopupVisible = false;\n    },\n    async onCreateClicked() {\n      if (this.surveyDetails.createAsOrganisationTemplate) {\n        if (!isNotEmpty(this.surveyDetails.orgSurveyTemplateName)) {\n          this.notifyError(\n            \"Unable to save survey as organisation template name must not be empty.\",\n          );\n          return;\n        }\n        if (!isNotEmpty(this.surveyDetails.orgSurveyTemplateDescription)) {\n          this.notifyError(\n            \"Unable to save survey as organisation template description must not be empty.\",\n          );\n          return;\n        }\n      }\n\n      try {\n        this.surveyDetails.isDraft = false;\n\n        await this.updateSurvey();\n        this.surveyDetails.isNew = false;\n        this.initialSurveyDetailsObj = JSON.parse(\n          JSON.stringify(this.surveyDetails),\n        );\n        this.onBackClicked();\n      } catch (err) {\n        this.notifyError(`Unable to save survey. ${fromResponse(err)}`);\n        this.surveyDetails.isDraft = true;\n        this.closePublishPopup();\n      }\n    },\n    async onNextClicked() {\n      this.currTab++;\n    },\n    onPreviousClicked() {\n      this.currTab--;\n    },\n    createSubSet(v) {\n      const picked = (({\n        activeFrom,\n        activeTo,\n        createAsOrganisationTemplate,\n        createdAt,\n        eventId,\n        id,\n        introduction,\n        isActive,\n        isDraft,\n        isNew,\n        name,\n        numberOfResponses,\n        optionalQuestionTemplateId,\n        optionalQuestions,\n        organisationId,\n        quickCode,\n        schema,\n        schemaReadOnly,\n        surveyTemplateId,\n      }) => ({\n        activeFrom,\n        activeTo,\n        createAsOrganisationTemplate,\n        createdAt,\n        eventId,\n        id,\n        introduction,\n        isActive,\n        isDraft,\n        isNew,\n        name,\n        numberOfResponses,\n        optionalQuestionTemplateId,\n        optionalQuestions,\n        organisationId,\n        quickCode,\n        schema,\n        schemaReadOnly,\n        surveyTemplateId,\n      }))(v);\n      return picked;\n    },\n    areUnsavedChanges() {\n      let a = !objectEquals(\n        this.createSubSet(this.surveyDetails),\n        this.createSubSet(this.initialSurveyDetailsObj),\n      );\n      return a;\n    },\n    onBackClicked() {\n      this.$router.push({\n        name: \"event-details\",\n        params: {\n          id: this.surveyDetails.eventId,\n        },\n        query: {tabIndex: 2},\n      });\n    },\n    async cancel() {\n      if (this.isDraft) {\n        await this.deleteSurvey();\n        this.$router.push({\n          name: \"event-details\",\n          params: {\n            id: this.surveyDetails.eventId,\n          },\n          query: {tabIndex: 2},\n        });\n      }\n    },\n    async deleteSurveyFunction() {\n      try {\n        await this.deleteSurvey();\n\n        this.notifySuccess(`Survey successfully deleted.`);\n        this.initialSurveyDetailsObj = JSON.parse(\n          JSON.stringify(this.surveyDetails),\n        );\n        this.$router.push({\n          name: \"event-details\",\n          params: {\n            id: this.surveyDetails.eventId,\n          },\n          query: {tabIndex: 2},\n        });\n      } catch (err) {\n        this.notifyError(`Unable to delete survey. ${fromResponse(err)}`);\n      }\n    },\n    async onSaveSurveyClicked() {\n      if (this.surveyHasResponses) {\n        this.notifyError(`Unable to edit survey as it already has responses.`);\n        return;\n      }\n      try {\n        await this.updateSurvey();\n        this.surveyDetails.isNew = false;\n        this.notifySuccess(`Survey draft successfully saved.`);\n        this.initialSurveyDetailsObj = JSON.parse(\n          JSON.stringify(this.surveyDetails),\n        );\n      } catch (err) {\n        this.notifyError(`Unable to save draft. ${fromResponse(err)}`);\n      } finally {\n        this.closePublishPopup();\n      }\n    },\n  },\n  beforeMount() {\n    // https://austingil.com/prevent-browser-refresh-url-changes-route-navigation-vue/\n    window.addEventListener(\"beforeunload\", this.preventNav);\n    this.$once(\"hook:beforeDestroy\", () => {\n      window.removeEventListener(\"beforeunload\", this.preventNav);\n    });\n  },\n  mounted() {\n    if (this.isDraft) {\n      this.fetchSurveyDetails(this.$route.params.id).then(() => {\n        this.surveyDetails.createAsOrganisationTemplate = false;\n        if (this.surveyDetails.isNew) {\n          this.surveyDetails.introduction = `We use the data we collect from this survey so that we can understand more about our\naudiences. We also share this data with the Arts Council who use it to make the case to\nGovernment for public investment in creativity and culture. The data we collect\nis non-identifiable i.e. it cannot be traced back to the person completing the survey.\nAnswering these questions is optional. If you'd rather not answer these more personal\nquestions, some can be skipped entirely, and on many others you can select 'Prefer not\nto say'. Thank you.`;\n        }\n        this.initialSurveyDetailsObj = JSON.parse(\n          JSON.stringify(this.surveyDetails),\n        );\n      });\n\n      return;\n    }\n\n    this.surveyDetails.createAsOrganisationTemplate = false;\n  },\n  destroyed() {\n    if (this.surveyDetails.isNew) {\n      this.deleteSurvey().then(() => {\n        this.clearSurveyDetails();\n      });\n    } else {\n      this.clearSurveyDetails();\n    }\n\n    this.clearOrgDetails();\n    this.clearLocationDetails();\n    this.clearEventDetails();\n  },\n  beforeRouteLeave(to, from, next) {\n    if (!this.areUnsavedChanges()) {\n      next();\n      return;\n    }\n\n    const answer = window.confirm(\n      \"Are you sure you would like to leave? You have unsaved changes.\",\n    );\n    if (answer) {\n      next();\n    } else {\n      next(false);\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.page-header {\n  padding-bottom: 15px !important;\n}\n\n.survey-content {\n  padding-top: 15px;\n}\n\n.info-header {\n  color: black;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-create-update-overview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-create-update-overview.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-create-update-overview.vue?vue&type=template&id=b65191a2&scoped=true\"\nimport script from \"./survey-create-update-overview.vue?vue&type=script&lang=js\"\nexport * from \"./survey-create-update-overview.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-create-update-overview.vue?vue&type=style&index=0&id=b65191a2&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"b65191a2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"events-managment-col\"},[_c('div',{staticClass:\"page-header\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Event Management\")]),_c('div',{staticClass:\"action-section\"},[(_vm.$can('create', _vm.$subjects.event.subject))?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddEventClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" Create event\")]):_vm._e(),(_vm.$can('create', _vm.$subjects.event.subject))?_c('dx-button',{staticClass:\"btn-secondary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onUploadEventsClicked}},[_c('i',{staticClass:\"fas fa-upload\"}),_vm._v(\"Bulk Upload\")]):_vm._e()],1)]),_c('div',{staticClass:\"org-lookup-container\"},[_c('dx-lookup',{key:_vm.orgLookupKey,ref:_vm.orgLookupRef,attrs:{\"data-source\":_vm.orgDataSource,\"display-expr\":\"name\",\"value-expr\":\"id\",\"search-enabled\":true,\"search-mode\":\"contains\",\"search-expr\":['name'],\"min-search-length\":2,\"show-data-before-search\":true,\"search-placeholder\":\"Select Organisation...\",\"value\":_vm.selectedOrgId,\"defer-rendering\":true,\"label\":\"Organisation\"},on:{\"update:value\":function($event){_vm.selectedOrgId=$event}}})],1),_c('div',[_c('quarterly-attestations',{ref:_vm.quarterlyAttestationsRef,attrs:{\"organisationId\":_vm.selectedOrgId,\"selectedFilterQuarterNum\":_vm.selectedFilterQuarterNum,\"selectedFilterYear\":_vm.selectedFilterYear},on:{\"boxClicked\":_vm.onQuarterBoxClicked}})],1),(_vm.showEventsSchedule)?_c('div',[_c('events-schedule',{ref:_vm.eventScheduleRef,attrs:{\"organisationId\":_vm.selectedOrgId},on:{\"filterValuesUpdated\":_vm.onEventsScheduleFiltersChanged}})],1):_vm._e(),_c('dx-load-panel',{attrs:{\"visible\":_vm.isLoading,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isLoading=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('DxAccordion',{ref:_vm.attAccordionRef,attrs:{\"data-source\":_vm.attDataSource,\"collapsible\":_vm.canCollapse,\"multiple\":false,\"defer-rendering\":true},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',{staticClass:\"att-header-container\"},[_c('h1',[_vm._v(\"Activity Confirmation\")])])]},proxy:true},{key:\"item\",fn:function({data}){return [_c('div',{staticClass:\"attestations-wrapper\"},[_c('span',[_vm._v(\"\\n            As part of your funding agreement with Arts Council England, it is\\n            required that you maintain an accurate reflection of your Event\\n            Schedule within Illuminate. On a quarterly basis, you are required\\n            to confirm that your Event Schedule for the previous quarter has\\n            been finalised - which includes ensuring that all events are\\n            created within Illuminate and that the \\\"Details\\\" tab is populated\\n            for each event. Confirmation should be submitted as soon as\\n            possible and no later than the end of the following quarter. For\\n            example, the Event Schedule for July - September (Q2) must be\\n            populated within Illuminate no later than the 31st December (end\\n            of Q3).\\n          \")]),(_vm.currentAttestation)?_c('div',{staticClass:\"mobile-attestation-view\",attrs:{\"ismo\":\"\"}},[_c('div',{staticClass:\"carousel-button mobile-side-button\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.moveMobileCarousel(-1)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.moveMobileCarousel(-1)}}},[_c('i',{staticClass:\"dx-icon fas fa-caret-left\"})]),_c('QuarterlyAttestationBox',{attrs:{\"quarter-num\":_vm.currentAttestation.quarterNum,\"year\":_vm.currentAttestation.year,\"is-confirmed\":_vm.currentAttestation.isConfirmed,\"is-current-quarter\":_vm.currentAttestation.isCurrentQuarter,\"is-in-future\":_vm.currentAttestation.isInFuture,\"show-shadow\":true,\"num-events-event-owner\":_vm.currentAttestation.numEventOwnerEvents,\"num-events-partner\":_vm.currentAttestation.numPartnerEvents},on:{\"boxClicked\":_vm.onQuarterBoxClicked,\"confirmClicked\":_vm.onQuarterConfirmButtonClicked}}),_c('div',{staticClass:\"carousel-button mobile-side-button\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.moveMobileCarousel(1)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.moveMobileCarousel(1)}}},[_c('i',{staticClass:\"dx-icon fas fa-caret-right\"})]),_c('div',{staticClass:\"mobile-buttons\"},[_c('div',{staticClass:\"carousel-button\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.moveMobileCarousel(-1)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.moveMobileCarousel(-1)}}},[_c('i',{staticClass:\"dx-icon fas fa-caret-left\"})]),_c('div',{staticClass:\"carousel-button\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.moveMobileCarousel(1)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.moveMobileCarousel(1)}}},[_c('i',{staticClass:\"dx-icon fas fa-caret-right\"})])])],1):_vm._e(),_c('div',{staticClass:\"carousel\",on:{\"wheel\":function($event){return _vm.onCarouselWheel($event)}}},[_c('div',{staticClass:\"carousel-button\",on:{\"click\":function($event){return _vm.moveCarouselLeft(4)}}},[_c('i',{staticClass:\"dx-icon fas fa-caret-left\"})]),_c('div',{staticClass:\"carousel-window\"},[_c('div',{staticClass:\"carousel-content\"},_vm._l((data),function(q,index){return _c('div',{key:index,staticClass:\"carousel-item\"},[_c('QuarterlyAttestationBox',{attrs:{\"quarter-num\":q.quarterNum,\"year\":q.year,\"is-confirmed\":q.isConfirmed,\"is-current-quarter\":q.isCurrentQuarter,\"is-in-future\":q.isInFuture,\"show-shadow\":_vm.getIsSelectedQuarter(q.quarterNum, q.year),\"num-events-event-owner\":q.numEventOwnerEvents,\"num-events-partner\":q.numPartnerEvents},on:{\"boxClicked\":_vm.onQuarterBoxClicked,\"confirmClicked\":_vm.onQuarterConfirmButtonClicked,\"boxFocused\":_vm.onQuarterBoxFocused}})],1)}),0)]),_c('div',{staticClass:\"carousel-button\",on:{\"click\":function($event){return _vm.moveCarouselRight(4)}}},[_c('i',{staticClass:\"dx-icon fas fa-caret-right\"})])])])]}}])})],1),_c('ConfirmAttestationPopup',{attrs:{\"quarterNum\":_vm.confirmQuarterNum,\"year\":_vm.confirmQuarterYear,\"onConfirm\":_vm.confirmAttestation,\"popupVisible\":_vm.popupVisible},on:{\"onPopupClosed\":function($event){_vm.popupVisible = false}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('dx-popup',{attrs:{\"visible\":_vm.popupVisible,\"drag-enabled\":true,\"hide-on-outside-click\":true,\"show-title\":true,\"max-width\":700,\"height\":\"auto\",\"title\":`Confirm Activity`,\"onHiding\":_vm.closePopup},on:{\"update:visible\":function($event){_vm.popupVisible=$event}}},[_c('div',{staticClass:\"popup-wrapper\"},[(!_vm.showFYConfirmationVersion)?_c('div',{staticClass:\"confirm-message-container\"},[_c('p',[_vm._v(\"\\n          By selecting 'Confirm' you are confirming that your Event Schedule\\n          for Quarter \"+_vm._s(_vm.quarterNum)+\" has been finalised - which includes\\n          ensuring that all Events are created within Illuminate and that the\\n          'Details' tab is populated for each event. If a new event is\\n          created, or the 'Details' tab for an existing event within this\\n          quarter is updated, then you will be required to reconfirm.\\n        \")])]):_c('div',{staticClass:\"confirm-message-container\"},[_c('p',[_vm._v(\"\\n          By selecting 'Confirm' you are confirming that your organisation's\\n          Illuminate data has been finalised for all quarters in\\n          \"+_vm._s(_vm.year)+\" - which includes:\\n        \")]),_c('div',{staticClass:\"confirm-checkboxes-wrapper\"},_vm._l((_vm.checkBoxes),function(item){return _c('div',{key:item.textSpan,staticClass:\"confirm-checkbox-container\"},[_c('DxCheckBox',{attrs:{\"value\":item.value},on:{\"update:value\":function($event){return _vm.$set(item, \"value\", $event)}}}),_c('span',{domProps:{\"innerHTML\":_vm._s(item.textSpan)}})],1)}),0)]),_c('div',{staticClass:\"actions-container\"},[_c('dx-button',{staticClass:\"btn-primary confirm-button\",attrs:{\"text\":\"Confirm\",\"type\":\"default\",\"disabled\":!_vm.isConfirmEnabled,\"styling-mode\":\"contained\",\"on-click\":_vm.onConfirm}}),_c('dx-button',{staticClass:\"btn-primary btn-secondary\",attrs:{\"text\":\"Cancel\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.closePopup}})],1)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <dx-popup\n      :visible.sync=\"popupVisible\"\n      :drag-enabled=\"true\"\n      :hide-on-outside-click=\"true\"\n      :show-title=\"true\"\n      :max-width=\"700\"\n      height=\"auto\"\n      :title=\"`Confirm Activity`\"\n      :onHiding=\"closePopup\"\n    >\n      <div class=\"popup-wrapper\">\n        <div\n          class=\"confirm-message-container\"\n          v-if=\"!showFYConfirmationVersion\"\n        >\n          <p>\n            By selecting 'Confirm' you are confirming that your Event Schedule\n            for Quarter {{ quarterNum }} has been finalised - which includes\n            ensuring that all Events are created within Illuminate and that the\n            'Details' tab is populated for each event. If a new event is\n            created, or the 'Details' tab for an existing event within this\n            quarter is updated, then you will be required to reconfirm.\n          </p>\n        </div>\n\n        <div\n          class=\"confirm-message-container\"\n          v-else\n        >\n          <p>\n            By selecting 'Confirm' you are confirming that your organisation's\n            Illuminate data has been finalised for all quarters in\n            {{ year }} - which includes:\n          </p>\n\n          <div class=\"confirm-checkboxes-wrapper\">\n            <div class=\"confirm-checkbox-container\"\n                v-for=\"(item) in checkBoxes\"\n                :key=\"item.textSpan\"\n              >\n              <DxCheckBox\n                  :value.sync=\"item.value\"\n                />\n              <span v-html=\"item.textSpan\" />\n\n              </div>\n          </div>\n        </div>\n\n        <div class=\"actions-container\">\n          <dx-button\n            text=\"Confirm\"\n            type=\"default\"\n            :disabled=\"!isConfirmEnabled\"\n            class=\"btn-primary confirm-button\"\n            styling-mode=\"contained\"\n            :on-click=\"onConfirm\"\n          ></dx-button>\n          <dx-button\n            text=\"Cancel\"\n            type=\"default\"\n            class=\"btn-primary btn-secondary\"\n            styling-mode=\"contained\"\n            :on-click=\"closePopup\"\n          ></dx-button>\n        </div>\n      </div>\n    </dx-popup>\n  </div>\n</template>\n\n<script>\nimport {DxButton} from \"devextreme-vue/button\";\nimport {DxPopup} from \"devextreme-vue/popup\";\nimport {DxCheckBox} from \"devextreme-vue/check-box\";\n\nexport default {\n  components: {\n    DxButton,\n    DxPopup,\n    DxCheckBox,\n  },\n  data() {\n    return {\n      checkBoxes: [\n        {\n          value: false,\n          textSpan: `<b>Event Schedule</b> populated - ensuring the 'Details' &\n                'Tickets & Attendance' tabs for each event is populated and\n                accurate`\n        },\n        {\n          value: false,\n          textSpan: `<b>Ticketing data</b> uploaded into Illuminate for\n                all events populated within the Event Schedule (where possible)`\n        },\n        {\n          value: false,\n          textSpan: `<b>Minimum number of survey responses achieved</b> - if this has\n                not been met, your Relationship Manager has been informed`\n        }\n      ]\n    };\n  },\n  props: [\n    \"popupVisible\",\n    \"quarterNum\",\n    \"onConfirm\",\n    \"year\",\n  ],\n  computed: {\n    isConfirmEnabled: function () { \n      // If showing full year confirmation version then only enable if all boxes checked\n      // otherwise leave enabled\n\n      return this.showFYConfirmationVersion ? this.allBoxesChecked : true\n    },\n    allBoxesChecked: function () {\n      return this.checkBoxes.every(x => x.value === true);\n    },\n    showFYConfirmationVersion () {\n      return this.quarterNum === 4;\n    }\n  },\n  methods: {\n    closePopup() {\n      this.resetCheckBoxValues();\n      this.$emit(\"onPopupClosed\");\n    },\n    resetCheckBoxValues () {\n      this.checkBoxes.forEach(x => x.value = false);\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n\n.confirm-checkbox-container {\n  display: flex; \n  flex-wrap: nowrap; \n  flex-direction: row;\n  gap: 10px;\n  padding-bottom: 10px;\n}\n\n.confirm-checkboxes-wrapper {\n  display: flex; \n  flex-wrap: nowrap; \n  flex-direction: column;\n  gap: 10px;\n}\n\n.dx-toolbar-label {\n  .dx-toolbar-item-content {\n    div {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      font-size: $font-size-heading !important;\n      letter-spacing: 0 !important;\n    }\n  }\n}\n\n.popup-wrapper {\n  // janky fix for improving the look of the popup box\n  // trying to edit .dx-popup-content directly wasn't working for some reason\n  margin-top: -10px;\n  margin-bottom: -2px;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-attestation-popup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-attestation-popup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./confirm-attestation-popup.vue?vue&type=template&id=6b311b7e&scoped=true\"\nimport script from \"./confirm-attestation-popup.vue?vue&type=script&lang=js\"\nexport * from \"./confirm-attestation-popup.vue?vue&type=script&lang=js\"\nimport style0 from \"./confirm-attestation-popup.vue?vue&type=style&index=0&id=6b311b7e&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6b311b7e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"quarter-container\",class:_vm.boxCssClass,attrs:{\"role\":\"button\"},on:{\"click\":_vm.onBoxClicked}},[_c('div',{staticClass:\"calendar-section-container\"},[_c('i',{staticClass:\"fas fa-calendar-alt att-calendar-icon\"}),_c('div',[_c('div',[_vm._v(\"Quarter \"+_vm._s(_vm.quarterNum))]),_c('div',{staticClass:\"att-events-label\"},[_vm._v(\"\\n          \"+_vm._s(_vm.numEventsEventOwner)+\" as Event Owner\\n        \")]),_c('div',{staticClass:\"att-events-label\"},[_vm._v(_vm._s(_vm.numEventsPartner)+\" as Partner\")])])]),_c('div',{staticClass:\"confirm-section-container\"},[_c('div',{staticClass:\"att-year-label\"},[_vm._v(\"\\n        \"+_vm._s(_vm.year)+\"\\n      \")]),(_vm.showConfirmButton)?_c('dx-button',{ref:\"confirmButtonRef\",staticClass:\"btn-primary confirm-button\",attrs:{\"text\":\"Confirm\",\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onConfirmClicked,\"focus\":_vm.onFocus}}):_vm._e(),(_vm.isConfirmed)?_c('i',{staticClass:\"confirm-tick-icon fas fa-check\"}):_vm._e()],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <div\n      class=\"quarter-container\"\n      :class=\"boxCssClass\"\n      role=\"button\"\n      @click=\"onBoxClicked\"\n    >\n      <div class=\"calendar-section-container\">\n        <i class=\"fas fa-calendar-alt att-calendar-icon\" />\n\n        <div>\n          <div>Quarter {{ quarterNum }}</div>\n          <div class=\"att-events-label\">\n            {{ numEventsEventOwner }} as Event Owner\n          </div>\n          <div class=\"att-events-label\">{{ numEventsPartner }} as Partner</div>\n        </div>\n      </div>\n\n      <div class=\"confirm-section-container\">\n        <div class=\"att-year-label\">\n          {{ year }}\n        </div>\n\n        <dx-button\n          ref=\"confirmButtonRef\"\n          class=\"btn-primary confirm-button\"\n          v-if=\"showConfirmButton\"\n          text=\"Confirm\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          @click=\"onConfirmClicked\"\n          @focus=\"onFocus\"\n        />\n        <i\n          v-if=\"isConfirmed\"\n          class=\"confirm-tick-icon fas fa-check\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {mapActions} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\n\nexport default {\n  components: {\n    DxButton,\n  },\n  props: {\n    quarterNum: Number,\n    year: String,\n    isConfirmed: Boolean,\n    isCurrentQuarter: Boolean,\n    showShadow: Boolean,\n    isInFuture: Boolean,\n    numEventsEventOwner: Number,\n    numEventsPartner: Number,\n  },\n  data() {\n    return {};\n  },\n  computed: {\n    showConfirmButton: function () {\n      // show if user can update events AND\n      //         event can be confirmed (determined by backend)\n      if (!this.$can(\"update\", this.$subjects.event.subject)) {\n        return false;\n      }\n\n      return this.canBeConfirmed;\n    },\n    canBeConfirmed: function () {\n      // can be confirmed if not in future AND\n      //                     not confirmed\n      return !this.isInFuture && !this.isConfirmed;\n    },\n    boxCssClass: function () {\n      // each func. returns class or empty string\n      return `${this.getBoxCssClass()} ${this.getShadeCssClass()}`;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    onBoxClicked() {\n      // Emits to QuarterlyAttestations, which emits to Events-Management to change the filters\n      // If this gets more complex it's worth created a QuarterlyAttestation vuex store\n      this.$emit(\"boxClicked\", this.quarterNum, this.year);\n    },\n    onConfirmClicked() {\n      // Emits to QuarterlyAttestations, which then shows the confirmation box\n      this.$emit(\"confirmClicked\", this.quarterNum, this.year);\n    },\n    onFocus() {\n      this.$emit(\"boxFocused\", this.quarterNum, this.year);\n    },\n    getBoxCssClass() {\n      if (this.isCurrentQuarter) {\n        return \"current\";\n      }\n\n      if (this.isInFuture) {\n        return \"future\";\n      }\n\n      return ``;\n    },\n    getShadeCssClass() {\n      return this.showShadow === true ? `shade` : ``;\n    },\n  },\n  mounted() {\n    // Attach focus event listeners to the confirm button element\n    if (this.showConfirmButton && !this.isConfirmed) {\n      this.$refs.confirmButtonRef.$el.addEventListener(\"focus\", this.onFocus);\n    }\n  },\n  beforeDestroy() {\n    // Clean up event listeners\n    if (this.showConfirmButton && !this.isConfirmed) {\n      this.$refs.confirmButtonRef.$el.removeEventListener(\n        \"focus\",\n        this.onFocus,\n      );\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"@/themes/custom-variables.scss\";\n\n.quarter-container {\n  background-color: $grey2; // grey is default\n  cursor: pointer;\n  border-radius: 4px;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-around;\n  padding: 10px 10px 10px 10px;\n  min-height: 100px;\n  gap: 5px;\n  margin: 5px;\n  color: #fff;\n\n  &:focus,\n  &:active {\n    box-shadow: 0px 0px 0px 4px rgba(61, 40, 124, 0.31) !important;\n    outline: none;\n  }\n}\n\n@media (max-width: 300px) {\n  .quarter-container {\n    flex-direction: column;\n  }\n}\n\n.calendar-section-container {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: space-between;\n  gap: 10px;\n}\n\n.confirm-section-container {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-end;\n  justify-content: space-evenly;\n}\n\n.att-year-label {\n  font: $base-font-family-regular;\n  font-size: $font-size-component;\n  align-self: right;\n}\n\n.att-calendar-icon {\n  font-size: 25px;\n}\n\n.att-events-label {\n  font-style: italic !important;\n  white-space: nowrap;\n}\n\n.current {\n  background-color: $brand-primary;\n}\n\n.future {\n  background-color: transparentize($brand-primary, 0.3);\n}\n\n.shade {\n  box-shadow: 5px 5px transparentize($brand-primary, 0.05);\n  border-width: 1px;\n  border-style: solid !important;\n  border-color: white !important;\n}\n\n.confirm-button {\n  color: white !important;\n  background-color: $confirm-green !important;\n  border-radius: 4px;\n\n  &:hover,\n  &:active,\n  &:focus {\n    background-color: $confirm-green-hover !important;\n  }\n}\n\n.confirm-tick-icon {\n  font-size: 25px;\n  align-self: center;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quarterly-attestation-box.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quarterly-attestation-box.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./quarterly-attestation-box.vue?vue&type=template&id=551a2d0a&scoped=true\"\nimport script from \"./quarterly-attestation-box.vue?vue&type=script&lang=js\"\nexport * from \"./quarterly-attestation-box.vue?vue&type=script&lang=js\"\nimport style0 from \"./quarterly-attestation-box.vue?vue&type=style&index=0&id=551a2d0a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"551a2d0a\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <div>\n      <DxAccordion\n        :ref=\"attAccordionRef\"\n        :data-source=\"attDataSource\"\n        :collapsible=\"canCollapse\"\n        :multiple=\"false\"\n        :defer-rendering=\"true\"\n      >\n        <template #title>\n          <div class=\"att-header-container\">\n            <h1>Activity Confirmation</h1>\n          </div>\n        </template>\n\n        <template #item=\"{data}\">\n          <div class=\"attestations-wrapper\">\n            <span>\n              As part of your funding agreement with Arts Council England, it is\n              required that you maintain an accurate reflection of your Event\n              Schedule within Illuminate. On a quarterly basis, you are required\n              to confirm that your Event Schedule for the previous quarter has\n              been finalised - which includes ensuring that all events are\n              created within Illuminate and that the \"Details\" tab is populated\n              for each event. Confirmation should be submitted as soon as\n              possible and no later than the end of the following quarter. For\n              example, the Event Schedule for July - September (Q2) must be\n              populated within Illuminate no later than the 31st December (end\n              of Q3).\n            </span>\n            <div\n              v-if=\"currentAttestation\"\n              ismo\n              class=\"mobile-attestation-view\"\n            >\n              <div\n                class=\"carousel-button mobile-side-button\"\n                @click=\"moveMobileCarousel(-1)\"\n                @keydown.enter=\"moveMobileCarousel(-1)\"\n                tabindex=\"0\"\n              >\n                <i class=\"dx-icon fas fa-caret-left\"></i>\n              </div>\n              <QuarterlyAttestationBox\n                :quarter-num=\"currentAttestation.quarterNum\"\n                :year=\"currentAttestation.year\"\n                :is-confirmed=\"currentAttestation.isConfirmed\"\n                :is-current-quarter=\"currentAttestation.isCurrentQuarter\"\n                :is-in-future=\"currentAttestation.isInFuture\"\n                :show-shadow=\"true\"\n                :num-events-event-owner=\"currentAttestation.numEventOwnerEvents\"\n                :num-events-partner=\"currentAttestation.numPartnerEvents\"\n                @boxClicked=\"onQuarterBoxClicked\"\n                @confirmClicked=\"onQuarterConfirmButtonClicked\"\n              />\n              <div\n                class=\"carousel-button mobile-side-button\"\n                @click=\"moveMobileCarousel(1)\"\n                @keydown.enter=\"moveMobileCarousel(1)\"\n                tabindex=\"0\"\n              >\n                <i class=\"dx-icon fas fa-caret-right\"></i>\n              </div>\n              <div class=\"mobile-buttons\">\n                <div\n                  class=\"carousel-button\"\n                  @click=\"moveMobileCarousel(-1)\"\n                  @keydown.enter=\"moveMobileCarousel(-1)\"\n                  tabindex=\"0\"\n                >\n                  <i class=\"dx-icon fas fa-caret-left\"></i>\n                </div>\n                <div\n                  class=\"carousel-button\"\n                  @click=\"moveMobileCarousel(1)\"\n                  @keydown.enter=\"moveMobileCarousel(1)\"\n                  tabindex=\"0\"\n                >\n                  <i class=\"dx-icon fas fa-caret-right\"></i>\n                </div>\n              </div>\n            </div>\n            <div\n              class=\"carousel\"\n              @wheel=\"onCarouselWheel($event)\"\n            >\n              <div\n                class=\"carousel-button\"\n                @click=\"moveCarouselLeft(4)\"\n              >\n                <i class=\"dx-icon fas fa-caret-left\"></i>\n              </div>\n              <div class=\"carousel-window\">\n                <div class=\"carousel-content\">\n                  <div\n                    class=\"carousel-item\"\n                    v-for=\"(q, index) in data\"\n                    :key=\"index\"\n                  >\n                    <QuarterlyAttestationBox\n                      :quarter-num=\"q.quarterNum\"\n                      :year=\"q.year\"\n                      :is-confirmed=\"q.isConfirmed\"\n                      :is-current-quarter=\"q.isCurrentQuarter\"\n                      :is-in-future=\"q.isInFuture\"\n                      :show-shadow=\"getIsSelectedQuarter(q.quarterNum, q.year)\"\n                      :num-events-event-owner=\"q.numEventOwnerEvents\"\n                      :num-events-partner=\"q.numPartnerEvents\"\n                      @boxClicked=\"onQuarterBoxClicked\"\n                      @confirmClicked=\"onQuarterConfirmButtonClicked\"\n                      @boxFocused=\"onQuarterBoxFocused\"\n                    />\n                  </div>\n                </div>\n              </div>\n              <div\n                class=\"carousel-button\"\n                @click=\"moveCarouselRight(4)\"\n              >\n                <i class=\"dx-icon fas fa-caret-right\"></i>\n              </div>\n            </div>\n          </div>\n        </template>\n      </DxAccordion>\n    </div>\n    <ConfirmAttestationPopup\n      :quarterNum=\"confirmQuarterNum\"\n      :year=\"confirmQuarterYear\"\n      :onConfirm=\"confirmAttestation\"\n      :popupVisible=\"popupVisible\"\n      @onPopupClosed=\"popupVisible = false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapActions} from \"vuex\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport DxAccordion from \"devextreme-vue/accordion\";\nimport {\n  isNotEmpty,\n  getQuarterStartDate,\n  getFyQuarterFromDate,\n} from \"@/common/helperFunctions\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport ConfirmAttestationPopup from \"../../confirm-attestation-popup.vue\";\nimport QuarterlyAttestationBox from \"./quarterly-attestation-box.vue\";\nimport DxButton from \"devextreme-vue/button\";\n\nexport default {\n  components: {\n    DxAccordion,\n    ConfirmAttestationPopup,\n    QuarterlyAttestationBox,\n    DxButton,\n  },\n  props: [\"organisationId\", \"selectedFilterQuarterNum\", \"selectedFilterYear\"],\n  data() {\n    return {\n      canCollapse: true,\n      popupVisible: false,\n      currentIndex: 0,\n      isProcessing: false,\n      confirmQuarterNum: null,\n      confirmQuarterYear: null,\n      attDataSource: new DataSource({\n        store: new CustomStore({\n          load: this.loadAttestations,\n        }),\n      }),\n      attestationsLoaded: false,\n      attAccordionRef: \"attAccordionRef\",\n      currentAttestation: null,\n    };\n  },\n  computed: {\n    attAccordionInstance: function () {\n      return this.$refs[this.attAccordionRef].instance;\n    },\n    showAttestations: function () {\n      return this.attestationsLoaded;\n    },\n    transformStyle() {\n      return `translateX(-${this.currentIndex * 25}%)`;\n    },\n  },\n  watch: {\n    organisationId: function (newVal) {\n      if (!isNotEmpty(newVal)) {\n        return;\n      }\n      this.attAccordionInstance\n        .getDataSource()\n        .load()\n        .then(() => this.scrollToAttestation(1, this.selectedFilterYear));\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    async loadAttestations() {\n      if (!isNotEmpty(this.organisationId)) {\n        return;\n      }\n\n      try {\n        let response = await this.$http.get(\n          `events/quarters/${this.organisationId}`,\n        );\n\n        this.attestationsLoaded = true;\n        let parsedQuarters = this.parseAttestations(response.data);\n\n        return [parsedQuarters];\n      } catch {\n        this.notifyError(\n          \"Unable to load quarterly confirmations. Please reload the page to try again\",\n        );\n        return;\n      }\n    },\n    parseAttestations(attestationsResponse) {\n      let currDateTime = new Date();\n      let attestations = attestationsResponse.quarters;\n      let fyQuarter = getFyQuarterFromDate(currDateTime);\n\n      let parsedQuarters = attestations.map((x) => {\n        let yearInt = parseInt(x.year.split(\"/\")[0]);\n        let qStartDate = getQuarterStartDate(x.quarterNum, yearInt);\n\n        return {\n          ...x,\n          isInFuture: qStartDate > currDateTime,\n          isCurrentQuarter:\n            fyQuarter.year == yearInt && fyQuarter.quarter == x.quarterNum,\n        };\n      });\n\n      this.currentAttestation = parsedQuarters.find(\n        (q) =>\n          q.quarterNum === fyQuarter.quarter &&\n          parseInt(q.year.split(\"/\")[0]) == fyQuarter.year,\n      );\n\n      return parsedQuarters;\n    },\n    setAttestation(quarterNum, year) {\n      this.scrollToAttestation(window.width < 900 ? quarterNum : 1, year);\n\n      if (!this.attestationsLoaded) {\n        return;\n      }\n\n      this.currentAttestation = this.attDataSource\n        .items()[0]\n        .find((x) => x.quarterNum === quarterNum && x.year == year);\n    },\n    scrollToAttestation(quarterNum, year) {\n      let attestationData = this.attDataSource.items()[0];\n\n      if (!isNotEmpty(attestationData)) {\n        return;\n      }\n\n      let attestationIndex = attestationData.findIndex(\n        (x) => x.quarterNum === quarterNum && x.year == year,\n      );\n\n      if (attestationIndex == -1) {\n        return;\n      }\n\n      this.currentIndex = attestationIndex;\n    },\n    moveCarouselLeft(i) {\n      let newIndex = (this.currentIndex -= i);\n      this.currentIndex = newIndex >= 0 ? newIndex : 0;\n    },\n    moveCarouselRight(i) {\n      let numQuarters = this.attDataSource.items()[0].length;\n\n      if (this.currentIndex + i < numQuarters) {\n        this.currentIndex += i;\n      }\n    },\n    moveMobileCarousel(direction) {\n      let attestationData = this.attDataSource.items()[0];\n      if (!attestationData || attestationData.length === 0) return;\n\n      let currentIndex = attestationData.findIndex(\n        (x) =>\n          x.quarterNum === this.currentAttestation.quarterNum &&\n          x.year === this.currentAttestation.year,\n      );\n\n      let newIndex = currentIndex + direction;\n      if (newIndex >= 0 && newIndex < attestationData.length) {\n        this.currentAttestation = attestationData[newIndex];\n      }\n    },\n    onCarouselWheel(event) {\n      if (event.deltaY > 0) {\n        this.moveCarouselRight(1);\n      } else {\n        this.moveCarouselLeft(1);\n      }\n    },\n    getIsSelectedQuarter(quarterNum, year) {\n      return (\n        quarterNum === this.selectedFilterQuarterNum &&\n        year === this.selectedFilterYear\n      );\n    },\n    onQuarterBoxFocused(quarterNum, year) {\n      this.scrollToAttestation(1, year);\n    },\n    onQuarterBoxClicked(quarterNum, year) {\n      this.$emit(\"boxClicked\", quarterNum, year);\n    },\n    onQuarterConfirmButtonClicked(quarterNum, year) {\n      this.confirmQuarterNum = quarterNum;\n      this.confirmQuarterYear = year;\n      this.popupVisible = true;\n    },\n    async confirmAttestation() {\n      this.popupVisible = false;\n\n      if (this.isProcessing) {\n        this.notifyError(\n          `Unable to confirm as confirmation is already in progress.`,\n        );\n        return;\n      }\n\n      try {\n        this.isProcessing = true;\n        await this.$http.post(`events/confirm-quarter`, {\n          quarterNumber: this.confirmQuarterNum,\n          organisationId: this.organisationId,\n          year: this.confirmQuarterYear,\n        });\n        this.notifySuccess(`Confirmation submitted successfully`);\n        this.confirmQuarterNum = null;\n        this.confirmQuarterYear = null;\n        this.attDataSource.reload();\n      } catch (err) {\n        this.notifyError(`Unable to confirm. ${fromResponse(err)}`);\n      } finally {\n        this.canCollapse = true;\n        this.isProcessing = false;\n      }\n    },\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"@/themes/custom-variables.scss\";\n\n.attestations-wrapper {\n  display: flex;\n  flex-direction: column;\n  gap: 11px;\n  padding: 0px 16px 16px 16px;\n}\n\n.dx-accordion {\n  margin: unset;\n}\n\n.att-header-container {\n  h1 {\n    margin: unset;\n  }\n}\n\n.carousel {\n  display: flex;\n  align-items: center;\n}\n\n.carousel-window {\n  overflow: hidden;\n  width: 100%;\n}\n\n.carousel-button {\n  height: 100%;\n  cursor: pointer;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n\n  &:first-of-type {\n    padding-right: 5px;\n  }\n\n  &:last-of-type {\n    padding-left: 5px;\n  }\n\n  i {\n    color: $brand-primary;\n  }\n}\n\n.carousel-content {\n  display: flex;\n  transition: transform 0.5s ease-out;\n  transform: v-bind(transformStyle);\n}\n\n.carousel-item {\n  flex: 0 0 25%;\n}\n\n.mobile-attestation-view {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n}\n\n.mobile-buttons {\n  display: none;\n  justify-content: space-around;\n  width: 100%;\n  margin-top: 10px;\n}\n\n@media (min-width: 900px) {\n  .mobile-attestation-view {\n    display: none;\n  }\n}\n\n@media (max-width: 900px) {\n  .carousel {\n    display: none;\n  }\n\n  .mobile-attestation-view {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-around;\n  }\n}\n\n@media (max-width: 400px) {\n  .mobile-buttons {\n    display: flex;\n    align-items: center;\n\n    .carousel-button {\n      margin: 5px 0;\n    }\n  }\n  .mobile-attestation-view {\n    flex-direction: column;\n  }\n\n  .mobile-side-button {\n    display: none;\n  }\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quarterly-attestations.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quarterly-attestations.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./quarterly-attestations.vue?vue&type=template&id=7bfad231&scoped=true\"\nimport script from \"./quarterly-attestations.vue?vue&type=script&lang=js\"\nexport * from \"./quarterly-attestations.vue?vue&type=script&lang=js\"\nimport style0 from \"./quarterly-attestations.vue?vue&type=style&index=0&id=7bfad231&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7bfad231\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Event Schedule\")]),_c('dx-data-grid',{staticClass:\"dx-card thin-column-chooser multi-select-grid-property no-active-status-list\",attrs:{\"show-borders\":false,\"data-source\":_vm.eventsDataSource,\"remote-operations\":true,\"noDataText\":\"No events to display\",\"key-expr\":\"id\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true,\"onToolbarPreparing\":_vm.onDataGridToolbarPreparing,\"deferRendering\":true},scopedSlots:_vm._u([{key:\"page-title-template\",fn:function(){return [_c('div',{staticClass:\"filters-container\"},[_c('DxSelectBox',{attrs:{\"label\":\"Year:\",\"data-source\":_vm.yearsDataSource,\"value\":_vm.selectedYear},on:{\"update:value\":function($event){_vm.selectedYear=$event},\"value-changed\":_vm.onYearOrQuarterChanged}}),_c('DxSelectBox',{attrs:{\"label\":\"Quarter:\",\"data-source\":_vm.quartersDataSource,\"value\":_vm.selectedQuarterNum,\"display-expr\":\"name\",\"value-expr\":\"id\"},on:{\"update:value\":function($event){_vm.selectedQuarterNum=$event},\"value-changed\":_vm.onYearOrQuarterChanged}})],1)]},proxy:true},{key:\"npo-template\",fn:function({data}){return [_c('div',[_vm._v(\"\\n          \"+_vm._s(data.data.npoStatus === 0\n              ? \"NPO\"\n              : data.data.owningOrganisation === null\n              ? \"\"\n              : \"Non-NPO\")+\"\\n        \")])]}},{key:\"name-template\",fn:function(cell){return [_c('dx-button',{staticClass:\"dx-link grid-name-link link-custom\",on:{\"click\":function($event){return _vm.viewEvent(cell.data.data.id)}}},[_vm._v(_vm._s(cell.data.value)+\"\\n        \")])]}},{key:\"active-template\",fn:function({data}){return [_c('div',{class:`table-pill-${\n            data.data.activeStatus === 1 ? 'active' : 'inactive'\n          }`},[_vm._v(\"\\n          \"+_vm._s(data.data.activeStatus ? \"Active\" : \"Inactive\")+\"\\n        \")])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxSearchPanel',{attrs:{\"group-index\":0,\"visible\":true,\"width\":300}}),_c('DxExport',{attrs:{\"enabled\":true,\"group-index\":1}}),_c('DxColumnChooser',{attrs:{\"enabled\":true,\"mode\":\"dragAndDrop\"}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}}),_c('DxRemoteOperations',{attrs:{\"filtering\":false,\"paging\":false,\"sorting\":false,\"summary\":false,\"grouping\":false,\"group-paging\":false}})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const createModel = [\n      {\n        dataField: \"id\",\n        dataType: \"number\",\n        visible: false,\n        showInColumnChooser: false,\n      },\n      {\n        dataField: \"name\",\n        caption: \"Name of Activity/Tour\",\n        dataType: \"string\",\n        cellTemplate: \"name-template\",\n        allowHiding: false,\n      },\n      {\n        dataField: \"relationshipType\",\n        caption: \"Relationship Type\",\n        dataType: \"string\",\n      },\n      {\n        dataField: \"location\",\n        caption: \"Location Name\",\n        dataType: \"string\",\n      },\n      {\n        dataField: \"discipline\",\n        caption: \"Discipline\",\n        dataType: \"string\",\n      },\n      {\n        dataField: \"boxOfficeProvider\",\n        caption: \"Ticketing Provider\",\n        dataType: \"string\",\n      },\n      {\n        dataField: \"startDate\",\n        caption: \"Date From\",\n        dataType: \"date\",\n        format: 'dd/MM/yyyy'\n      },\n      {\n        dataField: \"endDate\",\n        caption: \"Date To\",\n        dataType: \"date\",\n        format: 'dd/MM/yyyy'  \n      },\n      {\n        dataField: \"totalTicketsAvailable\",\n        caption: \"Total Tickets Available\",\n        dataType: \"number\",\n      },\n    ];\n  ","<template>\n  <div>\n    <div>\n      <h1 class=\"page-title\">Event Schedule</h1>\n      <dx-data-grid\n        class=\"dx-card thin-column-chooser multi-select-grid-property no-active-status-list\"\n        :show-borders=\"false\"\n        :data-source=\"eventsDataSource\"\n        :remote-operations=\"true\"\n        noDataText=\"No events to display\"\n        key-expr=\"id\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"true\"\n        :onToolbarPreparing=\"onDataGridToolbarPreparing\"\n        :deferRendering=\"true\"\n      >\n        <dx-paging :page-size=\"10\" />\n        <dx-pager\n          :allowed-page-sizes=\"[5, 10, 25]\"\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <dx-filter-row :visible=\"true\" />\n        <DxHeaderFilter\n          :visible=\"true\"\n          :allowSearch=\"true\"\n        />\n\n        <DxSearchPanel\n          :group-index=\"0\"\n          :visible=\"true\"\n          :width=\"300\"\n        />\n        <DxExport\n          :enabled=\"true\"\n          :group-index=\"1\"\n        />\n        <DxColumnChooser\n          :enabled=\"true\"\n          mode=\"dragAndDrop\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n        <DxRemoteOperations\n          :filtering=\"false\"\n          :paging=\"false\"\n          :sorting=\"false\"\n          :summary=\"false\"\n          :grouping=\"false\"\n          :group-paging=\"false\"\n        />\n\n        <template #page-title-template>\n          <div class=\"filters-container\">\n            <DxSelectBox\n              label=\"Year:\"\n              :data-source=\"yearsDataSource\"\n              :value.sync=\"selectedYear\"\n              @value-changed=\"onYearOrQuarterChanged\"\n            />\n\n            <DxSelectBox\n              label=\"Quarter:\"\n              :data-source=\"quartersDataSource\"\n              :value.sync=\"selectedQuarterNum\"\n              display-expr=\"name\"\n              value-expr=\"id\"\n              @value-changed=\"onYearOrQuarterChanged\"\n            />\n          </div>\n        </template>\n\n        <template #npo-template=\"{data}\">\n          <div>\n            {{\n              data.data.npoStatus === 0\n                ? \"NPO\"\n                : data.data.owningOrganisation === null\n                ? \"\"\n                : \"Non-NPO\"\n            }}\n          </div>\n        </template>\n\n        <template #name-template=\"cell\">\n          <dx-button\n            class=\"dx-link grid-name-link link-custom\"\n            @click=\"viewEvent(cell.data.data.id)\"\n            >{{ cell.data.value }}\n          </dx-button>\n        </template>\n\n        <template #active-template=\"{data}\">\n          <div\n            :class=\"`table-pill-${\n              data.data.activeStatus === 1 ? 'active' : 'inactive'\n            }`\"\n          >\n            {{ data.data.activeStatus ? \"Active\" : \"Inactive\" }}\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState} from \"vuex\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxExport,\n  DxColumnChooser,\n  DxRemoteOperations,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n  DxSearchPanel,\n} from \"devextreme-vue/data-grid\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport DxSelectBox from \"devextreme-vue/select-box\";\nimport {serializeLoadOptions} from \"@/utils/load-options-serializer\";\nimport {\n  isNotEmpty,\n  getFyQuarterFromDate,\n  deepCopyJson,\n} from \"@/common/helperFunctions\";\nimport {createModel} from \"./event-list-col-defs\";\n\nexport default {\n  components: {\n    DxButton,\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxExport,\n    DxColumnChooser,\n    DxRemoteOperations,\n    DxPaging,\n    DxSearchPanel,\n    DxSelectBox,\n  },\n  props: [\"organisationId\"],\n  data() {\n    return {\n      yearsDataSource: [],\n      quartersDataSource: [],\n      selectedYear: null,\n      selectedQuarterNum: null,\n      eventsDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadEvents,\n        }),\n      }),\n      filterLoaded: false,\n      columns: createModel,\n    };\n  },\n  computed: {},\n  watch: {\n    organisationId: function (newVal) {\n      // reload the list only when organisation changes AND isn't NULL.\n      // this is being used instead of loading on page load/mount so\n      //    that it waits for a valid orgId until making API call.\n      if (!isNotEmpty(newVal)) {\n        return;\n      }\n      this.eventsDataSource.reload();\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\"]),\n    async loadEvents(loadOptions) {\n      if (!isNotEmpty(this.organisationId) || this.filterLoaded !== true) {\n        return null;\n      }\n      let yearsSplit = this.selectedYear.split(\"/\");\n      let response = await this.$http.get(\n        `events?year=${yearsSplit[0]}&quarter=${this.selectedQuarterNum}&organisationId=${this.organisationId}`,\n        {\n          params: serializeLoadOptions(loadOptions),\n        },\n      );\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    setFilterValues(quarterNum, year) {\n      this.selectedQuarterNum = quarterNum;\n      this.selectedYear = year;\n      this.onYearOrQuarterChanged();\n    },\n    async getFilterData() {\n      let response = await this.$http.get(\n        `events/filters?organisationId=${this.organisationId}`,\n      );\n      let data = response.data;\n\n      this.yearsDataSource = data.years;\n      this.quartersDataSource = data.quarters;\n\n      let currentQuarter = this.getCurrentOrFirstQuarter(data.quarters);\n      let currentYear = this.getCurrentOrFirstYear(data.years);\n\n      this.setFilterValues(currentQuarter, currentYear);\n\n      this.filterLoaded = true;\n    },\n\n    getCurrentOrFirstYear(yearList) {\n      let currDateTime = new Date();\n      let currentQuarter = getFyQuarterFromDate(currDateTime); // {year: 2023, quarter: 1}\n\n      // Convert the current year to the \"YYYY/YY\" format\n      const currentYearFormatted = `${currentQuarter.year}/${\n        (currentQuarter.year + 1) % 100\n      }`;\n\n      // Check if the current year exists in the yearList\n      const currentYearExists = yearList.some(\n        (year) => year === currentYearFormatted,\n      );\n\n      // If the current year exists in the list, return it\n      if (currentYearExists) {\n        return currentYearFormatted;\n      }\n\n      // If no matching year is found, return the first year in the list\n      if (yearList.length > 0) {\n        return yearList[0];\n      }\n\n      return null;\n    },\n    getCurrentOrFirstQuarter(quarterList) {\n      let currDateTime = new Date();\n      let currentQuarter = getFyQuarterFromDate(currDateTime); // {year: 2023, quarter: 1}\n\n      // Check if the current year exists in the yearList\n      const currentQuarterValue = quarterList.find(\n        (q) => q.id === currentQuarter.quarter,\n      );\n\n      // If the current year exists in the list, return it\n      if (currentQuarterValue !== undefined) {\n        return currentQuarterValue.id;\n      }\n\n      // If no matching year is found, return the first year in the list\n      if (quarterList.length > 0) {\n        return quarterList[0].id;\n      }\n\n      return null;\n    },\n    onDataGridToolbarPreparing(e) {\n      let toolbarItems = e.toolbarOptions.items;\n      toolbarItems.forEach(function (item) {\n        switch (item.name) {\n          case \"searchPanel\":\n            item.locateInMenu = \"auto\";\n            break;\n          case \"exportButton\":\n            item.locateInMenu = \"always\";\n            break;\n          case \"columnChooserButton\":\n            item.locateInMenu = \"always\";\n            break;\n        }\n      });\n\n      toolbarItems.unshift({\n        location: \"before\",\n        template: \"page-title-template\",\n      });\n    },\n    onYearOrQuarterChanged() {\n      // This emits to Events-Management. Which will set the selected values so that QuarterlyAttestations can use them\n      this.$emit(\n        \"filterValuesUpdated\",\n        this.selectedQuarterNum,\n        this.selectedYear,\n      );\n      this.eventsDataSource.reload();\n    },\n    viewEvent(id) {\n      this.$router.push({\n        name: \"event-details\",\n        params: {\n          id: id,\n        },\n        query: {tabIndex: 0},\n      });\n    },\n  },\n  mounted() {\n    this.getFilterData();\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"@/themes/custom-variables.scss\";\n\n.dx-datagrid-rowsview .dx-row.dx-row-lines > td {\n  padding-bottom: 17px;\n  padding-top: 17px;\n}\n\n.dx-datagrid-rowsview .dx-row {\n  height: 51.5px;\n}\n\n@media (max-width: 400px) {\n  h1 {\n    word-spacing: 99999px;\n  }\n\n  .dx-datagrid-headers {\n    margin-top: 20px;\n  }\n}\n\n.filter-dropdown-heading {\n  font: $base-font-family-medium;\n  margin: 5px;\n  text-align: center;\n  padding-top: 5px;\n  padding-right: 5px;\n}\n\n.filters-container {\n  display: flex;\n  flex-direction: row;\n  gap: 10px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./events-schedule.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./events-schedule.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./events-schedule.vue?vue&type=template&id=44691454&scoped=true\"\nimport script from \"./events-schedule.vue?vue&type=script&lang=js\"\nexport * from \"./events-schedule.vue?vue&type=script&lang=js\"\nimport style0 from \"./events-schedule.vue?vue&type=style&index=0&id=44691454&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"44691454\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"events-managment-col\">\n    <div class=\"page-header\">\n      <h1 class=\"page-title\">Event Management</h1>\n      <div class=\"action-section\">\n        <dx-button\n          v-if=\"$can('create', $subjects.event.subject)\"\n          type=\"default\"\n          class=\"btn-primary\"\n          styling-mode=\"contained\"\n          @click=\"onAddEventClicked\"\n          ><i class=\"fas fa-plus\" /> Create event</dx-button\n        >\n\n        <dx-button\n          v-if=\"$can('create', $subjects.event.subject)\"\n          type=\"default\"\n          class=\"btn-secondary\"\n          styling-mode=\"contained\"\n          @click=\"onUploadEventsClicked\"\n          ><i class=\"fas fa-upload\" />Bulk Upload</dx-button\n        >\n      </div>\n    </div>\n\n    <div class=\"org-lookup-container\">\n      <dx-lookup\n        :ref=\"orgLookupRef\"\n        :key=\"orgLookupKey\"\n        :data-source=\"orgDataSource\"\n        display-expr=\"name\"\n        value-expr=\"id\"\n        :search-enabled=\"true\"\n        search-mode=\"contains\"\n        :search-expr=\"['name']\"\n        :min-search-length=\"2\"\n        :show-data-before-search=\"true\"\n        search-placeholder=\"Select Organisation...\"\n        :value.sync=\"selectedOrgId\"\n        :defer-rendering=\"true\"\n        label=\"Organisation\"\n      >\n      </dx-lookup>\n    </div>\n\n    <div>\n      <quarterly-attestations\n        :ref=\"quarterlyAttestationsRef\"\n        :organisationId=\"selectedOrgId\"\n        :selectedFilterQuarterNum=\"selectedFilterQuarterNum\"\n        :selectedFilterYear=\"selectedFilterYear\"\n        @boxClicked=\"onQuarterBoxClicked\"\n      />\n    </div>\n\n    <div v-if=\"showEventsSchedule\">\n      <events-schedule\n        :ref=\"eventScheduleRef\"\n        :organisationId=\"selectedOrgId\"\n        @filterValuesUpdated=\"onEventsScheduleFiltersChanged\"\n      />\n    </div>\n\n    <dx-load-panel\n      :visible.sync=\"isLoading\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {DxLookup} from \"devextreme-vue/lookup\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {isNotEmpty, configureLookupSearch} from \"@/common/helperFunctions\";\nimport QuarterlyAttestations from \"../components/events/events-list/quarterly-attestations.vue\";\nimport EventsSchedule from \"../components/events/events-list/events-schedule.vue\";\nimport {activeEntityFilter} from \"../common/constants\";\n\nexport default {\n  components: {\n    DxButton,\n    QuarterlyAttestations,\n    EventsSchedule,\n    DxLookup,\n    DxLoadPanel,\n  },\n  data() {\n    return {\n      isLoading: false,\n      orgDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrgs,\n          byKey: async (key) => {\n            return await this.fetchOrgDetails(key);\n          },\n        }),\n      }),\n      window: {\n        width: 0,\n        height: 0,\n      },\n      filterLoaded: false,\n      eventsLoaded: false,\n      selectedOrgId: null,\n      selectedFilterQuarterNum: null,\n      selectedFilterYear: null,\n      buttonHideWidth: 500,\n      holdCurrYear: \"\",\n      orgLookupKey: 0,\n      orgLookupRef: \"orgLookupRef\",\n      eventScheduleRef: \"eventScheduleRef\",\n      quarterlyAttestationsRef: \"quarterlyAttestationsRef\",\n    };\n  },\n  computed: {\n    ...mapState(\"auth\", {currentUser: \"user\"}),\n    showEventsSchedule: function () {\n      return isNotEmpty(this.selectedOrgId);\n    },\n    showAttestations: function () {\n      return isNotEmpty(this.selectedOrgId);\n    },\n    orgLookupInstance: function () {\n      return this.$refs[this.orgLookupRef].instance;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\"]),\n    ...mapActions(\"auth\", [\"getUser\"]),\n    async loadOrgs(searchOptions) {\n      let loadOptions = configureLookupSearch(\n        searchOptions,\n        \"name\",\n        false,\n        activeEntityFilter,\n      );\n\n      let response = await this.$http.get(`organisations`, {\n        params: loadOptions,\n      });\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    onQuarterBoxClicked(quarterNum, year) {\n      this.$refs[this.eventScheduleRef].setFilterValues(quarterNum, year);\n    },\n    onAddEventClicked() {\n      this.$router.push({\n        name: \"event-details\",\n        query: {tabIndex: 0, organisationId: this.selectedOrgId},\n      });\n    },\n    onEventsScheduleFiltersChanged(quarterNum, year) {\n      this.selectedFilterQuarterNum = quarterNum;\n      this.selectedFilterYear = year;\n      this.$refs[this.quarterlyAttestationsRef].setAttestation(\n        quarterNum,\n        year,\n      );\n    },\n    handleResize() {\n      this.window.width = window.innerWidth;\n      this.window.height = window.innerHeight;\n    },\n    onUploadEventsClicked() {\n      this.$router.push({\n        name: \"event-bulk-upload\",\n      });\n    },\n    async fetchOrgsOnMount() {\n      let orgDS = this.orgLookupInstance.getDataSource();\n\n      await orgDS.load();\n\n      // set selectedOrgId to be first in the list if it's null\n      if (this.selectedOrgId === null) {\n        let dsItems = orgDS.items();\n        this.selectedOrgId = dsItems[0].id;\n        this.orgLookupInstance.repaint();\n      }\n    },\n  },\n  mounted() {\n    this.isLoading = true;\n    this.fetchOrgsOnMount().then(() => (this.isLoading = false));\n  },\n  created() {\n    window.addEventListener(\"resize\", this.handleResize);\n    this.handleResize();\n  },\n  destroyed() {\n    window.removeEventListener(\"resize\", this.handleResize);\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.org-lookup-container {\n  max-width: 300px;\n  padding-bottom: 10px;\n}\n\n.org-filter-label {\n  font-weight: 500;\n  margin: 5px;\n}\n\n@media (max-width: 400px) {\n  h1 {\n    word-spacing: 99999px;\n  }\n\n  .dx-datagrid-headers {\n    margin-top: 20px;\n  }\n}\n\n.action-section {\n  display: flex;\n  flex-direction: row;\n  gap: 10px;\n}\n\n@media (width < 300px) {\n  .action-section {\n    flex-direction: column;\n    width: 100%;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./events-management.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./events-management.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./events-management.vue?vue&type=template&id=5b7d0dad&scoped=true\"\nimport script from \"./events-management.vue?vue&type=script&lang=js\"\nexport * from \"./events-management.vue?vue&type=script&lang=js\"\nimport style0 from \"./events-management.vue?vue&type=style&index=0&id=5b7d0dad&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5b7d0dad\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.locationDetails.name,on:{\"click\":_vm.divClick}},[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"title-back-container\"},[_c('div',{staticClass:\"page-back\"},[_c('dx-button',{staticClass:\"btn-back\",attrs:{\"icon\":\"fas fa-arrow-left\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onBackClicked}})],1),_c('div',{staticClass:\"page-title-container\"},[_c('div',[_c('p',{staticClass:\"page-breadcrumb\"},[_vm._v(\"\\n            Location\\n            \"+_vm._s(_vm.isEditMode && _vm.locationDetails && _vm.locationDetails.name\n                ? ` > ${_vm.locationDetails.name}`\n                : ``)+\"\\n          \")])]),_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Location Overview\")])])]),_c('div',{staticClass:\"action-section\"},[(_vm.locationDetails && _vm.$can(_vm.userAction, _vm.$subjects.location.subject))?_c('dx-button',{staticClass:\"btn-primary fas fa-save\",attrs:{\"validation-group\":\"locationDetails\",\"text\":\"Save location\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onSaveLocationClicked}}):_vm._e(),(\n          _vm.locationDetails &&\n          _vm.isEditMode &&\n          _vm.$can('delete', _vm.$subjects.location.subject)\n        )?_c('dx-button',{staticClass:\"btn-primary btn-delete fas fa-trash-alt\",attrs:{\"type\":\"warning\",\"text\":\"Delete\",\"styling-mode\":\"contained\"},on:{\"click\":function($event){_vm.popupVisible = true}}}):_vm._e()],1)]),(_vm.locationDetails.name || !_vm.isEditMode)?_c('dx-form',{key:_vm.refreshKey,ref:_vm.formRefKey,attrs:{\"form-data\":_vm.locationDetails,\"col-count\":2,\"show-validation-summary\":true,\"scrolling-enabled\":false,\"validation-group\":\"locationDetails\",\"readOnly\":!_vm.$can(_vm.userAction, _vm.$subjects.location.subject)}},[_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Details\",\"col-count\":4,\"col-span\":2,\"css-class\":\"brand-border-top-form-group\"}},[_c('dx-simple-item',{attrs:{\"data-field\":\"name\"}},[_c('dx-label',{attrs:{\"text\":\"Location Name\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Location name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Location name is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}}),_c('dx-async-rule',{attrs:{\"validation-callback\":_vm.checkNameAvailabilityCall,\"ignore-empty-value\":true}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"organisationId\",\"editorType\":\"dxLookup\",\"input-attr\":_vm.inputAttrOrg,\"editorOptions\":{\n          ..._vm.editorOptions.organisation,\n          dataSource: _vm.orgDataSource,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Organisation\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Organisation is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"activeStatus\",\"editorType\":\"dxRadioGroup\",\"value-expr\":\"id\",\"editorOptions\":{\n          ..._vm.editorOptions.activeStatuses,\n          layout: 'horizontal',\n        }}},[_c('dx-label',{attrs:{\"text\":\"Active Status\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Active status is required\"}})],1)],1),_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Location\",\"col-count\":4,\"col-span\":2,\"css-class\":\"last-form-section brand-border-top-form-group\"}},[_c('dx-simple-item',{attrs:{\"data-field\":\"countryId\",\"editorType\":\"dxLookup\",\"input-attr\":_vm.inputAttrCountry,\"editorOptions\":{\n          ..._vm.editorOptions.countries,\n          dataSource: _vm.countryDataSource,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Country\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Country is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"addressLine1\",\"editorOptions\":{\n          disabled: _vm.disableAddressInput,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Address First Line\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.address,\"message\":`Address First Line is too long. Maximum allowed length is ${_vm.maxLength.address} characters`}}),_c('dx-custom-rule',{attrs:{\"type\":\"custom\",\"validation-callback\":_vm.validateAddressField,\"message\":\"Address First Line is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"addressLine2\",\"editorOptions\":{\n          disabled: _vm.disableAddressInput,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Address Second Line\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Address Second Line is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"city\",\"editorOptions\":{\n          disabled: _vm.disableAddressInput,\n        }}},[_c('dx-label',{attrs:{\"text\":\"City\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`City is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}}),_c('dx-custom-rule',{attrs:{\"type\":\"custom\",\"validation-callback\":_vm.validateAddressField,\"message\":\"City is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"postcode\",\"editorOptions\":{\n          disabled: _vm.disableAddressInput,\n        }}},[_c('dx-label',{attrs:{\"text\":\"Postcode\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.postcode,\"message\":`Postcode is too long. Maximum allowed length is ${_vm.maxLength.postcode} characters`}}),_c('dx-custom-rule',{attrs:{\"type\":\"custom\",\"validation-callback\":_vm.validateAddressField,\"message\":\"Postcode is required\"}}),_c('dx-pattern-rule',{attrs:{\"pattern\":_vm.postCodeRegex,\"message\":\"Please enter a postcode in a valid format\"}})],1)],1)],1):_vm._e(),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='orgTooltip']\"}},[_c('div',{staticClass:\"tooltip\"},[_vm._v(\"\\n      The organisation that is responsible for this location.\\n    \")])]),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}}),_c('ConfirmDeletePopup',{attrs:{\"entityName\":_vm.locationDetails && _vm.locationDetails.name ? _vm.locationDetails.name : '',\"titleName\":\"Location\",\"onDelete\":_vm.deleteLocationFunction,\"popupVisible\":_vm.popupVisible},on:{\"onPopupClosed\":function($event){_vm.popupVisible = false}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div\n    v-on:click=\"divClick\"\n    :key=\"locationDetails.name\"\n  >\n    <div class=\"page-header\">\n      <div class=\"title-back-container\">\n        <div class=\"page-back\">\n          <dx-button\n            class=\"btn-back\"\n            icon=\"fas fa-arrow-left\"\n            styling-mode=\"contained\"\n            @click=\"onBackClicked\"\n          >\n          </dx-button>\n        </div>\n        <div class=\"page-title-container\">\n          <div>\n            <p class=\"page-breadcrumb\">\n              Location\n              {{\n                isEditMode && locationDetails && locationDetails.name\n                  ? ` > ${locationDetails.name}`\n                  : ``\n              }}\n            </p>\n          </div>\n          <h1 class=\"page-title\">Location Overview</h1>\n        </div>\n      </div>\n      <div class=\"action-section\">\n        <dx-button\n          class=\"btn-primary fas fa-save\"\n          v-if=\"locationDetails && $can(userAction, $subjects.location.subject)\"\n          validation-group=\"locationDetails\"\n          text=\"Save location\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"onSaveLocationClicked\"\n        />\n        <dx-button\n          class=\"btn-primary btn-delete fas fa-trash-alt\"\n          v-if=\"\n            locationDetails &&\n            isEditMode &&\n            $can('delete', $subjects.location.subject)\n          \"\n          type=\"warning\"\n          text=\"Delete\"\n          styling-mode=\"contained\"\n          @click=\"popupVisible = true\"\n        />\n      </div>\n    </div>\n\n    <dx-form\n    v-if=\"locationDetails.name || !isEditMode\"\n      :form-data=\"locationDetails\"\n      :col-count=\"2\"\n      :show-validation-summary=\"true\"\n      :scrolling-enabled=\"false\"\n      validation-group=\"locationDetails\"\n      :readOnly=\"!$can(userAction, $subjects.location.subject)\"\n      :ref=\"formRefKey\"\n      :key=\"refreshKey\"\n    >\n      <dx-item\n        item-type=\"group\"\n        caption=\"Details\"\n        :col-count=\"4\"\n        :col-span=\"2\"\n        css-class=\"brand-border-top-form-group\"\n      >\n        <dx-simple-item data-field=\"name\">\n          <dx-label text=\"Location Name\" />\n          <dx-required-rule message=\"Location name is required\" />\n          <dx-string-length-rule\n            :max=\"maxLength.name\"\n            :message=\"`Location name is too long. Maximum allowed length is ${maxLength.name} characters`\"\n          />\n          <dx-async-rule\n            :validation-callback=\"checkNameAvailabilityCall\"\n            :ignore-empty-value=\"true\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"organisationId\"\n          editorType=\"dxLookup\"\n          :input-attr=\"inputAttrOrg\"\n          :editorOptions=\"{\n            ...editorOptions.organisation,\n            dataSource: orgDataSource,\n          }\"\n        >\n          <dx-label text=\"Organisation\" />\n          <dx-required-rule message=\"Organisation is required\" />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"activeStatus\"\n          editorType=\"dxRadioGroup\"\n          value-expr=\"id\"\n          :editorOptions=\"{\n            ...editorOptions.activeStatuses,\n            layout: 'horizontal',\n          }\"\n        >\n          <dx-label text=\"Active Status\" />\n          <dx-required-rule message=\"Active status is required\" />\n        </dx-simple-item>\n      </dx-item>\n      <dx-item\n        item-type=\"group\"\n        caption=\"Location\"\n        :col-count=\"4\"\n        :col-span=\"2\"\n        css-class=\"last-form-section brand-border-top-form-group\"\n      >\n        <dx-simple-item\n          data-field=\"countryId\"\n          editorType=\"dxLookup\"\n          :input-attr=\"inputAttrCountry\"\n          :editorOptions=\"{\n            ...editorOptions.countries,\n            dataSource: countryDataSource,\n          }\"\n        >\n          <dx-label text=\"Country\" />\n          <dx-required-rule message=\"Country is required\" />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"addressLine1\"\n          :editorOptions=\"{\n            disabled: disableAddressInput,\n          }\"\n        >\n          <dx-label text=\"Address First Line\" />\n          <dx-string-length-rule\n            :max=\"maxLength.address\"\n            :message=\"`Address First Line is too long. Maximum allowed length is ${maxLength.address} characters`\"\n          />\n          <dx-custom-rule\n            type=\"custom\"\n            :validation-callback=\"validateAddressField\"\n            message=\"Address First Line is required\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"addressLine2\"\n          :editorOptions=\"{\n            disabled: disableAddressInput,\n          }\"\n        >\n          <dx-label text=\"Address Second Line\" />\n          <dx-string-length-rule\n            :max=\"maxLength.name\"\n            :message=\"`Address Second Line is too long. Maximum allowed length is ${maxLength.name} characters`\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"city\"\n          :editorOptions=\"{\n            disabled: disableAddressInput,\n          }\"\n        >\n          <dx-label text=\"City\" />\n          <dx-string-length-rule\n            :max=\"maxLength.name\"\n            :message=\"`City is too long. Maximum allowed length is ${maxLength.name} characters`\"\n          />\n          <dx-custom-rule\n            type=\"custom\"\n            :validation-callback=\"validateAddressField\"\n            message=\"City is required\"\n          />\n        </dx-simple-item>\n\n        <dx-simple-item\n          data-field=\"postcode\"\n          :editorOptions=\"{\n            disabled: disableAddressInput,\n          }\"\n        >\n          <dx-label text=\"Postcode\" />\n          <dx-string-length-rule\n            :max=\"maxLength.postcode\"\n            :message=\"`Postcode is too long. Maximum allowed length is ${maxLength.postcode} characters`\"\n          />\n          <dx-custom-rule\n            type=\"custom\"\n            :validation-callback=\"validateAddressField\"\n            message=\"Postcode is required\"\n          />\n          <dx-pattern-rule\n            :pattern=\"postCodeRegex\"\n            message=\"Please enter a postcode in a valid format\"\n          />\n        </dx-simple-item>\n      </dx-item>\n    </dx-form>\n\n    <dx-tooltip\n      showEvent=\"dxhoverstart\"\n      hideEvent=\"dxhoverend\"\n      position=\"top\"\n      target=\"label[class*='orgTooltip']\"\n    >\n      <div class=\"tooltip\">\n        The organisation that is responsible for this location.\n      </div>\n    </dx-tooltip>\n\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n\n    <ConfirmDeletePopup\n      :entityName=\"\n        locationDetails && locationDetails.name ? locationDetails.name : ''\n      \"\n      titleName=\"Location\"\n      :onDelete=\"deleteLocationFunction\"\n      :popupVisible=\"popupVisible\"\n      @onPopupClosed=\"popupVisible = false\"\n    />\n  </div>\n</template>\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {\n  DxAsyncRule,\n  DxForm,\n  DxItem,\n  DxLabel,\n  DxRequiredRule,\n  DxSimpleItem,\n  DxStringLengthRule,\n  DxPatternRule,\n} from \"devextreme-vue/form\";\nimport {DxCustomRule} from \"devextreme-vue/validator\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport checkNameAvailability from \"@/mixins/check-name-availability\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {\n  configureLookupSearch,\n  isNotEmpty,\n  objectEquals,\n  deepCopyJson,\n} from \"../common/helperFunctions\";\nimport {activeEntityFilter, \n  LookupCodes,\n  orgActiveStatuses,\n  ukCountryLookupValues,\n} from \"../common/constants\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport ConfirmDeletePopup from \"../components/confirm-delete-popup.vue\";\nimport {DxTooltip} from \"devextreme-vue\";\n\nlet defaultDropDownOptions = {\n  displayExpr: \"name\",\n  valueExpr: \"id\",\n  stylingMode: \"outlined\",\n  applyValueMode: \"instantly\",\n};\n\nlet defaultLookupOptions = {\n  displayExpr: \"name\",\n  valueExpr: \"id\",\n  searchEnabled: true,\n  searchMode: \"contains\",\n  searchExpr: [\"name\"],\n  minSearchLength: 2,\n  searchPlaceholder: \"Select..\",\n  showDataBeforeSearch: true,\n  deferRendering: false,\n  stylingMode: \"outlined\",\n  applyValueMode: \"instantly\",\n};\n\nexport default {\n  components: {\n    DxAsyncRule,\n    DxButton,\n    DxForm,\n    DxLabel,\n    DxLoadPanel,\n    DxItem,\n    DxRequiredRule,\n    DxSimpleItem,\n    DxStringLengthRule,\n    DxPatternRule,\n    ConfirmDeletePopup,\n    DxTooltip,\n    DxCustomRule,\n  },\n  mixins: [checkNameAvailability],\n  data() {\n    return {\n      maxLength: {\n        name: 75,\n        address: 255,\n        postcode: 10,\n      },\n      refreshKey: 0,\n      formRefKey: \"formLocationDetails\",\n      savedSuccessfully: false,\n      initialLocationDetailsObj: null,\n      popupVisible: false,\n      orgDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrgs,\n          byKey: async (key) => {\n            return await this.fetchOrgDetails(key);\n          },\n        }),\n      }),\n      countryDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          loadMode: \"raw\",\n          load: this.loadCountries,\n          // sorted by sequence so that the UK countries are at the top\n          sort: {selector: \"sequence\", desc: false},\n        }),\n      }),\n      selectedCountryValue: null, // used only to check if Address needs validating (only UK locations need address)\n      postCodeRegex:\n        /^([A-Za-z][A-HJ-Ya-hj-y]?[0-9][A-Z0-9a-z0-9]? ?[0-9][A-Za-z]{2}|GIR ?0A{2})$|^(?=\\s*$)|null/,\n      editorOptions: {\n        activeStatuses: {\n          ...defaultDropDownOptions,\n          dataSource: [orgActiveStatuses.active, orgActiveStatuses.disabled],\n        },\n        countries: {\n          ...defaultLookupOptions,\n          onValueChanged: this.onCountryValueChanged,\n        },\n        organisation: {\n          ...defaultLookupOptions,\n        },\n      },\n      inputAttrOrg: { 'aria-label': 'Organisation' },\n      inputAttrCountry: { 'aria-label': 'Country' }\n    };\n  },\n  computed: {\n    ...mapState(\"locations\", [\"locationDetails\"]),\n    ...mapGetters(\"locations\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    formInstance: function () {\n      return this.$refs[this.formRefKey].instance;\n    },\n    disableAddressInput: function () {\n      return !ukCountryLookupValues.includes(this.selectedCountryValue);\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"locations\", {\n      createLocation: \"create\",\n      updateLocation: \"update\",\n      deleteLocation: \"delete\",\n      fetchLocationDetails: \"fetchLocationDetails\",\n      clearLocationDetails: \"clear\",\n    }),\n    ...mapActions(\"organisations\", {\n      fetchOrgDetails: \"fetchOrgDetails\",\n    }),\n    cancel() {\n      this.$router.push({\n        name: \"locations-list\",\n      });\n    },\n    onBackClicked() {\n      this.$router.push({\n        name: \"locations-list\",\n      });\n    },\n    async loadOrgs(searchOptions) {\n      let loadOptions = configureLookupSearch(\n        searchOptions,\n        \"name\",\n        false,\n        activeEntityFilter\n      );\n\n      let response = await this.$http.get(`organisations`, {\n        params: loadOptions,\n      });\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    async loadCountries(searchOptions) {\n      // sort by \"sequence\"\n      let loadOptions = configureLookupSearch(searchOptions, \"sequence\");\n\n      // add valueId as query string if location.CountryId exists (to make sure its included)\n      let valueId = this.locationDetails.countryId ? `?valueId=${this.locationDetails.countryId}` : '';\n\n      let response = await this.$http.get(`lookup/${LookupCodes.Country}${valueId}`, {\n        params: loadOptions,\n      });\n\n      if (isNotEmpty(this.locationDetails.countryId)) {\n        this.selectedCountryValue = response.data.data.find(x => x.id === this.locationDetails.countryId).value;\n      }\n\n      return response.data.data;\n    },\n\n    async onSaveLocationClicked(e) {\n      let result = await e.validationGroup.validate();\n\n      if (!result.isValid) {\n        this.notifyError(\n          `Unable to save location. ${result.brokenRules.length} validation errors.`,\n        );\n        return;\n      }\n\n      try {\n        if (!this.isEditMode) {\n          await this.createLocation();\n        } else {\n          await this.updateLocation();\n        }\n\n        this.notifySuccess(\n          `Location successfully ${this.isEditMode ? \"updated\" : \"created\"}.`,\n        );\n\n        this.savedSuccessfully = true;\n        this.$router.push({\n          name: \"locations-list\",\n        });\n      } catch (err) {\n        this.notifyError(\n          `Unable to ${\n            this.isEditMode ? \"create\" : \"update\"\n          } location. ${fromResponse(err)}`,\n        );\n      }\n    },\n    async deleteLocationFunction() {\n      try {\n        await this.deleteLocation();\n\n        this.notifySuccess(`Location successfully deleted.`);\n        this.$router.push({\n          name: \"locations-list\",\n        });\n        this.savedSuccessfully = true;\n      } catch (err) {\n        this.notifyError(`Unable to delete location. ${fromResponse(err)}`);\n      }\n    },\n    async checkNameAvailabilityCall(params) {\n      return await this.checkNameAvailability(\n        \"locations/checknameavailability\",\n        {\n          name: params.value,\n          id: this.locationDetails ? this.locationDetails.id : 0,\n        },\n      );\n    },\n    onCountryValueChanged(e) {\n      // used to calc if address needs validating or not\n      const selectedItem = e.component.option(\"selectedItem\");\n      // reset Address values to NULL if Non-UK country.\n      // form boxes are disabled via a computed value\n      if (selectedItem) {\n        this.selectedCountryValue = selectedItem.value;\n        if (!ukCountryLookupValues.includes(selectedItem.value)) {\n          this.locationDetails.addressLine1 = null;\n          this.locationDetails.addressLine2 = null;\n          this.locationDetails.city = null;\n          this.locationDetails.postcode = null;\n        }\n      }\n      // reset form validation as changing country may change required fields\n      // dx components have no way of doing this so just repainting the entire form :/\n      this.refreshKey++;\n    },\n    validateAddressField(e) {\n      // Returns true if Non-UK country or UK Country and Value isn't Empty\n      let isUkCountry = ukCountryLookupValues.includes(this.selectedCountryValue);\n      return !isUkCountry || (isUkCountry && isNotEmpty(e.value))\n    },\n    divClick() {\n      const e = document.getElementsByName(\"postcode\");\n      e[0].classList.add(\"codeinput\");\n      e[0].style.textTransform = \"uppercase\";\n    },\n    addTooltips() {\n      document\n        .querySelector(\"label[for*='organisation']\")\n        .classList.add(\"tooltip\", \"orgTooltip\");\n    },\n    preventNav(event) {\n      if (!this.areUnsavedChanges() || this.savedSuccessfully) return;\n      event.preventDefault();\n      event.returnValue = \"\";\n    },\n    areUnsavedChanges() {\n      let a = !objectEquals(\n        this.locationDetails,\n        this.initialLocationDetailsObj,\n      );\n      return a;\n    },\n  },\n  beforeMount() {\n    // https://austingil.com/prevent-browser-refresh-url-changes-route-navigation-vue/\n    window.addEventListener(\"beforeunload\", this.preventNav);\n    this.$once(\"hook:beforeDestroy\", () => {\n      window.removeEventListener(\"beforeunload\", this.preventNav);\n    });\n  },\n  mounted() {\n    if (this.isEditMode) {\n      this.fetchLocationDetails(this.$route.params.id).then(() => {\n        this.initialLocationDetailsObj = deepCopyJson(this.locationDetails);\n        this.addTooltips();\n      });\n    } else {\n      this.locationDetails.activeStatus = orgActiveStatuses.active.id;\n      this.addTooltips();\n    }\n  },\n  beforeDestroy() {\n    this.clearLocationDetails();\n  },\n  beforeRouteLeave(to, from, next) {\n    if (!this.areUnsavedChanges() || this.savedSuccessfully) {\n      next();\n      return;\n    }\n    const answer = window.confirm(\n      \"Are you sure you would like to leave? You have unsaved changes.\",\n    );\n    if (answer) {\n      next();\n    } else {\n      next(false);\n    }\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.codeinput {\n  text-transform: uppercase !important;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./location-details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./location-details.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./location-details.vue?vue&type=template&id=050d3628&scoped=true\"\nimport script from \"./location-details.vue?vue&type=script&lang=js\"\nexport * from \"./location-details.vue?vue&type=script&lang=js\"\nimport style0 from \"./location-details.vue?vue&type=style&index=0&id=050d3628&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"050d3628\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('dx-data-grid',{ref:_vm.locationListRefKey,staticClass:\"dx-card thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.dataSource,\"remote-operations\":true,\"noDataText\":_vm.noDataText,\"key-expr\":\"id\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true,\"onToolbarPreparing\":_vm.onDataGridToolbarPreparing},scopedSlots:_vm._u([{key:\"page-title-template\",fn:function(){return [_c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Location Management\")]),_c('div',{staticClass:\"page-title\"},[_vm._v(\"\\n          The list of locations where your organisation's events are held.\\n        \")])])]},proxy:true},{key:\"add-button-template\",fn:function(){return [_c('div',[(\n            _vm.$can('create', _vm.$subjects.location.subject) &&\n            _vm.window.width > _vm.buttonHideWidth\n          )?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddLocationClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" Create location\")]):_vm._e(),(\n            _vm.$can('create', _vm.$subjects.organisation.subject) &&\n            _vm.window.width <= _vm.buttonHideWidth\n          )?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddLocationClicked}},[_c('i',{staticClass:\"fas fa-plus sml-create-btn-icon\"})]):_vm._e()],1)]},proxy:true},{key:\"name-template\",fn:function(cell){return [_c('dx-button',{staticClass:\"dx-link grid-name-link link-custom\",on:{\"click\":function($event){return _vm.viewLocation(cell.data.data.id)}}},[_vm._v(_vm._s(cell.data.value)+\"\\n      \")])]}},{key:\"active-template\",fn:function({data}){return [_c('div',{staticClass:\"table-pill\",class:`table-pill-${\n          data.data.activeStatus === 1 ? 'active' : 'inactive'\n        }`},[_vm._v(\"\\n        \"+_vm._s(data.data.activeStatus ? \"Active\" : \"Inactive\")+\"\\n      \")])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxSearchPanel',{attrs:{\"group-index\":0,\"visible\":true,\"width\":300}}),_c('DxExport',{attrs:{\"enabled\":true,\"group-index\":1}}),_c('DxColumnChooser',{attrs:{\"enabled\":true,\"mode\":\"dragAndDrop\"}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}}),_c('DxRemoteOperations',{attrs:{\"filtering\":false,\"paging\":false,\"sorting\":false,\"summary\":false,\"grouping\":false,\"group-paging\":false}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const createModel = () => {\n  return [\n    {\n      dataField: \"id\",\n      dataType: \"number\",\n      visible: false,\n      showInColumnChooser: false,\n    },\n    {\n      dataField: \"name\",\n      caption: \"Name\",\n      dataType: \"string\",\n      cellTemplate: \"name-template\",\n      allowHiding: false,\n    },\n    {\n      dataField: \"organisationName\",\n      caption: \"Organisation\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"addressLine1\",\n      caption: \"Address Line 1\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"addressLine2\",\n      caption: \"Address Line 2\",\n      visible: false,\n      dataType: \"string\",\n    },\n    {\n      dataField: \"city\",\n      caption: \"City\",\n      visible: false,\n      dataType: \"string\",\n    },\n    {\n      dataField: \"activeStatus\",\n      cellTemplate: \"active-template\",\n      caption: \"Active\",\n      dataType: \"string\",\n      headerFilter: {\n        dataSource: [\n          {\n            text: \"Active\",\n            value: 1,\n          },\n          {\n            text: \"Inactive\",\n            value: 0,\n          },\n        ],\n      },\n    },\n  ];\n};\n","<template>\n  <div>\n    <dx-data-grid\n      class=\"dx-card thin-column-chooser multi-select-grid-property\"\n      :ref=\"locationListRefKey\"\n      :show-borders=\"false\"\n      :data-source=\"dataSource\"\n      :remote-operations=\"true\"\n      :noDataText=\"noDataText\"\n      key-expr=\"id\"\n      :columnMinWidth=\"25\"\n      :columnAutoWidth=\"true\"\n      :columns=\"columns\"\n      :allow-column-reordering=\"true\"\n      :onToolbarPreparing=\"onDataGridToolbarPreparing\"\n    >\n      <dx-paging :page-size=\"10\" />\n      <dx-pager\n        :allowed-page-sizes=\"[5, 10, 25]\"\n        :show-page-size-selector=\"true\"\n        :show-info=\"true\"\n      />\n      <dx-filter-row :visible=\"true\" />\n      <DxHeaderFilter\n        :visible=\"true\"\n        :allowSearch=\"true\"\n      />\n      <DxSearchPanel\n        :group-index=\"0\"\n        :visible=\"true\"\n        :width=\"300\"\n      />\n      <DxExport\n        :enabled=\"true\"\n        :group-index=\"1\"\n      />\n      <DxColumnChooser\n        :enabled=\"true\"\n        mode=\"dragAndDrop\"\n      />\n      <DxColumnFixing :enabled=\"true\" />\n      <DxRemoteOperations\n        :filtering=\"false\"\n        :paging=\"false\"\n        :sorting=\"false\"\n        :summary=\"false\"\n        :grouping=\"false\"\n        :group-paging=\"false\"\n      />\n\n      <template #page-title-template>\n        <div class=\"page-title-container\">\n          <h1 class=\"page-title\">Location Management</h1>\n          <div class=\"page-title\">\n            The list of locations where your organisation's events are held.\n          </div>\n        </div>\n      </template>\n\n      <template #add-button-template>\n        <div>\n          <dx-button\n            v-if=\"\n              $can('create', $subjects.location.subject) &&\n              window.width > buttonHideWidth\n            \"\n            type=\"default\"\n            class=\"btn-primary\"\n            styling-mode=\"contained\"\n            @click=\"onAddLocationClicked\"\n            ><i class=\"fas fa-plus\" /> Create location</dx-button\n          >\n          <dx-button\n            v-if=\"\n              $can('create', $subjects.organisation.subject) &&\n              window.width <= buttonHideWidth\n            \"\n            type=\"default\"\n            class=\"btn-primary\"\n            styling-mode=\"contained\"\n            @click=\"onAddLocationClicked\"\n          >\n            <i class=\"fas fa-plus sml-create-btn-icon\" />\n          </dx-button>\n        </div>\n      </template>\n\n      <template #name-template=\"cell\">\n        <dx-button\n          class=\"dx-link grid-name-link link-custom\"\n          @click=\"viewLocation(cell.data.data.id)\"\n          >{{ cell.data.value }}\n        </dx-button>\n      </template>\n\n      <template #active-template=\"{data}\">\n        <div\n          class=\"table-pill\"\n          :class=\"`table-pill-${\n            data.data.activeStatus === 1 ? 'active' : 'inactive'\n          }`\"\n        >\n          {{ data.data.activeStatus ? \"Active\" : \"Inactive\" }}\n        </div>\n      </template>\n    </dx-data-grid>\n  </div>\n</template>\n\n<script>\nimport {mapActions} from \"vuex\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxExport,\n  DxColumnChooser,\n  DxRemoteOperations,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n  DxSearchPanel,\n} from \"devextreme-vue/data-grid\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {serializeLoadOptions} from \"../utils/load-options-serializer\";\nimport {createModel} from \"../components/locations/location-list-col-defs\";\nimport {filterOnlineVenue} from \"../common/helperFunctions\";\n\nexport default {\n  components: {\n    DxButton,\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxExport,\n    DxColumnChooser,\n    DxRemoteOperations,\n    DxPaging,\n    DxSearchPanel,\n  },\n  data() {\n    return {\n      dataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.load,\n        }),\n        pageSize: 25,\n        sort: {selector: \"name\", desc: false},\n      }),\n      columns: createModel({}),\n      noDataText: \"No data to display\",\n      locationListRefKey: \"orgListGrid\",\n      window: {\n        width: 0,\n        height: 0,\n      },\n      buttonHideWidth: 575,\n    };\n  },\n  computed: {},\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\"]),\n    async load(loadOptions) {\n      let response = await this.$http.get(`locations`, {\n        params: serializeLoadOptions(loadOptions),\n      });\n      return {\n        data: filterOnlineVenue(response.data.data),\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    onDataGridToolbarPreparing(e) {\n      let toolbarItems = e.toolbarOptions.items;\n      //https://stackoverflow.com/questions/5306680/move-an-array-element-from-one-array-position-to-another\n      toolbarItems.forEach(function (item) {\n        switch (item.name) {\n          case \"searchPanel\":\n            item.locateInMenu = \"auto\";\n            break;\n          case \"exportButton\":\n            item.locateInMenu = \"always\";\n            break;\n          case \"columnChooserButton\":\n            item.locateInMenu = \"always\";\n            break;\n        }\n      });\n      toolbarItems.unshift({\n        location: \"before\",\n        template: \"page-title-template\",\n      });\n\n      toolbarItems.push({\n        location: \"after\",\n        template: \"add-button-template\",\n      });\n    },\n    viewLocation(id) {\n      this.$router.push({\n        name: \"location-details\",\n        params: {\n          id: id,\n        },\n      });\n    },\n    onAddLocationClicked() {\n      this.$router.push({\n        name: \"location-details\",\n      });\n    },\n    handleResize() {\n      this.window.width = window.innerWidth;\n      this.window.height = window.innerHeight;\n    },\n  },\n  created() {\n    window.addEventListener(\"resize\", this.handleResize);\n    this.handleResize();\n  },\n  destroyed() {\n    window.removeEventListener(\"resize\", this.handleResize);\n  },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n\n.actions-container {\n  display: flex;\n  justify-content: flex-end;\n  margin-bottom: 10px;\n}\n\n.button-group {\n  text-align: center;\n\n  .dx-button {\n    width: 100%;\n  }\n\n  div + div {\n    margin-top: 5px;\n  }\n}\n\n@media (max-width: 425px) {\n  h1 {\n    word-spacing: 99999px;\n  }\n  .dx-datagrid-headers {\n    margin-top: 20px;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./locations-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./locations-list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./locations-list.vue?vue&type=template&id=466602ac&scoped=true\"\nimport script from \"./locations-list.vue?vue&type=script&lang=js\"\nexport * from \"./locations-list.vue?vue&type=script&lang=js\"\nimport style0 from \"./locations-list.vue?vue&type=style&index=0&id=466602ac&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"466602ac\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"title-back-container\"},[_c('div',{staticClass:\"page-back\"},[_c('dx-button',{staticClass:\"btn-back\",attrs:{\"icon\":\"fas fa-arrow-left\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onBackClicked}})],1),_c('div',{staticClass:\"page-title-container\"},[_c('div',[_c('p',{staticClass:\"page-breadcrumb\"},[_vm._v(\"\\n            User\\n            \"+_vm._s(_vm.isEditMode && _vm.userDetails && _vm.userDetails.fullName\n                ? ` > ${_vm.userDetails.fullName}`\n                : ``)+\"\\n          \")])]),_c('h1',{staticClass:\"page-title\"},[_vm._v(\"User Overview\")])])]),_c('div',{staticClass:\"action-section\"},[(_vm.userDetails && _vm.$can(_vm.userAction, _vm.$subjects.user.subject))?_c('dx-button',{staticClass:\"btn-primary fas fa-save\",attrs:{\"validation-group\":\"userDetails\",\"text\":\"Save User\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onSaveUserClicked}}):_vm._e(),(\n          _vm.userDetails &&\n          _vm.isEditMode &&\n          !_vm.isCurrentUser &&\n          _vm.$can('delete', _vm.$subjects.user.subject)\n        )?_c('dx-button',{staticClass:\"btn-primary btn-delete fas fa-trash-alt\",attrs:{\"type\":\"warning\",\"text\":\"Delete\",\"styling-mode\":\"contained\"},on:{\"click\":function($event){_vm.popupVisible = true}}}):_vm._e()],1)]),_c('div',[_c('dx-form',{attrs:{\"form-data\":_vm.userDetails,\"col-count\":2,\"show-validation-summary\":true,\"scrolling-enabled\":false,\"validation-group\":\"userDetails\",\"readOnly\":!_vm.$can(_vm.userAction, _vm.$subjects.user.subject)}},[_c('dx-item',{attrs:{\"item-type\":\"group\",\"caption\":\"Details\",\"col-count\":4,\"col-span\":2,\"css-class\":\"brand-border-top-form-group\"}},[_c('dx-simple-item',{attrs:{\"data-field\":\"email\",\"editor-options\":{\n            readOnly: _vm.isEmailDisabled,\n          }}},[_c('dx-label',{attrs:{\"text\":\"Email\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Email is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.email,\"message\":`Email is too long. Maximum allowed length is ${_vm.maxLength.email} characters`}}),_c('dx-email-rule',{attrs:{\"message\":`Email is invalid`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"firstName\"}},[_c('dx-label',{attrs:{\"text\":\"First Name\"}}),_c('dx-required-rule',{attrs:{\"message\":\"First name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`First name is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"lastName\"}},[_c('dx-label',{attrs:{\"text\":\"Last Name\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Last name is required\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Last name is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"role\",\"editor-type\":\"dxSelectBox\",\"editor-options\":{\n            ..._vm.defaultDropDownOptions,\n            dataSource: _vm.userRoles,\n            readOnly: _vm.isCurrentUser,\n            onValueChanged: _vm.onRoleChanged,\n          }}},[_c('dx-label',{attrs:{\"text\":\"Role\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Role is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"jobtitle\"}},[_c('dx-label',{attrs:{\"text\":\"Job Title\"}}),_c('dx-string-length-rule',{attrs:{\"max\":_vm.maxLength.name,\"message\":`Job-title is too long. Maximum allowed length is ${_vm.maxLength.name} characters`}})],1),_c('dx-simple-item',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('dx-drop-down-box',{ref:_vm.orgDropDownRef,attrs:{\"value\":_vm.accessLocations,\"display-value-formatter\":_vm.accessLocationsToString,\"defer-rendering\":false,\"show-clear-button\":true,\"resize-enabled\":\"false\",\"display-expr\":\"name\",\"stylingMode\":\"outlined\",\"value-expr\":\"id\",\"placeholder\":\"Select Organisations\",\"input-attr\":_vm.inputAttrOrg,\"readOnly\":!_vm.$can(_vm.userAction, _vm.$subjects.user.subject) ||\n                (_vm.isCurrentUser &&\n                  _vm.currentUser.roles.includes(_vm.roles.Admin.role)) ||\n                (_vm.userDetails.role == _vm.roles.GlobalAdmin &&\n                  _vm.userDetails.role == _vm.roles.Admin),\"disabled\":_vm.isOrgDisabled,\"on-enter-key\":_vm.handleOrgAccessKeydown},on:{\"update:value\":function($event){_vm.accessLocations=$event}},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('dx-data-grid',{attrs:{\"data-source\":_vm.orgDataSource,\"columns\":_vm.orgColumns,\"hover-state-enabled\":true,\"column-auto-width\":true,\"selected-row-keys\":_vm.selectedOrgKeys,\"height\":\"100%\"},on:{\"update:selectedRowKeys\":function($event){_vm.selectedOrgKeys=$event},\"update:selected-row-keys\":function($event){_vm.selectedOrgKeys=$event},\"selection-changed\":_vm.onOrgDropdownSelectionChanged}},[_c('dx-selection',{attrs:{\"mode\":\"multiple\",\"show-check-boxes-mode\":_vm.checkBoxMode}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('dx-scrolling',{attrs:{\"mode\":\"infinite\"}})],1)]},proxy:true}])},[_c('dx-validator',{attrs:{\"validation-group\":_vm.formValidationGroup}},[_c('dx-custom-rule',{attrs:{\"validation-callback\":_vm.validateOrganisations,\"message\":\"Organisation Access is required\",\"reevaluate\":true}})],1)],1)]},proxy:true}])},[_c('dx-label',{attrs:{\"text\":\"Organisation Access\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Organisation Access is required\"}})],1),_c('dx-simple-item',{attrs:{\"data-field\":\"activeStatus\",\"editor-type\":\"dxRadioGroup\",\"editor-options\":{\n            ..._vm.defaultDropDownOptions,\n            dataSource: _vm.activeStatuses,\n            readOnly: _vm.isCurrentUser,\n            layout: 'horizontal',\n          }}},[_c('dx-label',{attrs:{\"text\":\"Active Status\"}}),_c('dx-required-rule',{attrs:{\"message\":\"Active Status is required\"}})],1)],1)],1),_c('dx-tooltip',{attrs:{\"showEvent\":\"dxhoverstart\",\"hideEvent\":\"dxhoverend\",\"position\":\"top\",\"target\":\"label[class*='roleTooltip']\"}},[_c('div',{staticClass:\"tooltip-400-width\"},[_vm._v(\"\\n        General User: Includes access to view Events & Surveys, Insights, and\\n        Locations. \"),_c('strong',[_vm._v(\"Cannot\")]),_vm._v(\" create, upload, edit, or download\\n        any Illuminate data. \"),_c('br'),_vm._v(\"\\n        Organisation Admin: Includes access to all features within Illuminate,\\n        \"),_c('strong',[_vm._v(\"including\")]),_vm._v(\" User Management and Organisation\\n        Management.\\n      \")])])],1),_c('dx-load-panel',{attrs:{\"visible\":_vm.isProcessing,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isProcessing=$event}}}),_c('ConfirmDeletePopup',{attrs:{\"entityName\":_vm.userDetails && _vm.userDetails.fullName ? _vm.userDetails.fullName : '',\"titleName\":\"User\",\"onDelete\":_vm.deleteUserFunction,\"popupVisible\":_vm.popupVisible},on:{\"onPopupClosed\":function($event){_vm.popupVisible = false}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <div class=\"page-header\">\n      <div class=\"title-back-container\">\n        <div class=\"page-back\">\n          <dx-button\n            class=\"btn-back\"\n            icon=\"fas fa-arrow-left\"\n            styling-mode=\"contained\"\n            @click=\"onBackClicked\"\n          >\n          </dx-button>\n        </div>\n        <div class=\"page-title-container\">\n          <div>\n            <p class=\"page-breadcrumb\">\n              User\n              {{\n                isEditMode && userDetails && userDetails.fullName\n                  ? ` > ${userDetails.fullName}`\n                  : ``\n              }}\n            </p>\n          </div>\n          <h1 class=\"page-title\">User Overview</h1>\n        </div>\n      </div>\n      <div class=\"action-section\">\n        <dx-button\n          class=\"btn-primary fas fa-save\"\n          v-if=\"userDetails && $can(userAction, $subjects.user.subject)\"\n          validation-group=\"userDetails\"\n          text=\"Save User\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          :on-click=\"onSaveUserClicked\"\n        />\n        <dx-button\n          class=\"btn-primary btn-delete fas fa-trash-alt\"\n          v-if=\"\n            userDetails &&\n            isEditMode &&\n            !isCurrentUser &&\n            $can('delete', $subjects.user.subject)\n          \"\n          type=\"warning\"\n          text=\"Delete\"\n          styling-mode=\"contained\"\n          @click=\"popupVisible = true\"\n        />\n      </div>\n    </div>\n    <div>\n      <dx-form\n        :form-data=\"userDetails\"\n        :col-count=\"2\"\n        :show-validation-summary=\"true\"\n        :scrolling-enabled=\"false\"\n        validation-group=\"userDetails\"\n        :readOnly=\"!$can(userAction, $subjects.user.subject)\"\n      >\n        <dx-item\n          item-type=\"group\"\n          caption=\"Details\"\n          :col-count=\"4\"\n          :col-span=\"2\"\n          css-class=\"brand-border-top-form-group\"\n        >\n          <dx-simple-item\n            data-field=\"email\"\n            :editor-options=\"{\n              readOnly: isEmailDisabled,\n            }\"\n          >\n            <dx-label text=\"Email\" />\n            <dx-required-rule message=\"Email is required\" />\n            <dx-string-length-rule\n              :max=\"maxLength.email\"\n              :message=\"`Email is too long. Maximum allowed length is ${maxLength.email} characters`\"\n            />\n            <dx-email-rule :message=\"`Email is invalid`\" />\n          </dx-simple-item>\n\n          <dx-simple-item data-field=\"firstName\">\n            <dx-label text=\"First Name\" />\n            <dx-required-rule message=\"First name is required\" />\n            <dx-string-length-rule\n              :max=\"maxLength.name\"\n              :message=\"`First name is too long. Maximum allowed length is ${maxLength.name} characters`\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item data-field=\"lastName\">\n            <dx-label text=\"Last Name\" />\n            <dx-required-rule message=\"Last name is required\" />\n            <dx-string-length-rule\n              :max=\"maxLength.name\"\n              :message=\"`Last name is too long. Maximum allowed length is ${maxLength.name} characters`\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item\n            data-field=\"role\"\n            editor-type=\"dxSelectBox\"\n            :editor-options=\"{\n              ...defaultDropDownOptions,\n              dataSource: userRoles,\n              readOnly: isCurrentUser,\n              onValueChanged: onRoleChanged,\n            }\"\n          >\n            <dx-label text=\"Role\" />\n            <dx-required-rule message=\"Role is required\" />\n          </dx-simple-item>\n\n          <dx-simple-item data-field=\"jobtitle\">\n            <dx-label text=\"Job Title\" />\n\n            <dx-string-length-rule\n              :max=\"maxLength.name\"\n              :message=\"`Job-title is too long. Maximum allowed length is ${maxLength.name} characters`\"\n            />\n          </dx-simple-item>\n\n          <dx-simple-item>\n            <dx-label text=\"Organisation Access\" />\n\n            <template\n              #default\n              :ref=\"orgContainerRef\"\n            >\n              <dx-drop-down-box                \n                :value.sync=\"accessLocations\"\n                :display-value-formatter=\"accessLocationsToString\"\n                :defer-rendering=\"false\"\n                :show-clear-button=\"true\"\n                resize-enabled=\"false\"\n                display-expr=\"name\"\n                stylingMode=\"outlined\"\n                value-expr=\"id\"\n                placeholder=\"Select Organisations\"\n                :input-attr=\"inputAttrOrg\"\n                :ref=\"orgDropDownRef\"\n                :readOnly=\"\n                  !$can(userAction, $subjects.user.subject) ||\n                  (isCurrentUser &&\n                    currentUser.roles.includes(roles.Admin.role)) ||\n                  (userDetails.role == roles.GlobalAdmin &&\n                    userDetails.role == roles.Admin)\n                \"\n                :disabled=\"isOrgDisabled\"\n                :on-enter-key=\"handleOrgAccessKeydown\"\n              >\n                <template #content>\n                  <dx-data-grid\n                    :data-source=\"orgDataSource\"\n                    :columns=\"orgColumns\"\n                    :hover-state-enabled=\"true\"\n                    :column-auto-width=\"true\"\n                    :selected-row-keys.sync=\"selectedOrgKeys\"\n                    @selection-changed=\"onOrgDropdownSelectionChanged\"\n                    height=\"100%\"\n                  >\n                    <dx-selection\n                      mode=\"multiple\"\n                      :show-check-boxes-mode=\"checkBoxMode\"\n                    />\n                    <dx-filter-row :visible=\"true\" />\n                    <dx-scrolling mode=\"infinite\" />\n                  </dx-data-grid>\n                </template>\n                <dx-validator :validation-group=\"formValidationGroup\">\n                  <dx-custom-rule\n                    :validation-callback=\"validateOrganisations\"\n                    message=\"Organisation Access is required\"\n                    :reevaluate=\"true\"\n                  />\n                </dx-validator>\n              </dx-drop-down-box>\n            </template>\n            <dx-required-rule message=\"Organisation Access is required\" />\n          </dx-simple-item>\n          <dx-simple-item\n            data-field=\"activeStatus\"\n            editor-type=\"dxRadioGroup\"\n            :editor-options=\"{\n              ...defaultDropDownOptions,\n              dataSource: activeStatuses,\n              readOnly: isCurrentUser,\n              layout: 'horizontal',\n            }\"\n          >\n            <dx-label text=\"Active Status\" />\n            <dx-required-rule message=\"Active Status is required\" />\n          </dx-simple-item>\n        </dx-item>\n      </dx-form>\n      <dx-tooltip\n        showEvent=\"dxhoverstart\"\n        hideEvent=\"dxhoverend\"\n        position=\"top\"\n        target=\"label[class*='roleTooltip']\"\n      >\n        <div class=\"tooltip-400-width\">\n          General User: Includes access to view Events & Surveys, Insights, and\n          Locations. <strong>Cannot</strong> create, upload, edit, or download\n          any Illuminate data. <br />\n          Organisation Admin: Includes access to all features within Illuminate,\n          <strong>including</strong> User Management and Organisation\n          Management.\n        </div>\n      </dx-tooltip>\n    </div>\n\n    <dx-load-panel\n      :visible.sync=\"isProcessing\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n\n    <ConfirmDeletePopup\n      :entityName=\"\n        userDetails && userDetails.fullName ? userDetails.fullName : ''\n      \"\n      titleName=\"User\"\n      :onDelete=\"deleteUserFunction\"\n      :popupVisible=\"popupVisible\"\n      @onPopupClosed=\"popupVisible = false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapActions, mapState, mapGetters} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {\n  isNotEmpty,\n  objectEquals,\n  filterInactiveEntity,\n  deepCopyJson,\n} from \"../common/helperFunctions\";\nimport roles from \"../config/roles\";\nimport {userActiveState} from \"../common/constants\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\n\nimport DxForm, {\n  DxItem,\n  DxSimpleItem,\n  DxLabel,\n  DxRequiredRule,\n  DxEmailRule,\n  DxStringLengthRule,\n  DxCustomRule,\n} from \"devextreme-vue/form\";\nimport {\n  DxDataGrid,\n  DxSelection,\n  DxFilterRow,\n  DxScrolling,\n} from \"devextreme-vue/data-grid\";\nimport {DxDropDownBox} from \"devextreme-vue/drop-down-box\";\nimport {DxValidator} from \"devextreme-vue/validator\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport ConfirmDeletePopup from \"../components/confirm-delete-popup.vue\";\nimport $axios from \"../utils/axios-instance\";\nimport {fromResponse} from \"@/utils/error-message-extractor\";\nimport {DxTooltip} from \"devextreme-vue\";\n\nexport default {\n  components: {\n    DxButton,\n    DxForm,\n    DxItem,\n    DxSimpleItem,\n    DxLabel,\n    DxRequiredRule,\n    DxEmailRule,\n    DxStringLengthRule,\n    DxCustomRule,\n    DxDropDownBox,\n    DxDataGrid,\n    DxSelection,\n    DxFilterRow,\n    DxScrolling,\n    DxValidator,\n    DxLoadPanel,\n    ConfirmDeletePopup,\n    DxTooltip,\n  },\n  data() {\n    return {\n      maxLength: {\n        email: 255,\n        name: 75,\n      },\n      savedSuccessfully: false,\n      isCurrentUser: false,\n      initialUserDetailsObj: null,\n      popupVisible: false,\n      roles: roles,\n      defaultDropDownOptions: {\n        displayExpr: \"name\",\n        valueExpr: \"id\",\n        stylingMode: \"outlined\",\n        applyValueMode: \"instantly\",\n      },\n      activeStatuses: [userActiveState.Active, userActiveState.Disabled],\n      orgDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrgs,\n        }),\n      }),\n      accessLocations: [],\n      selectedOrgKeys: [],\n      orgDropDownRef: \"orgDropDown\",\n      orgColumns: [\n        {\n          dataField: \"name\",\n          caption: \"Organisation Name\",\n          sortOrder: \"asc\",\n        },\n      ],\n      checkBoxMode: \"always\",\n      formValidationGroup: \"userDetails\",\n      isOrgDisabled: false,\n      inputAttrOrg: { 'aria-label': 'Organisation access' }\n    };\n  },\n  computed: {\n    ...mapState(\"users\", [\"userDetails\"]),\n    ...mapState(\"auth\", {currentUser: \"user\"}),\n    ...mapGetters(\"users\", [\"isProcessing\"]),\n    isEditMode: function () {\n      return isNotEmpty(this.$route.params.id);\n    },\n    userAction: function () {\n      return this.isEditMode ? \"update\" : \"create\";\n    },\n    userRoles() {\n      if (!isNotEmpty(this.currentUser)) {\n        return [];\n      }\n\n      let roleDataSource = [];\n      Object.entries(roles).forEach((key) => {\n        // Admins cannot make Global Admins\n        if (\n          this.currentUser.roles.includes(roles.Admin.role) &&\n          key[0] === \"GlobalAdmin\"\n        ) {\n          return;\n        }\n        roleDataSource.push({name: key[1].display, id: key[1].id});\n      });\n\n      return roleDataSource;\n    },\n    selectedActiveState() {\n      return deepCopyJson(userActiveState.Active);\n    },\n    isEmailDisabled() {\n      if (this.isEditMode) {\n        return true;\n      }\n      return false;\n    },\n    orgDropDownInstance() {\n      return this.$refs[this.orgDropDownRef].instance;\n    },\n  },\n  created() {\n    if (!this.isEditMode) {\n      this.userDetails.activeStatus = userActiveState.Active.id;\n    }\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"users\", {\n      createUser: \"create\",\n      updateUser: \"update\",\n      deleteUser: \"delete\",\n      fetchUserDetails: \"fetchUserDetails\",\n      clearUserDetails: \"clear\",\n    }),\n    onBackClicked() {\n      this.$router.push({\n        name: \"users-list\",\n      });\n    },\n    preventNav(event) {\n      if (!this.areUnsavedChanges() || this.savedSuccessfully) return;\n      event.preventDefault();\n      event.returnValue = \"\";\n    },\n    areUnsavedChanges() {\n      let a = !objectEquals(this.userDetails, this.initialUserDetailsObj);\n      return a;\n    },\n    handleOrgAccessKeydown() {\n      // Toggle the dropdown on Enter key\n      this.orgDropDownInstance.option(\n        \"opened\",\n        !this.orgDropDownInstance.option(\"opened\"),\n      );\n    },\n    async onSaveUserClicked(e) {\n      let result = await e.validationGroup.validate();\n\n      if (!result.isValid) {\n        this.notifyError(\n          `Unable to save user. ${result.brokenRules.length} validation errors.`,\n        );\n        return;\n      }\n\n      try {\n        this.userDetails.accessLocations = this.accessLocations.map(\n          (x) => x.id,\n        );\n        this.userDetails.userName = this.userDetails.email;\n        if (!this.isEditMode) {\n          await this.createUser();\n        } else {\n          await this.updateUser();\n        }\n\n        this.notifySuccess(\n          `User successfully ${this.isEditMode ? \"updated\" : \"created\"}.`,\n        );\n        this.savedSuccessfully = true;\n        this.$router.push({\n          name: \"users-list\",\n        });\n      } catch (err) {\n        this.notifyError(`Unable to save user. ${fromResponse(err)}`);\n      }\n    },\n    async loadOrgs(loadOptions) {\n      let params = \"?\";\n      [\n        \"skip\",\n        \"take\",\n        \"sort\",\n        \"requireTotalCount\",\n        \"requireGroupCount\",\n        \"filter\",\n        \"totalSummary\",\n        \"group\",\n        \"groupSummary\",\n      ].forEach(function (i) {\n        if (i in loadOptions && isNotEmpty(loadOptions[i])) {\n          params += `${i}=${JSON.stringify(loadOptions[i])}&`;\n        }\n      });\n      params = params.slice(0, -1);\n      const response = await $axios.get(`organisations`, {params});\n      const json = deepCopyJson(response);\n      return filterInactiveEntity(json.data.data);\n    },\n    onOrgDropdownSelectionChanged(e) {\n      this.accessLocations = e.selectedRowsData;\n    },\n    accessLocationsToString() {\n      let locationStrings = this.accessLocations.map((x) => x.name);\n      return locationStrings.join(\", \");\n    },\n    onOrgDropDownOpened() {\n      let screenWidth = window.innerWidth;\n      let dropDownWidth =\n        screenWidth < 576\n          ? this.componentContainer(this.orgContainerRef).clientWidth\n          : 700;\n      this.$refs[this.orgDropDownRef].instance.option(\n        \"dropDownOptions.width\",\n        dropDownWidth,\n      );\n    },\n    validateOrganisations(e) {\n      // Must have at least one Org selected.\n      return !(e.value === null || e.value.length === 0);\n    },\n    async deleteUserFunction() {\n      try {\n        await this.deleteUser();\n\n        this.notifySuccess(`User successfully deleted.`);\n        this.$router.push({\n          name: \"users-list\",\n        });\n      } catch (err) {\n        this.notifyError(`Unable to delete user. ${fromResponse(err)}`);\n      }\n    },\n    cancel() {\n      this.$router.push({\n        name: \"users-list\",\n      });\n    },\n    onRoleChanged(e) {\n      if (e.value === roles.GlobalAdmin.id) {\n        this.accessLocations = [];\n        this.isOrgDisabled = true;\n      } else {\n        this.isOrgDisabled = false;\n      }\n    },\n  },\n  beforeMount() {\n    // https://austingil.com/prevent-browser-refresh-url-changes-route-navigation-vue/\n    window.addEventListener(\"beforeunload\", this.preventNav);\n    this.$once(\"hook:beforeDestroy\", () => {\n      window.removeEventListener(\"beforeunload\", this.preventNav);\n    });\n  },\n  mounted() {\n    document\n      .querySelector(\"label[for*='role']\")\n      .classList.add(\"tooltip\", \"roleTooltip\");\n    if (this.isEditMode) {\n      this.fetchUserDetails(this.$route.params.id).then((x) => {\n        this.accessLocations = x.accessLocations;\n        this.selectedOrgKeys = this.accessLocations.map((x) => x.id);\n        this.initialUserDetailsObj = deepCopyJson(x);\n        if (x.id === this.currentUser.id) {\n          this.isCurrentUser = true;\n        }\n      });\n    }\n  },\n  beforeDestroy() {\n    this.clearUserDetails();\n  },\n  beforeRouteLeave(to, from, next) {\n    if (!this.areUnsavedChanges() || this.savedSuccessfully) {\n      next();\n      return;\n    }\n\n    const answer = window.confirm(\n      \"Are you sure you would like to leave? You have unsaved changes.\",\n    );\n    if (answer) {\n      next();\n    } else {\n      next(false);\n    }\n  },\n};\n</script>\n<style lang=\"scss\" scoped></style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user-details.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user-details.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./user-details.vue?vue&type=template&id=67ade7c5&scoped=true\"\nimport script from \"./user-details.vue?vue&type=script&lang=js\"\nexport * from \"./user-details.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"67ade7c5\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('dx-data-grid',{ref:_vm.userListRefKey,staticClass:\"dx-card thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.dataSource,\"remote-operations\":true,\"noDataText\":_vm.noDataText,\"key-expr\":\"id\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true,\"onToolbarPreparing\":_vm.onDataGridToolbarPreparing},scopedSlots:_vm._u([{key:\"page-title-template\",fn:function(){return [_c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"User Management\")]),_c('div',{staticClass:\"page-title\"},[_vm._v(\"\\n          The list of users within your organisation(s)\\n        \")])])]},proxy:true},{key:\"name-template\",fn:function(cell){return [_c('dx-button',{staticClass:\"grid-name-link dx-link link-custom\",on:{\"click\":function($event){return _vm.viewUser(cell.data.data.id)}}},[_vm._v(_vm._s(cell.data.value)+\"\\n      \")])]}},{key:\"add-button-template\",fn:function(){return [_c('div',[(\n            _vm.$can('create', _vm.$subjects.user.subject) &&\n            _vm.window.width > _vm.buttonHideWidth\n          )?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddUserClicked}},[_c('i',{staticClass:\"fas fa-plus\"}),_vm._v(\" Create user\")]):_vm._e(),(\n            _vm.$can('create', _vm.$subjects.organisation.subject) &&\n            _vm.window.width <= _vm.buttonHideWidth\n          )?_c('dx-button',{staticClass:\"btn-primary\",attrs:{\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onAddUserClicked}},[_c('i',{staticClass:\"fas fa-plus sml-create-btn-icon\"})]):_vm._e()],1)]},proxy:true},{key:\"role-template\",fn:function({data}){return [_c('div',[_vm._v(\"\\n        \"+_vm._s(_vm.getRoleDisplay(data.data.appUserRole))+\"\\n      \")])]}},{key:\"active-template\",fn:function({data}){return [_c('div',{staticClass:\"table-pill\",class:`table-pill-${\n          data.data.activeState === 1 ? 'active' : 'inactive'\n        }`},[_vm._v(\"\\n        \"+_vm._s(data.data.activeState ? \"Active\" : \"Disabled\")+\"\\n      \")])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"show-page-size-selector\":true,\"allowed-page-sizes\":[5, 10, 25],\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxSearchPanel',{attrs:{\"group-index\":0,\"visible\":true,\"width\":300}}),_c('DxColumnChooser',{attrs:{\"enabled\":true,\"mode\":\"dragAndDrop\"}}),_c('DxExport',{attrs:{\"enabled\":true,\"group-index\":1}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}}),_c('DxRemoteOperations',{attrs:{\"filtering\":false,\"paging\":false,\"sorting\":false,\"summary\":false,\"grouping\":false,\"group-paging\":false}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import roles from \"../../config/roles\";\n\nexport const createModel = () => {\n  return [\n    {\n      dataField: \"id\",\n      dataType: \"number\",\n      visible: false,\n      showInColumnChooser: false,\n    },\n    {\n      dataField: \"email\",\n      caption: \"Email\",\n      dataType: \"string\",\n      sortIndex: \"1\",\n      sortOrder: \"asc\",\n      cellTemplate: \"name-template\",\n    },\n    {\n      dataField: \"firstName\",\n      caption: \"First Name\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"surname\",\n      caption: \"Last Name\",\n      dataType: \"string\",\n    },\n    {\n      dataField: \"appUserRole\",\n      caption: \"Role\",\n      cellTemplate: \"role-template\",\n      dataType: \"string\",\n      headerFilter: {\n        dataSource: [\n          {\n            text: roles.GlobalAdmin.display,\n            value: roles.GlobalAdmin.id,\n          },\n          {\n            text: roles.Admin.display,\n            value: roles.Admin.id,\n          },\n          {\n            text: roles.User.display,\n            value: roles.User.id,\n          },\n        ]\n      }\n    },\n    {\n      caption: \"Active\",\n      dataField: \"activeState\",\n      cellTemplate: \"active-template\",\n      dataType: \"string\",\n      headerFilter: {\n        dataSource: [\n          {\n            text: \"Active\",\n            value: 1,\n          },\n          {\n            text: \"Inactive\",\n            value: 0,\n          },\n        ]\n      }\n    },\n  ];\n};\n","<template>\n  <div>\n    <dx-data-grid\n      class=\"dx-card thin-column-chooser multi-select-grid-property\"\n      :ref=\"userListRefKey\"\n      :show-borders=\"false\"\n      :data-source=\"dataSource\"\n      :remote-operations=\"true\"\n      :noDataText=\"noDataText\"\n      key-expr=\"id\"\n      :columnMinWidth=\"25\"\n      :columnAutoWidth=\"true\"\n      :columns=\"columns\"\n      :allow-column-reordering=\"true\"\n      :onToolbarPreparing=\"onDataGridToolbarPreparing\"\n    >\n      <dx-paging :page-size=\"10\" />\n      <dx-pager\n        :show-page-size-selector=\"true\"\n        :allowed-page-sizes=\"[5, 10, 25]\"\n        :show-info=\"true\"\n      />\n      <dx-filter-row :visible=\"true\" />\n      <DxHeaderFilter\n        :visible=\"true\"\n        :allowSearch=\"true\"\n      />\n      <DxSearchPanel\n        :group-index=\"0\"\n        :visible=\"true\"\n        :width=\"300\"\n      />\n      <DxColumnChooser\n        :enabled=\"true\"\n        mode=\"dragAndDrop\"\n      />\n      <DxExport\n        :enabled=\"true\"\n        :group-index=\"1\"\n      />\n      <DxColumnFixing :enabled=\"true\" />\n      <DxRemoteOperations\n        :filtering=\"false\"\n        :paging=\"false\"\n        :sorting=\"false\"\n        :summary=\"false\"\n        :grouping=\"false\"\n        :group-paging=\"false\"\n      />\n\n      <template #page-title-template>\n        <div class=\"page-title-container\">\n          <h1 class=\"page-title\">User Management</h1>\n          <div class=\"page-title\">\n            The list of users within your organisation(s)\n          </div>\n        </div>\n      </template>\n\n      <template #name-template=\"cell\">\n        <dx-button\n          class=\"grid-name-link dx-link link-custom\"\n          @click=\"viewUser(cell.data.data.id)\"\n          >{{ cell.data.value }}\n        </dx-button>\n      </template>\n\n      <template #add-button-template>\n        <div>\n          <dx-button\n            v-if=\"\n              $can('create', $subjects.user.subject) &&\n              window.width > buttonHideWidth\n            \"\n            type=\"default\"\n            class=\"btn-primary\"\n            styling-mode=\"contained\"\n            @click=\"onAddUserClicked\"\n            ><i class=\"fas fa-plus\" /> Create user</dx-button\n          >\n\n          <dx-button\n            v-if=\"\n              $can('create', $subjects.organisation.subject) &&\n              window.width <= buttonHideWidth\n            \"\n            type=\"default\"\n            class=\"btn-primary\"\n            styling-mode=\"contained\"\n            @click=\"onAddUserClicked\"\n          >\n            <i class=\"fas fa-plus sml-create-btn-icon\" />\n          </dx-button>\n        </div>\n      </template>\n\n      <template #role-template=\"{data}\">\n        <div>\n          {{ getRoleDisplay(data.data.appUserRole) }}\n        </div>\n      </template>\n      <template #active-template=\"{data}\">\n        <div\n          class=\"table-pill\"\n          :class=\"`table-pill-${\n            data.data.activeState === 1 ? 'active' : 'inactive'\n          }`\"\n        >\n          {{ data.data.activeState ? \"Active\" : \"Disabled\" }}\n        </div>\n      </template>\n    </dx-data-grid>\n  </div>\n</template>\n\n<script>\nimport {mapActions} from \"vuex\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {\n  DxDataGrid,\n  DxPaging,\n  DxPager,\n  DxExport,\n  DxColumnChooser,\n  DxRemoteOperations,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxFilterRow,\n  DxSearchPanel,\n} from \"devextreme-vue/data-grid\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {serializeLoadOptions} from \"../utils/load-options-serializer\";\nimport {createModel} from \"../components/users/user-list-col-defs\";\nimport roles from \"../config/roles\";\n\nexport default {\n  components: {\n    DxButton,\n    DxDataGrid,\n    DxPaging,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxExport,\n    DxColumnChooser,\n    DxRemoteOperations,\n    DxSearchPanel,\n  },\n  data() {\n    return {\n      dataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.load,\n        }),\n\n        pageSize: 25,\n        sort: {selector: \"name\", desc: false},\n      }),\n      window: {\n        width: 0,\n        height: 0,\n      },\n      buttonHideWidth: 500,\n      columns: createModel({}),\n      noDataText: \"No data to display\",\n      userListRefKey: \"userListGrid\",\n    };\n  },\n  computed: {},\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\"]),\n    async load(loadOptions) {\n      let response = await this.$http.get(`users`, {\n        params: serializeLoadOptions(loadOptions),\n      });\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    onDataGridToolbarPreparing(e) {\n      let toolbarItems = e.toolbarOptions.items;\n      //https://stackoverflow.com/questions/5306680/move-an-array-element-from-one-array-position-to-another\n      toolbarItems.forEach(function (item) {\n        switch (item.name) {\n          case \"searchPanel\":\n            item.locateInMenu = \"auto\";\n            break;\n          case \"exportButton\":\n            item.locateInMenu = \"always\";\n            break;\n          case \"columnChooserButton\":\n            item.locateInMenu = \"always\";\n            break;\n        }\n      });\n      toolbarItems.unshift({\n        location: \"before\",\n        template: \"page-title-template\",\n      });\n\n      toolbarItems.push({\n        location: \"after\",\n        template: \"add-button-template\",\n      });\n    },\n    onAddUserClicked() {\n      this.$router.push({\n        name: \"user-details\",\n      });\n    },\n    viewUser(id) {\n      this.$router.push({\n        name: \"user-details\",\n        params: {\n          id: id,\n        },\n      });\n    },\n    getRoleDisplay(data) {\n      switch (data) {\n        case 0:\n          return roles.GlobalAdmin.display;\n        case 1:\n          return roles.Admin.display;\n        case 2:\n          return roles.User.display;\n      }\n    },\n    handleResize() {\n      this.window.width = window.innerWidth;\n      this.window.height = window.innerHeight;\n    },\n  },\n  created() {\n    window.addEventListener(\"resize\", this.handleResize);\n    this.handleResize();\n  },\n  destroyed() {\n    window.removeEventListener(\"resize\", this.handleResize);\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n.actions-container {\n  display: flex;\n  justify-content: flex-end;\n  margin-bottom: 10px;\n}\n\n@media (max-width: 400px) {\n  h1 {\n    word-spacing: 99999px;\n  }\n  .dx-datagrid-headers {\n    margin-top: 20px;\n  }\n}\n\n.button-group {\n  text-align: center;\n\n  .dx-button {\n    width: 100%;\n  }\n\n  div + div {\n    margin-top: 5px;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./users-list.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./users-list.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./users-list.vue?vue&type=template&id=51e41992&scoped=true\"\nimport script from \"./users-list.vue?vue&type=script&lang=js\"\nexport * from \"./users-list.vue?vue&type=script&lang=js\"\nimport style0 from \"./users-list.vue?vue&type=style&index=0&id=51e41992&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"51e41992\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-8\"},[_c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Privacy Policy\")]),_c('div',[_vm._v(\"Last updated: May 2023\")])]),_c('div',[_c('h2',[_vm._v(\"1 About this notice\")]),_c('p',[_vm._v(\"\\n        1.1 Arts Council England \\\"'\"),_c('strong',[_vm._v(\"we\")]),_vm._v(\"\\\",\\n        \\\"\"),_c('strong',[_vm._v(\"us\")]),_vm._v(\"\\\" or \\\"\"),_c('strong',[_vm._v(\"our\")]),_vm._v(\"\\\")\\n        is the controller and responsible for your personal data. We collect,\\n        store and use (process) certain limited information from audience\\n        members who attend performances at our NPO venues (\\n        \"),_c('strong',[_vm._v(\"\\\"Audience Member\")]),_vm._v(\" \\\"), the National Portfolio\\n        Organisations (the \\\"\"),_c('strong',[_vm._v(\"NPOs\")]),_vm._v(\"\\\") and other arts\\n        and cultural organisations to manage the online data collection and\\n        analysis platform and associated support services, otherwise known as\\n        Illuminate (the \\\"\"),_c('strong',[_vm._v(\"Platform\")]),_vm._v(\"\\\"), and fulfil our\\n        objects as set out in our Royal Charter. You can find our Royal\\n        Charter on our\\n        \"),_c('a',{attrs:{\"href\":\"https://www.artscouncil.org.uk/sites/default/files/download-file/Consolidated_Royal_Charter_2013.pdf\"}},[_vm._v(\"website\")]),_vm._v(\".\\n      \")]),_c('p',[_vm._v(\"\\n        1.2 This specific privacy notice tells you what to expect when we\\n        collect, use and store your personal data.\\n      \")]),_c('p',[_vm._v(\"\\n        1.3 It is important that you read this privacy notice in addition to\\n        our General Privacy Notice that we may provide on specific occasions\\n        when we are collecting or processing personal data about you so that\\n        you are fully aware of how and why we are using your data. This\\n        privacy notice supplements other notices and privacy policies and is\\n        not intended to override them. You can find our General Privacy Notice\\n        on our\\n        \"),_c('a',{attrs:{\"href\":\"https://www.artscouncil.org.uk/sites/default/files/download-file/ACE_General_Privacy_Notice_Feb_2020_0.pdf\"}},[_vm._v(\"website\")]),_vm._v(\".\\n      \")]),_c('p',[_vm._v(\"\\n        1.4 This specific privacy notice applies to personal data we may\\n        collect, create, receive, use and store when you complete a web-form\\n        or when you access the Platform.\\n      \")]),_c('p',[_vm._v(\"\\n        1.5 This specific privacy notice provides details of how you can\\n        exercise your rights under Data Protection Laws, which means the Data\\n        Protection Act 2018 (\"),_c('strong',[_vm._v(\"DPA 2018\")]),_vm._v(\") and the United Kingdom\\n        General Data Protection Regulation (\"),_c('strong',[_vm._v(\"UK GDPR\")]),_vm._v(\") or such\\n        other laws as may apply or come into force that regulate the\\n        collection, processing, and privacy of personal data.\\n      \")]),_c('h2',[_vm._v(\"2 Who we are\")]),_c('p',[_vm._v(\"\\n        2.1 We are committed to being transparent with you about how we\\n        collect, use and store (process) that information.\\n      \")]),_c('p',[_vm._v(\"\\n        2.2 If you have any questions about this privacy notice, including any\\n        requests to exercise your legal rights, please contact our Data\\n        Protection Officer using the contact details set out below.\\n      \")]),_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table\"},[_c('tr',[_c('td',[_vm._v(\"Data Controller\")]),_c('td',[_vm._v(\"\\n              Arts Council England\"),_c('br'),_vm._v(\"The Hive 49 Lever Street\"),_c('br'),_vm._v(\"Manchester\"),_c('br'),_vm._v(\"M1\\n              1FN\\n            \")])]),_c('tr',[_c('td',[_vm._v(\"Data Protection Officer\")]),_c('td',[_vm._v(\"\\n              David Bryant Arts Council\"),_c('br'),_vm._v(\"England The Hive 49 Lever\\n              Street\"),_c('br'),_vm._v(\"Manchester\"),_c('br'),_vm._v(\"M1 1FN\"),_c('br'),_vm._v(\"information@artscouncil.org.uk\\n            \")])])])]),_c('h2',[_vm._v(\"3 Your rights\")]),_c('p',[_vm._v(\"3.1 Under the UK GDPR, we must ensure that your personal data is:\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Treated fairly, lawfully and in a transparent manner\")])]),_c('li',[_c('p',[_vm._v(\"\\n            Only collected for specified, explicit and legitimate purposes\\n          \")])]),_c('li',[_c('p',[_vm._v(\"Adequate, relevant and limited to what is necessary\")])]),_c('li',[_c('p',[_vm._v(\"Accurate and, where necessary, kept up to date\")])]),_c('li',[_c('p',[_vm._v(\"Kept for no longer than is necessary\")])]),_c('li',[_c('p',[_vm._v(\"\\n            Kept securely and protected against unauthorised or unlawful\\n            processing, accidental loss, destruction or damage, using\\n            appropriate measures\\n          \")])])]),_c('p',[_vm._v(\"3.2 You have the right to:\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Be informed about our processing of your personal data\")])]),_c('li',[_c('p',[_vm._v(\"\\n            Request access to your personal data and information about how we\\n            process it\\n          \")])]),_c('li',[_c('p',[_vm._v(\"\\n            Request that your personal data is amended if inaccurate and that\\n            incomplete personal data is completed\\n          \")])]),_c('li',[_c('p',[_vm._v(\"Request the restriction or suppression of your personal data\")])]),_c('li',[_c('p',[_vm._v(\"Request the erasure or deletion of your personal data\")])]),_c('li',[_c('p',[_vm._v(\"\\n            Move, copy or transfer personal data (Data Portability) - where\\n            the processing is based on consent or for the performance of a\\n            contract; and when processing is carried out by automated means\\n          \")])]),_c('li',[_c('p',[_vm._v(\"Object to the processing of your personal data\")])]),_c('li',[_c('p',[_vm._v(\"Be informed about automated decision-making and profiling\")])]),_c('li',[_c('p',[_vm._v(\"\\n            Withdraw your consent to our processing of your personal data\\n            where our processing of your data is based on consent\\n          \")])])]),_c('p',[_vm._v(\"\\n        3.3 If you want to exercise one or more of your rights, please either:\\n      \")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"\\n            Email our Information Team at\\n            \"),_c('a',{attrs:{\"href\":\"mailto:information@artscouncil.org.uk\"}},[_vm._v(\"information@artscouncil.org.uk\")])])]),_c('li',[_c('p',[_vm._v(\"\\n            Write to our Information Team at Arts Council England, The Hive,\\n            49 Lever Street, Manchester M1 1FN\\n          \")])]),_c('li',[_c('p',[_vm._v(\"Call us on 0161 934 4317\")])])]),_c('p',[_vm._v(\"\\n        3.4 If you want to make a subject access request, please email our\\n        Information Team at:\\n        \"),_c('a',{attrs:{\"href\":\"mailto:FOI@artscouncil.org.uk\"}},[_vm._v(\"FOI@artscouncil.org.uk\")])]),_c('p',[_vm._v(\"\\n        3.5 Please note that we may need to take steps to verify your identify\\n        before considering your request if, as an example, you email or call\\n        us from an email address or telephone number that is not on our file.\\n      \")]),_c('h2',[_vm._v(\"4 What information do we collect?\")]),_c('p',[_vm._v(\"4.1 If you are an Audience Member\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"\\n            If you are an Audience Member, we will never ask you to provide\\n            personal information (i.e. information from which you or another\\n            living individual can be identified) when you complete a survey\\n            via our Platform.\\n          \")])]),_c('li',[_c('p',[_vm._v(\"\\n            The only personal data we may collect about you is technical data\\n            (e.g. your IP address).\\n          \")])])]),_c('p',[_vm._v(\"4.2 If you are an NPO or Arts Council England user\")]),_c('p',[_vm._v(\"\\n        We collect, store, and use (process) the following personal\\n        information about you:\\n      \")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"your name;\")])]),_c('li',[_c('p',[_vm._v(\"\\n            business contact information (e.g. your corporate email address);\\n          \")])]),_c('li',[_c('p',[_vm._v(\"job role; and\")])]),_c('li',[_c('p',[_vm._v(\"log-on credentials.\")])])]),_c('p',[_vm._v(\"\\n        We also collect technical data such as IP addresses for the purposes\\n        of monitoring the performance of our Platform.\\n      \")]),_c('h2',[_vm._v(\"5 How we collect this information?\")]),_c('p',[_vm._v(\"5.1 If you are a member of the public:\")]),_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table\"},[_c('tr',[_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"\\n              When you complete a survey through the link provided by one of\\n              our NPOs\\n            \")])]),_c('tr',[_c('td',[_vm._v(\"Why do we collect and process this information?\")]),_c('td',[_c('ul',[_c('li',[_vm._v(\"\\n                  For the purposes of improving the operation and usability of\\n                  our Platform\\n                \")])])])]),_c('tr',[_c('td',[_vm._v(\"Legal basis for processing\")]),_c('td',[_c('ul',[_c('li',[_vm._v(\"Legitimate Interests\")])])])]),_c('tr',[_c('td',[_vm._v(\"Is the data shared with a third party\")]),_c('td',[_c('p',[_vm._v(\"\\n                We may share the information you provide with third parties\\n                such as:\\n              \")]),_c('ul',[_c('li',[_vm._v(\"\\n                  Organisations that process data on our behalf and their\\n                  subcontractors\\n                \")])])])])])]),_c('p',[_vm._v(\"5.2 If you are an NPO authorised user:\")]),_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table\"},[_c('tr',[_c('td',{attrs:{\"colspan\":\"2\"}},[_vm._v(\"When you log-on to the Platform\")])]),_c('tr',[_c('td',[_vm._v(\"Why do we collect and process this information?\")]),_c('td',[_c('ul',[_c('li',[_vm._v(\"\\n                  To process and perform trend analysis on data uploaded onto\\n                  the Platform\\n                \")]),_c('li',[_vm._v(\"\\n                  For the purposes of improving the operation and usability of\\n                  our Platform\\n                \")])])])]),_c('tr',[_c('td',[_vm._v(\"Legal basis for processing\")]),_c('td',[_c('ul',[_c('li',[_vm._v(\"Performance of a Contract with your NPO\")]),_c('li',[_vm._v(\"Legitimate interests\")])])])]),_c('tr',[_c('td',[_vm._v(\"Is the data shared with a third party\")]),_c('td',[_c('p',[_vm._v(\"\\n                We may share the information you provide with third parties\\n                such as:\\n              \")]),_c('ul',[_c('li',[_vm._v(\"\\n                  Organisations that process data on our behalf and their\\n                  subcontractors\\n                \")])])])])])]),_c('h2',[_vm._v(\"6 Who has access to data?\")]),_c('p',[_vm._v(\"6.1 Your information may be shared internally with:\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"NPOs in relation to NPO authorised users data only; and\")])]),_c('li',[_c('p',[_vm._v(\"Our personnel.\")])])]),_c('p',[_vm._v(\"6.2 We may share your information externally with:\")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"Third parties that process data on our behalf; and\")])]),_c('li',[_c('p',[_vm._v(\"Third parties that support the Platform.\")])])]),_c('h2',[_vm._v(\"7 How do we protect data?\")]),_c('p',[_vm._v(\"\\n        7.1 We take the security of information, which includes your personal\\n        data, seriously. We have internal policies and controls in place to\\n        try to ensure that your data is not lost, accidentally destroyed,\\n        misused or disclosed, and is not accessed except by our employees in\\n        the performance of their duties and subject to the sharing of data\\n        with third parties.\\n      \")]),_c('p',[_vm._v(\"\\n        7.2 Where we engage third parties to process personal data on our\\n        behalf, they do so on the basis of our written instructions. Those\\n        third parties are under a duty of confidentiality to us and are\\n        obliged to implement appropriate technical and organisational measures\\n        to ensure the security of data.\\n      \")]),_c('h2',[_vm._v(\"8 International transfers\")]),_c('p',[_vm._v(\"8.1 We may transfer your personal data outside the UK.\")]),_c('p',[_vm._v(\"\\n        8.2 Whenever we transfer your personal data out of the UK, we ensure a\\n        similar degree of protection is afforded to it by ensuring at least\\n        one of the following safeguards is implemented:\\n      \")]),_c('ul',[_c('li',[_vm._v(\"\\n          We will only transfer your personal data to countries that have been\\n          deemed to provide an adequate level of protection for personal data.\\n        \")]),_c('li',[_vm._v(\"\\n          Where we use certain service providers, we may use specific\\n          contracts approved for use in the UK, which provide appropriate\\n          safeguards to ensure that your personal data has the same protection\\n          it has in the UK.\\n        \")])]),_c('p',[_vm._v(\"\\n        8.3 Please contact us if you want further information on the specific\\n        mechanism used by us when transferring your personal data out of the\\n        UK.\\n      \")]),_c('h2',[_vm._v(\"9 Cookies\")]),_c('p',[_vm._v(\"\\n        9.1 You can set your browser to refuse all or some browser cookies, or\\n        to alert you when websites or apps set or access cookies. For more\\n        information about the cookies we use, please see [insert link].\\n      \")]),_c('h2',[_vm._v(\"10 How long will we use your information for?\")]),_c('p',[_vm._v(\"10.1 Personal data is retained for seven years.\")]),_c('p',[_vm._v(\"\\n        10.2 We will only retain your personal information for as long as\\n        necessary to fulfil the purposes for which we collect it, including\\n        for the purposes of satisfying any legal, accounting or reporting\\n        requirements. We may retain your personal data for a longer period in\\n        the event of a complaint or if we reasonably believe there is a\\n        prospect of litigation in respect to our relationship with you.\\n      \")]),_c('p',[_vm._v(\"\\n        10.3 To determine the appropriate retention period for personal data,\\n        we consider:\\n      \")]),_c('ul',[_c('li',[_c('p',[_vm._v(\"The amount, nature and sensitivity of the personal data;\")])]),_c('li',[_c('p',[_vm._v(\"\\n            The potential risk of harm from unauthorised use or disclosure of\\n            your personal data;\\n          \")])]),_c('li',[_c('p',[_vm._v(\"\\n            The purposes for which we process your personal data and whether\\n            we can achieve those purposes through other means; and\\n          \")])]),_c('li',[_c('p',[_vm._v(\"\\n            The applicable legal, regulatory, tax, accounting or other\\n            requirements.\\n          \")])])]),_c('p',[_vm._v(\"\\n        10.4 After the retention period has elapsed, all data will be\\n        destroyed securely in line with our data destruction policy.\\n      \")]),_c('h2',[_vm._v(\"11 Automated decision-making\")]),_c('p',[_vm._v(\"\\n        We will not use any personal data submitted to the Platform for\\n        automated decision-making.\\n      \")]),_c('h2',[_vm._v(\"12 Changes to this specific privacy notice\")]),_c('p',[_vm._v(\"\\n        12.1 We keep our privacy notice under regular review. We reserve the\\n        right to update this specific privacy notice at any time.\\n      \")]),_c('p',[_vm._v(\"\\n        12.2 We will provide you with a new specific privacy notice when we\\n        make any substantial updates, which will be available on our intranet.\\n      \")]),_c('p',[_vm._v(\"\\n        12.3 We may also notify you in other ways from time to time about the\\n        processing of your personal information.\\n      \")]),_c('h2',[_vm._v(\"13 How to complain if you are unhappy\")]),_c('p',[_vm._v(\"\\n        13.1 We try to meet the highest standards when collecting and using\\n        personal data. For this reason, we take any complaints we receive\\n        about this very seriously. We encourage you to bring any complaints or\\n        issues to our attention if you think that our collection or use of\\n        your information is unfair, misleading or inappropriate. We would also\\n        welcome any suggestions for improving our procedures.\\n      \")]),_c('p',[_vm._v(\"\\n        13.2 If you are unhappy with the way we have processed your personal\\n        data or you have any other complaints in relation to this privacy\\n        notice, in the first instance, we would welcome the opportunity to\\n        discuss this with you and request that you make a complaint directly\\n        to us by contacting our Information team:\\n      \")]),_c('ul',[_c('li',[_vm._v(\"\\n          by email\\n          \"),_c('a',{attrs:{\"href\":\"mailto:Information@artscouncil.org.uk\"}},[_vm._v(\"Information@artscouncil.org.uk\")]),_vm._v(\"or in writing to Information team, Arts Council England, The Hive,\\n          49 Lever St, Manchester M1 1FN.\\n        \")])]),_c('p',[_vm._v(\"\\n        13.3 We will acknowledge your complaint within five working days and\\n        send you a full response within 20 working days. If we can't\\n        respond fully in this time, we will write and let you know why and\\n        tell you when you should get a full response.\\n      \")]),_c('p',[_vm._v(\"\\n        13.4 However you do have the right to make a complaint at any time to\\n        the Information Commissioner's Office (ICO):\\n      \")]),_c('ul',[_c('li',[_vm._v(\"\\n          Information Commissioner's Office\"),_c('br'),_vm._v(\"Wycliffe House, Water\\n          Lane Wilmslow,\"),_c('br'),_vm._v(\"Cheshire SK9 5AF\\n        \")])]),_c('p',[_c('a',{attrs:{\"href\":\"https://ico.org.uk/global/contact-us/\"}},[_vm._v(\"https://ico.org.uk/global/contact-us/\")])])])])])\n}]\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"row\">\n    <div class=\"col-xl-8\">\n      <div class=\"page-title-container\">\n        <h1 class=\"page-title\">Privacy Policy</h1>\n        <div>Last updated: May 2023</div>\n      </div>\n\n      <div>\n        <h2>1 About this notice</h2>\n        <p>\n          1.1 Arts Council England &quot;&#39;<strong>we</strong>&quot;,\n          &quot;<strong>us</strong>&quot; or &quot;<strong>our</strong>&quot;)\n          is the controller and responsible for your personal data. We collect,\n          store and use (process) certain limited information from audience\n          members who attend performances at our NPO venues (\n          <strong>&quot;Audience Member</strong> &quot;), the National Portfolio\n          Organisations (the &quot;<strong>NPOs</strong>&quot;) and other arts\n          and cultural organisations to manage the online data collection and\n          analysis platform and associated support services, otherwise known as\n          Illuminate (the &quot;<strong>Platform</strong>&quot;), and fulfil our\n          objects as set out in our Royal Charter. You can find our Royal\n          Charter on our\n          <a\n            href=\"https://www.artscouncil.org.uk/sites/default/files/download-file/Consolidated_Royal_Charter_2013.pdf\"\n            >website</a\n          >.\n        </p>\n        <p>\n          1.2 This specific privacy notice tells you what to expect when we\n          collect, use and store your personal data.\n        </p>\n        <p>\n          1.3 It is important that you read this privacy notice in addition to\n          our General Privacy Notice that we may provide on specific occasions\n          when we are collecting or processing personal data about you so that\n          you are fully aware of how and why we are using your data. This\n          privacy notice supplements other notices and privacy policies and is\n          not intended to override them. You can find our General Privacy Notice\n          on our\n          <a\n            href=\"https://www.artscouncil.org.uk/sites/default/files/download-file/ACE_General_Privacy_Notice_Feb_2020_0.pdf\"\n            >website</a\n          >.\n        </p>\n        <p>\n          1.4 This specific privacy notice applies to personal data we may\n          collect, create, receive, use and store when you complete a web-form\n          or when you access the Platform.\n        </p>\n        <p>\n          1.5 This specific privacy notice provides details of how you can\n          exercise your rights under Data Protection Laws, which means the Data\n          Protection Act 2018 (<strong>DPA 2018</strong>) and the United Kingdom\n          General Data Protection Regulation (<strong>UK GDPR</strong>) or such\n          other laws as may apply or come into force that regulate the\n          collection, processing, and privacy of personal data.\n        </p>\n        <h2>2 Who we are</h2>\n        <p>\n          2.1 We are committed to being transparent with you about how we\n          collect, use and store (process) that information.\n        </p>\n        <p>\n          2.2 If you have any questions about this privacy notice, including any\n          requests to exercise your legal rights, please contact our Data\n          Protection Officer using the contact details set out below.\n        </p>\n        <div class=\"table-responsive\">\n          <table class=\"table\">\n            <tr>\n              <td>Data Controller</td>\n              <td>\n                Arts Council England<br />The Hive 49 Lever Street<br />Manchester<br />M1\n                1FN\n              </td>\n            </tr>\n            <tr>\n              <td>Data Protection Officer</td>\n              <td>\n                David Bryant Arts Council<br />England The Hive 49 Lever\n                Street<br />Manchester<br />M1 1FN<br />information@artscouncil.org.uk\n              </td>\n            </tr>\n          </table>\n        </div>\n\n        <h2>3 Your rights</h2>\n        <p>3.1 Under the UK GDPR, we must ensure that your personal data is:</p>\n        <ul>\n          <li>\n            <p>Treated fairly, lawfully and in a transparent manner</p>\n          </li>\n\n          <li>\n            <p>\n              Only collected for specified, explicit and legitimate purposes\n            </p>\n          </li>\n          <li><p>Adequate, relevant and limited to what is necessary</p></li>\n          <li><p>Accurate and, where necessary, kept up to date</p></li>\n          <li><p>Kept for no longer than is necessary</p></li>\n          <li>\n            <p>\n              Kept securely and protected against unauthorised or unlawful\n              processing, accidental loss, destruction or damage, using\n              appropriate measures\n            </p>\n          </li>\n        </ul>\n        <p>3.2 You have the right to:</p>\n        <ul>\n          <li><p>Be informed about our processing of your personal data</p></li>\n          <li>\n            <p>\n              Request access to your personal data and information about how we\n              process it\n            </p>\n          </li>\n          <li>\n            <p>\n              Request that your personal data is amended if inaccurate and that\n              incomplete personal data is completed\n            </p>\n          </li>\n          <li>\n            <p>Request the restriction or suppression of your personal data</p>\n          </li>\n          <li><p>Request the erasure or deletion of your personal data</p></li>\n          <li>\n            <p>\n              Move, copy or transfer personal data (Data Portability) - where\n              the processing is based on consent or for the performance of a\n              contract; and when processing is carried out by automated means\n            </p>\n          </li>\n          <li><p>Object to the processing of your personal data</p></li>\n          <li>\n            <p>Be informed about automated decision-making and profiling</p>\n          </li>\n          <li>\n            <p>\n              Withdraw your consent to our processing of your personal data\n              where our processing of your data is based on consent\n            </p>\n          </li>\n        </ul>\n        <p>\n          3.3 If you want to exercise one or more of your rights, please either:\n        </p>\n        <ul>\n          <li>\n            <p>\n              Email our Information Team at\n              <a href=\"mailto:information@artscouncil.org.uk\"\n                >information@artscouncil.org.uk</a\n              >\n            </p>\n          </li>\n          <li>\n            <p>\n              Write to our Information Team at Arts Council England, The Hive,\n              49 Lever Street, Manchester M1 1FN\n            </p>\n          </li>\n          <li><p>Call us on 0161 934 4317</p></li>\n        </ul>\n        <p>\n          3.4 If you want to make a subject access request, please email our\n          Information Team at:\n          <a href=\"mailto:FOI@artscouncil.org.uk\">FOI@artscouncil.org.uk</a>\n        </p>\n        <p>\n          3.5 Please note that we may need to take steps to verify your identify\n          before considering your request if, as an example, you email or call\n          us from an email address or telephone number that is not on our file.\n        </p>\n        <h2>4 What information do we collect?</h2>\n        <p>4.1 If you are an Audience Member</p>\n        <ul>\n          <li>\n            <p>\n              If you are an Audience Member, we will never ask you to provide\n              personal information (i.e. information from which you or another\n              living individual can be identified) when you complete a survey\n              via our Platform.\n            </p>\n          </li>\n          <li>\n            <p>\n              The only personal data we may collect about you is technical data\n              (e.g. your IP address).\n            </p>\n          </li>\n        </ul>\n        <p>4.2 If you are an NPO or Arts Council England user</p>\n        <p>\n          We collect, store, and use (process) the following personal\n          information about you:\n        </p>\n        <ul>\n          <li><p>your name;</p></li>\n          <li>\n            <p>\n              business contact information (e.g. your corporate email address);\n            </p>\n          </li>\n          <li><p>job role; and</p></li>\n          <li><p>log-on credentials.</p></li>\n        </ul>\n        <p>\n          We also collect technical data such as IP addresses for the purposes\n          of monitoring the performance of our Platform.\n        </p>\n        <h2>5 How we collect this information?</h2>\n        <p>5.1 If you are a member of the public:</p>\n        <div class=\"table-responsive\">\n          <table class=\"table\">\n            <tr>\n              <td colspan=\"2\">\n                When you complete a survey through the link provided by one of\n                our NPOs\n              </td>\n            </tr>\n            <tr>\n              <td>Why do we collect and process this information?</td>\n              <td>\n                <ul>\n                  <li>\n                    For the purposes of improving the operation and usability of\n                    our Platform\n                  </li>\n                </ul>\n              </td>\n            </tr>\n            <tr>\n              <td>Legal basis for processing</td>\n              <td>\n                <ul>\n                  <li>Legitimate Interests</li>\n                </ul>\n              </td>\n            </tr>\n            <tr>\n              <td>Is the data shared with a third party</td>\n              <td>\n                <p>\n                  We may share the information you provide with third parties\n                  such as:\n                </p>\n                <ul>\n                  <li>\n                    Organisations that process data on our behalf and their\n                    subcontractors\n                  </li>\n                </ul>\n              </td>\n            </tr>\n          </table>\n        </div>\n\n        <p>5.2 If you are an NPO authorised user:</p>\n\n        <div class=\"table-responsive\">\n          <table class=\"table\">\n            <tr>\n              <td colspan=\"2\">When you log-on to the Platform</td>\n            </tr>\n            <tr>\n              <td>Why do we collect and process this information?</td>\n              <td>\n                <ul>\n                  <li>\n                    To process and perform trend analysis on data uploaded onto\n                    the Platform\n                  </li>\n                  <li>\n                    For the purposes of improving the operation and usability of\n                    our Platform\n                  </li>\n                </ul>\n              </td>\n            </tr>\n            <tr>\n              <td>Legal basis for processing</td>\n              <td>\n                <ul>\n                  <li>Performance of a Contract with your NPO</li>\n                  <li>Legitimate interests</li>\n                </ul>\n              </td>\n            </tr>\n            <tr>\n              <td>Is the data shared with a third party</td>\n              <td>\n                <p>\n                  We may share the information you provide with third parties\n                  such as:\n                </p>\n                <ul>\n                  <li>\n                    Organisations that process data on our behalf and their\n                    subcontractors\n                  </li>\n                </ul>\n              </td>\n            </tr>\n          </table>\n        </div>\n        <h2>6 Who has access to data?</h2>\n        <p>6.1 Your information may be shared internally with:</p>\n        <ul>\n          <li>\n            <p>NPOs in relation to NPO authorised users data only; and</p>\n          </li>\n          <li><p>Our personnel.</p></li>\n        </ul>\n        <p>6.2 We may share your information externally with:</p>\n        <ul>\n          <li><p>Third parties that process data on our behalf; and</p></li>\n          <li><p>Third parties that support the Platform.</p></li>\n        </ul>\n        <h2>7 How do we protect data?</h2>\n        <p>\n          7.1 We take the security of information, which includes your personal\n          data, seriously. We have internal policies and controls in place to\n          try to ensure that your data is not lost, accidentally destroyed,\n          misused or disclosed, and is not accessed except by our employees in\n          the performance of their duties and subject to the sharing of data\n          with third parties.\n        </p>\n        <p>\n          7.2 Where we engage third parties to process personal data on our\n          behalf, they do so on the basis of our written instructions. Those\n          third parties are under a duty of confidentiality to us and are\n          obliged to implement appropriate technical and organisational measures\n          to ensure the security of data.\n        </p>\n        <h2>8 International transfers</h2>\n        <p>8.1 We may transfer your personal data outside the UK.</p>\n        <p>\n          8.2 Whenever we transfer your personal data out of the UK, we ensure a\n          similar degree of protection is afforded to it by ensuring at least\n          one of the following safeguards is implemented:\n        </p>\n        <ul>\n          <li>\n            We will only transfer your personal data to countries that have been\n            deemed to provide an adequate level of protection for personal data.\n          </li>\n          <li>\n            Where we use certain service providers, we may use specific\n            contracts approved for use in the UK, which provide appropriate\n            safeguards to ensure that your personal data has the same protection\n            it has in the UK.\n          </li>\n        </ul>\n        <p>\n          8.3 Please contact us if you want further information on the specific\n          mechanism used by us when transferring your personal data out of the\n          UK.\n        </p>\n        <h2>9 Cookies</h2>\n        <p>\n          9.1 You can set your browser to refuse all or some browser cookies, or\n          to alert you when websites or apps set or access cookies. For more\n          information about the cookies we use, please see [insert link].\n        </p>\n        <h2>10 How long will we use your information for?</h2>\n        <p>10.1 Personal data is retained for seven years.</p>\n        <p>\n          10.2 We will only retain your personal information for as long as\n          necessary to fulfil the purposes for which we collect it, including\n          for the purposes of satisfying any legal, accounting or reporting\n          requirements. We may retain your personal data for a longer period in\n          the event of a complaint or if we reasonably believe there is a\n          prospect of litigation in respect to our relationship with you.\n        </p>\n        <p>\n          10.3 To determine the appropriate retention period for personal data,\n          we consider:\n        </p>\n        <ul>\n          <li>\n            <p>The amount, nature and sensitivity of the personal data;</p>\n          </li>\n          <li>\n            <p>\n              The potential risk of harm from unauthorised use or disclosure of\n              your personal data;\n            </p>\n          </li>\n          <li>\n            <p>\n              The purposes for which we process your personal data and whether\n              we can achieve those purposes through other means; and\n            </p>\n          </li>\n          <li>\n            <p>\n              The applicable legal, regulatory, tax, accounting or other\n              requirements.\n            </p>\n          </li>\n        </ul>\n        <p>\n          10.4 After the retention period has elapsed, all data will be\n          destroyed securely in line with our data destruction policy.\n        </p>\n        <h2>11 Automated decision-making</h2>\n        <p>\n          We will not use any personal data submitted to the Platform for\n          automated decision-making.\n        </p>\n        <h2>12 Changes to this specific privacy notice</h2>\n        <p>\n          12.1 We keep our privacy notice under regular review. We reserve the\n          right to update this specific privacy notice at any time.\n        </p>\n        <p>\n          12.2 We will provide you with a new specific privacy notice when we\n          make any substantial updates, which will be available on our intranet.\n        </p>\n        <p>\n          12.3 We may also notify you in other ways from time to time about the\n          processing of your personal information.\n        </p>\n        <h2>13 How to complain if you are unhappy</h2>\n        <p>\n          13.1 We try to meet the highest standards when collecting and using\n          personal data. For this reason, we take any complaints we receive\n          about this very seriously. We encourage you to bring any complaints or\n          issues to our attention if you think that our collection or use of\n          your information is unfair, misleading or inappropriate. We would also\n          welcome any suggestions for improving our procedures.\n        </p>\n        <p>\n          13.2 If you are unhappy with the way we have processed your personal\n          data or you have any other complaints in relation to this privacy\n          notice, in the first instance, we would welcome the opportunity to\n          discuss this with you and request that you make a complaint directly\n          to us by contacting our Information team:\n        </p>\n        <ul>\n          <li>\n            by email\n            <a href=\"mailto:Information@artscouncil.org.uk\"\n              >Information@artscouncil.org.uk</a\n            >or in writing to Information team, Arts Council England, The Hive,\n            49 Lever St, Manchester M1 1FN.\n          </li>\n        </ul>\n        <p>\n          13.3 We will acknowledge your complaint within five working days and\n          send you a full response within 20 working days. If we can&#39;t\n          respond fully in this time, we will write and let you know why and\n          tell you when you should get a full response.\n        </p>\n        <p>\n          13.4 However you do have the right to make a complaint at any time to\n          the Information Commissioner&#39;s Office (ICO):\n        </p>\n        <ul>\n          <li>\n            Information Commissioner&#39;s Office<br />Wycliffe House, Water\n            Lane Wilmslow,<br />Cheshire SK9 5AF\n          </li>\n        </ul>\n        <p>\n          <a href=\"https://ico.org.uk/global/contact-us/\"\n            >https://ico.org.uk/global/contact-us/</a\n          >\n        </p>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport notify from \"../mixins/notify\";\n\nexport default {\n  props: {\n    title: String,\n    isXSmall: Boolean,\n    isSmall: Boolean,\n    isXLarge: Boolean,\n  },\n  mixins: [notify],\n};\n</script>\n<style scoped lang=\"scss\">\n@import \"../themes/generated/variables.base.scss\";\n\n.table th,\n.table td {\n  border: 1px solid #dee2e6;\n}\n\nh2 {\n  display: inline-block;\n  margin: 0;\n  margin-top: 6px;\n}\n\nul {\n  li {\n    margin-bottom: 12px;\n  }\n}\n\ntable {\n  margin-top: 12px;\n  margin-bottom: 12px;\n  border-collapse: collapse;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./privacy-policy.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./privacy-policy.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./privacy-policy.vue?vue&type=template&id=2b67df54&scoped=true\"\nimport script from \"./privacy-policy.vue?vue&type=script&lang=js\"\nexport * from \"./privacy-policy.vue?vue&type=script&lang=js\"\nimport style0 from \"./privacy-policy.vue?vue&type=style&index=0&id=2b67df54&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2b67df54\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-xl-8\"},[_c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Cookie Notice\")])]),_c('p',[_vm._v(\"Our Platform uses cookies to distinguish you from other users of our Platform. This helps us to provide you with a good experience when you use our Platform and also allows us to improve it.\")]),_c('p',[_vm._v(\"A cookie is a small file of letters and numbers that we store on your browser or the hard drive of your computer if you agree. Cookies contain information that is transferred to your computer's hard drive.\")]),_c('p',[_vm._v(\"We use the following cookies:\")]),_c('ul',[_c('li',[_vm._v(\"Strictly necessary cookies. These are cookies that are required for the operation of our Platform. They include, for example, cookies that enable you to log into secure areas of our Platform.\")]),_c('li',[_vm._v(\"Analytical or performance cookies. These allow us to recognise and count the number of visitors and to see how visitors move around our Platform when they are using it. This helps us to improve the way our Platform works, for example, by ensuring that users are finding what they are looking for easily.\")]),_c('li',[_vm._v(\"Functionality cookies. These are used to recognise you when you return to our Platform. This enables us to personalise our content for you, greet you by name and remember your preferences (for example, your choice of language or region).\")])]),_c('p',[_vm._v(\"You can find more information about the individual cookies we use and the purposes for which we use them in the table below:\")]),_c('div',{staticClass:\"table-responsive\"},[_c('table',{staticClass:\"table\"},[_c('tr',[_c('th',[_vm._v(\"Name\")]),_c('th',[_vm._v(\"First or third party?\")]),_c('th',[_vm._v(\"Duration\")]),_c('th',[_vm._v(\"Description\")]),_c('th',[_vm._v(\"Information shared with\")])]),_c('tr',[_c('td',[_vm._v(\"nlbi_xxxxx\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"Until the end of the session\")]),_c('td',[_vm._v(\"\\n                        Incapsula DDoS Protection and Web Application Firewall: Load balancing cookie. To ensure requests by a client are sent to the same origin server.\\n                    \")]),_c('td',[_vm._v(\"PwC\")])]),_c('tr',[_c('td',[_vm._v(\"incap_ses_xxxxx\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"Until the end of the session\")]),_c('td',[_vm._v(\"\\n                        This cookie is set to allow a visitor to receive site content from one out of multiple servers as the visitor browses the site. This allows the visitor's session to be maintained.\\n                    \")]),_c('td',[_vm._v(\"PwC\")])]),_c('tr',[_c('td',[_vm._v(\"visid_incap_xxxxx\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"1 year\")]),_c('td',[_vm._v(\"\\n                        This cookie is from the incapsula CDN and helps us with reliability, security and the performance of our site.\\n                    \")]),_c('td',[_vm._v(\"PwC\")])]),_c('tr',[_c('td',[_vm._v(\".AspNetCore.Antiforgery.xxxxx\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"Until the end of the session\")]),_c('td',[_vm._v(\"\\n                        Used to prevent cross-site request forgery attacks (XSRF/CSRF).\\n                    \")]),_c('td',[_vm._v(\"PwC\")])]),_c('tr',[_c('td',[_vm._v(\".AspNetCore.Identity.Application\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"Until the end of the session / 14 days (if remember me is selected)\")]),_c('td',[_vm._v(\"\\n                        Used for authentication to check the user is logged in.\\n                    \")]),_c('td',[_vm._v(\"PwC\")])]),_c('tr',[_c('td',[_vm._v(\"idsrv.session\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"Until the end of the session\")]),_c('td',[_vm._v(\"\\n                        Used as part of authentication to maintain the current session.\\n                    \")]),_c('td',[_vm._v(\"PwC\")])]),_c('tr',[_c('td',[_vm._v(\"Identity.TwoFactorUserId\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"Until the end of the session\")]),_c('td',[_vm._v(\"\\n                        Used during two factor authentication to validate the user.\\n                    \")]),_c('td',[_vm._v(\"PwC\")])]),_c('tr',[_c('td',[_vm._v(\"Identity.TwoFactorRememberMe\")]),_c('td',[_vm._v(\"First party\")]),_c('td',[_vm._v(\"14 days\")]),_c('td',[_vm._v(\"\\n                        Used to prevent requirement for subsequent two factor authentication on this device.\\n                    \")]),_c('td',[_vm._v(\"PwC\")])])])]),_c('p',[_vm._v(\"We do not share the information collected by the cookies with any third parties.\")]),_c('h2',[_vm._v(\"Managing cookies on your device\")]),_c('p',[_vm._v(\"You can control and manage cookies using your browser (see below). Please note that removing or blocking cookies can impact your user experience and some functionality may no longer be available.\")]),_c('h2',[_vm._v(\"Using your browser to control cookies\")]),_c('p',[_vm._v(\"Most browsers allow you to view, manage, delete and block cookies for a website. Be aware that if you delete all cookies then any preferences you have set will be lost, including the ability to opt-out from cookies as this function itself requires placement of an opt out cookie on your device. Guidance on how to control cookies for common browsers is linked below.\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://support.google.com/chrome/answer/95647?co=GENIE.Platform%3DDesktop&hl=en\"}},[_vm._v(\"Google Chrome\")])]),_c('p',[_c('a',{attrs:{\"href\":\"https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences\"}},[_vm._v(\"Mozilla Firefox\")])]),_c('p',[_c('a',{attrs:{\"href\":\"https://support.apple.com/en-us/HT201265\"}},[_vm._v(\"MacOS Safari\")])]),_c('p',[_c('a',{attrs:{\"href\":\"https://support.microsoft.com/en-us/help/17442/windows-internet-explorer-delete-manage-cookies\"}},[_vm._v(\"Microsoft Internet Explorer\")])]),_c('p',[_vm._v(\"\\n            For information on additional browsers and device types please see \"),_c('a',{attrs:{\"href\":\"http://www.aboutcookies.org/\"}},[_vm._v(\"http://www.aboutcookies.org/\")]),_vm._v(\" or \"),_c('a',{attrs:{\"href\":\"http://www.cookiecentral.com/faq/\"}},[_vm._v(\"http://www.cookiecentral.com/faq/\")]),_vm._v(\".\\n        \")])])])\n}]\n\nexport { render, staticRenderFns }","<template>\n    <div class=\"row\">\n        <div class=\"col-xl-8\">\n            <div class=\"page-title-container\">\n                <h1 class=\"page-title\">Cookie Notice</h1>\n            </div>\n            <p>Our Platform uses cookies to distinguish you from other users of our Platform. This helps us to provide you with a good experience when you use our Platform and also allows us to improve it.</p>\n            <p>A cookie is a small file of letters and numbers that we store on your browser or the hard drive of your computer if you agree. Cookies contain information that is transferred to your computer's hard drive.</p>\n            <p>We use the following cookies:</p>\n            <ul>\n                <li>Strictly necessary cookies. These are cookies that are required for the operation of our Platform. They include, for example, cookies that enable you to log into secure areas of our Platform.</li>\n                <li>Analytical or performance cookies. These allow us to recognise and count the number of visitors and to see how visitors move around our Platform when they are using it. This helps us to improve the way our Platform works, for example, by ensuring that users are finding what they are looking for easily.</li>\n                <li>Functionality cookies. These are used to recognise you when you return to our Platform. This enables us to personalise our content for you, greet you by name and remember your preferences (for example, your choice of language or region).</li>\n            </ul>\n            <p>You can find more information about the individual cookies we use and the purposes for which we use them in the table below:</p>\n            <div class=\"table-responsive\">\n                <table class=\"table\">\n                    <tr>\n                        <th>Name</th>\n                        <th>First or third party?</th>\n                        <th>Duration</th>\n                        <th>Description</th>\n                        <th>Information shared with</th>\n                    </tr>\n                    <tr>\n                        <td>nlbi_xxxxx</td>\n                        <td>First party</td>\n                        <td>Until the end of the session</td>\n                        <td>\n                            Incapsula DDoS Protection and Web Application Firewall: Load balancing cookie. To ensure requests by a client are sent to the same origin server.\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                    <tr>\n                        <td>incap_ses_xxxxx</td>\n                        <td>First party</td>\n                        <td>Until the end of the session</td>\n                        <td>\n                            This cookie is set to allow a visitor to receive site content from one out of multiple servers as the visitor browses the site. This allows the visitor's session to be maintained.\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                    <tr>\n                        <td>visid_incap_xxxxx</td>\n                        <td>First party</td>\n                        <td>1 year</td>\n                        <td>\n                            This cookie is from the incapsula CDN and helps us with reliability, security and the performance of our site.\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                    <tr>\n                        <td>.AspNetCore.Antiforgery.xxxxx</td>\n                        <td>First party</td>\n                        <td>Until the end of the session</td>\n                        <td>\n                            Used to prevent cross-site request forgery attacks (XSRF/CSRF).\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                    <tr>\n                        <td>.AspNetCore.Identity.Application</td>\n                        <td>First party</td>\n                        <td>Until the end of the session / 14 days (if remember me is selected)</td>\n                        <td>\n                            Used for authentication to check the user is logged in.\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                    <tr>\n                        <td>idsrv.session</td>\n                        <td>First party</td>\n                        <td>Until the end of the session</td>\n                        <td>\n                            Used as part of authentication to maintain the current session.\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                    <tr>\n                        <td>Identity.TwoFactorUserId</td>\n                        <td>First party</td>\n                        <td>Until the end of the session</td>\n                        <td>\n                            Used during two factor authentication to validate the user.\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                    <tr>\n                        <td>Identity.TwoFactorRememberMe</td>\n                        <td>First party</td>\n                        <td>14 days</td>\n                        <td>\n                            Used to prevent requirement for subsequent two factor authentication on this device.\n                        </td>\n                        <td>PwC</td>\n                    </tr>\n                </table>\n            </div>\n            <p>We do not share the information collected by the cookies with any third parties.</p>\n            <h2>Managing cookies on your device</h2>\n            <p>You can control and manage cookies using your browser (see below). Please note that removing or blocking cookies can impact your user experience and some functionality may no longer be available.</p>\n            <h2>Using your browser to control cookies</h2>\n            <p>Most browsers allow you to view, manage, delete and block cookies for a website. Be aware that if you delete all cookies then any preferences you have set will be lost, including the ability to opt-out from cookies as this function itself requires placement of an opt out cookie on your device. Guidance on how to control cookies for common browsers is linked below.</p>\n            <p><a href=\"https://support.google.com/chrome/answer/95647?co=GENIE.Platform%3DDesktop&hl=en\">Google Chrome</a></p>\n            <p><a href=\"https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences\">Mozilla Firefox</a></p>\n            <p><a href=\"https://support.apple.com/en-us/HT201265\">MacOS Safari</a></p>\n            <p><a href=\"https://support.microsoft.com/en-us/help/17442/windows-internet-explorer-delete-manage-cookies\">Microsoft Internet Explorer</a></p>\n            <p>\n                For information on additional browsers and device types please see <a href=\"http://www.aboutcookies.org/\">http://www.aboutcookies.org/</a> or <a href=\"http://www.cookiecentral.com/faq/\">http://www.cookiecentral.com/faq/</a>.\n            </p>\n        </div>\n    </div>\n</template>\n\n<script>\n    import notify from \"../mixins/notify\";\n\n    export default {\n        props: {\n            title: String,\n            isXSmall: Boolean,\n            isSmall: Boolean,\n            isXLarge: Boolean,\n        },\n        mixins: [notify],\n    };\n</script>\n<style scoped lang=\"scss\">\n    @import \"../themes/generated/variables.base.scss\";\n\n    h2 {\n        display: inline-block;\n        margin: 0;\n        margin-top: 6px;\n    }\n\n    tr th {\n        text-align: left;\n        font-weight: bold;\n    }\n\n    ul { \n        padding-top: 8px;\n        padding-bottom: 2px;\n\n        li {\n            margin-bottom: 12px;\n        }\n    }\n\n    table {\n        margin-top: 12px;\n        margin-bottom: 12px;\n        border-collapse: collapse;\n    }\n\n    \n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cookie-notice.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cookie-notice.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./cookie-notice.vue?vue&type=template&id=0d4856ec&scoped=true\"\nimport script from \"./cookie-notice.vue?vue&type=script&lang=js\"\nexport * from \"./cookie-notice.vue?vue&type=script&lang=js\"\nimport style0 from \"./cookie-notice.vue?vue&type=style&index=0&id=0d4856ec&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"0d4856ec\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"box-office-page-container\"},[_c('div',{staticClass:\"box-office-upload-container\"},[_vm._m(0),_c('div',{staticClass:\"content-block\"},[_vm._m(1),_c('div',{staticClass:\"content-block\"},[_c('dx-validation-group',{ref:_vm.organisationRefKey},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',[_c('h2',[_c('label',{staticClass:\"required\"},[_vm._v(\" Organisation \")])])]),_c('dx-lookup',{ref:_vm.orgLookupRef,attrs:{\"data-source\":_vm.orgDataSource,\"display-expr\":\"name\",\"value-expr\":\"id\",\"search-enabled\":true,\"search-mode\":\"contains\",\"search-expr\":['name'],\"min-search-length\":2,\"show-data-before-search\":true,\"search-placeholder\":\"Select Organisation...\",\"value\":_vm.selectedOrganisation,\"defer-rendering\":false,\"inputAttr\":{ 'aria-label': 'Organisation' }},on:{\"value-changed\":_vm.onValueChanged}},[_c('dx-validator',{ref:_vm.orgLookupValidatorRef},[_c('dx-required-rule',{attrs:{\"message\":\"Organisation Access is required\"}})],1)],1)],1)])])],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',[_vm._m(2),_c('div',{staticClass:\"mb-3\"},[_vm._v(\"\\n              The upload can take several minutes, however once the process\\n              has initiated you can navigate to other pages within Illuminate\\n              to complete other tasks. Or you can log out of Illuminate and\\n              come back at a later date. For details of your recent uploads,\\n              please take a look at the table on the right handside of the\\n              page.\\n            \")]),_c('dx-button',{staticClass:\"btn-primary btn-confirm upload-template-btn\",attrs:{\"text\":\"Download template\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.downloadTemplateFile}})],1),_c('div',{staticClass:\"upload-container\"},[_c('i',{staticClass:\"fas fa-upload\"}),_c('dx-file-uploader',{ref:_vm.fileUploaderRef,attrs:{\"multiple\":false,\"allowed-file-extensions\":_vm.allowedFileExtensions,\"accept\":\"text/csv\",\"name\":\"file\",\"invalid-file-extension-message\":\"File Type is not allowed\",\"upload-mode\":\"useButtons\",\"upload-url\":_vm.uploadUrl,\"upload-headers\":_vm.getUploadHeaders()},on:{\"uploaded\":_vm.onUploadSuccessful,\"upload-started\":_vm.onUploadStarted,\"upload-error\":_vm.onUploadError,\"value-changed\":_vm.attachmentsValueChanged}}),_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.isLoading)?_c('div',{staticClass:\"entity-warning red\"},[_c('p',[_vm._v(\"Data import in progress. Please wait...\")])]):_vm._e(),(_vm.isImportSuccess)?_c('div',{staticClass:\"entity-warning green\"},[_c('strong',[_vm._v(\" File accepted for import \")])]):_vm._e(),(_vm.isImportFailure)?_c('div',{staticClass:\"entity-warning fail\"},[_c('strong',[_vm._v(\"Data import failed\")]),_vm._l((_vm.failureMessages),function(msg){return _c('li',{key:msg},[_vm._v(\"\\n                      \"+_vm._s(msg)+\"\\n                    \")])})],2):_vm._e()])])])],1)])])])]),_c('div',{staticClass:\"box-office-grid-container\"},[_c('dx-data-grid',{ref:_vm.uploadsListRefKey,staticClass:\"dx-card thin-column-chooser multi-select-grid-property no-active-status-list\",attrs:{\"show-borders\":false,\"data-source\":_vm.uploadsDataSource,\"remote-operations\":true,\"noDataText\":_vm.noDataText,\"key-expr\":\"id\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":true,\"onToolbarPreparing\":_vm.onDataGridToolbarPreparing},scopedSlots:_vm._u([{key:\"page-title-template\",fn:function(){return [_c('div',{staticClass:\"page-title-container\"},[_c('h2',{staticClass:\"page-subtitle\"},[_vm._v(\"Upload status\")])])]},proxy:true},{key:\"result-template\",fn:function({data}){return [_c('div',{staticClass:\"result-col\"},[(data.data.result === null)?_c('div',[_c('span',{staticClass:\"processing-label\"},[_vm._v(\"Processing\")]),_c('i',{staticClass:\"fas fa-spinner fa-spin blue-icon\"})]):_c('div',[_c('span',[_vm._v(_vm._s(data.data.result.messages[0])+\" \")]),_c('i',{staticClass:\"success-status-label\",class:data.data.result.status === 'failed'\n                  ? 'fas fa-times red-icon'\n                  : `fas fa-check green-icon`}),_vm._l((data.data.result.messages.slice(1)),function(msg){return _c('div',{key:msg},[_c('span',[_vm._v(_vm._s(msg)+\" \")])])})],2)])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('dx-filter-row',{attrs:{\"visible\":true}}),_c('DxHeaderFilter',{attrs:{\"visible\":true,\"allowSearch\":true}}),_c('DxSearchPanel',{attrs:{\"group-index\":0,\"visible\":true,\"width\":300}}),_c('DxExport',{attrs:{\"enabled\":false,\"group-index\":1}}),_c('DxColumnChooser',{attrs:{\"enabled\":true,\"mode\":\"dragAndDrop\"}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}}),_c('DxRemoteOperations',{attrs:{\"filtering\":false,\"paging\":false,\"sorting\":false,\"summary\":false,\"grouping\":false,\"group-paging\":false}})],1)],1),_c('dx-load-panel',{attrs:{\"visible\":_vm.showLoader,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.showLoader=$event}}})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Ticketing data uploads\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row box-office-instructions-container\"},[_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 1:\")]),_c('br'),_vm._v(\"\\n          Download the latest template by clicking on the button below\\n          'Download template'. Please save the file using the name prescribed\\n          and do not rename, as this will impact the subsequent upload\\n          process.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 2:\")]),_c('br'),_vm._v(\"\\n          Select the name of the appropriate organisation from the dropdown\\n          below.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 3:\")]),_c('br'),_vm._v(\"\\n          Populate the template, ensuring all of the compulsory fields include\\n          a value. For more details on the compulsory fields, please refer to\\n          the 'Ticketing Data Upload' guide on the Training page.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 4:\")]),_c('br'),_vm._v(\"\\n          Attach the file to the page, either by dragging and dropping the\\n          file into the square below or using the 'Select file' button below.\\n          Please note that the format of the file needs to be .csv.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 5:\")]),_c('br'),_vm._v(\"\\n          The chosen file will then appear on screen with the message ‘Ready\\n          to Upload’. Please click the 'Upload' button in order to initiate\\n          the process.\\n        \")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('h2',[_c('label',{staticClass:\"required\"},[_vm._v(\"Upload File\")])])])\n}]\n\nexport { render, staticRenderFns }","import { descriptionAdorner } from \"survey-creator\";\n\nexport const boxOfficeUploadListColDefs = [\n      {\n        dataField: \"id\",\n        dataType: \"number\",\n        visible: false,\n        showInColumnChooser: false,\n      },\n      {\n        dataField: \"organisationName\",\n        caption: \"Organisation\",\n        dataType: \"string\",\n        allowHiding: false,\n      },\n      {\n        dataField: \"importedOn\",\n        caption: \"Uploaded on\",\n        dataType: \"date\",\n        format: 'dd/MM/yyyy',\n        sortOrder: \"desc\",\n      },\n      {\n        dataField: \"filename\",\n        caption: \"Filename\",\n        dataType: \"string\",\n      },\n      {\n        dataField: \"importedBy\",\n        caption: \"Uploaded By\",\n        dataType: \"string\",\n      },\n      {\n        dataField: \"result\",\n        caption: \"Result\",\n        dataType: \"string\",\n        cellTemplate: \"result-template\",\n        headerFilter: {\n          dataSource: [\n            {\n              text: \"Processing\",\n              value: null,\n            },\n            {\n              text: \"Successful\",\n              value: \"successful\",\n            },\n            {\n              text: \"Failed\",\n              value: \"failed\",\n            },\n\n          ]\n        }\n      },\n\n    ];\n  ","<template>\n  <div class=\"box-office-page-container\">\n    <div class=\"box-office-upload-container\">\n      <div class=\"page-title-container\">\n        <h1 class=\"page-title\">Ticketing data uploads</h1>\n      </div>\n\n      <div class=\"content-block\">\n        <div class=\"row box-office-instructions-container\">\n          <div class=\"col\">\n            <b>Step 1:</b><br />\n            Download the latest template by clicking on the button below\n            'Download template'. Please save the file using the name prescribed\n            and do not rename, as this will impact the subsequent upload\n            process.\n          </div>\n          <div class=\"col\">\n            <b>Step 2:</b><br />\n            Select the name of the appropriate organisation from the dropdown\n            below.\n          </div>\n          <div class=\"col\">\n            <b>Step 3:</b><br />\n            Populate the template, ensuring all of the compulsory fields include\n            a value. For more details on the compulsory fields, please refer to\n            the 'Ticketing Data Upload' guide on the Training page.\n          </div>\n          <div class=\"col\">\n            <b>Step 4:</b><br />\n            Attach the file to the page, either by dragging and dropping the\n            file into the square below or using the 'Select file' button below.\n            Please note that the format of the file needs to be .csv.\n          </div>\n          <div class=\"col\">\n            <b>Step 5:</b><br />\n            The chosen file will then appear on screen with the message ‘Ready\n            to Upload’. Please click the 'Upload' button in order to initiate\n            the process.\n          </div>\n        </div>\n\n        <div class=\"content-block\">\n          <dx-validation-group :ref=\"organisationRefKey\">\n            <div class=\"row\">\n              <div class=\"col\">\n                <div>\n                  <h2><label class=\"required\"> Organisation </label></h2>\n                </div>\n                <dx-lookup\n                  :ref=\"orgLookupRef\"\n                  :data-source=\"orgDataSource\"\n                  display-expr=\"name\"\n                  value-expr=\"id\"\n                  :search-enabled=\"true\"\n                  search-mode=\"contains\"\n                  :search-expr=\"['name']\"\n                  :min-search-length=\"2\"\n                  :show-data-before-search=\"true\"\n                  search-placeholder=\"Select Organisation...\"\n                  @value-changed=\"onValueChanged\"\n                  :value=\"selectedOrganisation\"\n                  :defer-rendering=\"false\"\n                  :inputAttr=\"{ 'aria-label': 'Organisation' }\"\n                >\n                  <dx-validator :ref=\"orgLookupValidatorRef\">\n                    <dx-required-rule\n                      message=\"Organisation Access is required\"\n                    />\n                  </dx-validator>\n                </dx-lookup>\n              </div>\n            </div>\n          </dx-validation-group>\n        </div>\n\n        <div class=\"row\">\n          <div class=\"col\">\n            <div>\n              <div>\n                <h2><label class=\"required\">Upload File</label></h2>\n              </div>\n              <div class=\"mb-3\">\n                The upload can take several minutes, however once the process\n                has initiated you can navigate to other pages within Illuminate\n                to complete other tasks. Or you can log out of Illuminate and\n                come back at a later date. For details of your recent uploads,\n                please take a look at the table on the right handside of the\n                page.\n              </div>\n              <dx-button\n                text=\"Download template\"\n                type=\"default\"\n                class=\"btn-primary btn-confirm upload-template-btn\"\n                styling-mode=\"contained\"\n                :on-click=\"downloadTemplateFile\"\n              >\n              </dx-button>\n            </div>\n            <div class=\"upload-container\">\n              <i class=\"fas fa-upload\"></i>\n              <dx-file-uploader\n                :ref=\"fileUploaderRef\"\n                :multiple=\"false\"\n                :allowed-file-extensions=\"allowedFileExtensions\"\n                accept=\"text/csv\"\n                name=\"file\"\n                invalid-file-extension-message=\"File Type is not allowed\"\n                @uploaded=\"onUploadSuccessful\"\n                @upload-started=\"onUploadStarted\"\n                @upload-error=\"onUploadError\"\n                @value-changed=\"attachmentsValueChanged\"\n                upload-mode=\"useButtons\"\n                :upload-url=\"uploadUrl\"\n                :upload-headers=\"getUploadHeaders()\"\n              >\n              </dx-file-uploader>\n              <div>\n                <div class=\"row\">\n                  <div class=\"col\">\n                    <div\n                      v-if=\"isLoading\"\n                      class=\"entity-warning red\"\n                    >\n                      <p>Data import in progress. Please wait...</p>\n                    </div>\n                    <div\n                      v-if=\"isImportSuccess\"\n                      class=\"entity-warning green\"\n                    >\n                      <strong> File accepted for import </strong>\n                    </div>\n                    <div\n                      v-if=\"isImportFailure\"\n                      class=\"entity-warning fail\"\n                    >\n                      <strong>Data import failed</strong>\n                      <li\n                        v-for=\"msg in failureMessages\"\n                        :key=\"msg\"\n                      >\n                        {{ msg }}\n                      </li>\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"box-office-grid-container\">\n      <dx-data-grid\n        class=\"dx-card thin-column-chooser multi-select-grid-property no-active-status-list\"\n        :ref=\"uploadsListRefKey\"\n        :show-borders=\"false\"\n        :data-source=\"uploadsDataSource\"\n        :remote-operations=\"true\"\n        :noDataText=\"noDataText\"\n        key-expr=\"id\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"true\"\n        :onToolbarPreparing=\"onDataGridToolbarPreparing\"\n      >\n        <dx-paging :page-size=\"10\" />\n        <dx-pager\n          :allowed-page-sizes=\"[5, 10, 25]\"\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <dx-filter-row :visible=\"true\" />\n        <DxHeaderFilter\n          :visible=\"true\"\n          :allowSearch=\"true\"\n        />\n\n        <DxSearchPanel\n          :group-index=\"0\"\n          :visible=\"true\"\n          :width=\"300\"\n        />\n        <DxExport\n          :enabled=\"false\"\n          :group-index=\"1\"\n        />\n        <DxColumnChooser\n          :enabled=\"true\"\n          mode=\"dragAndDrop\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n        <DxRemoteOperations\n          :filtering=\"false\"\n          :paging=\"false\"\n          :sorting=\"false\"\n          :summary=\"false\"\n          :grouping=\"false\"\n          :group-paging=\"false\"\n        />\n        <template #page-title-template>\n          <div class=\"page-title-container\">\n            <h2 class=\"page-subtitle\">Upload status</h2>\n          </div>\n        </template>\n\n        <template #result-template=\"{data}\">\n          <div class=\"result-col\">\n            <div v-if=\"data.data.result === null\">\n              <!-- Show processing if result is null -->\n              <span class=\"processing-label\">Processing</span>\n              <i class=\"fas fa-spinner fa-spin blue-icon\"></i>\n            </div>\n\n            <div v-else>\n              <!-- show first message which is success or fail message, with appr. icon -->\n              <span>{{ data.data.result.messages[0] }} </span>\n              <i\n                class=\"success-status-label\"\n                :class=\"\n                  data.data.result.status === 'failed'\n                    ? 'fas fa-times red-icon'\n                    : `fas fa-check green-icon`\n                \"\n              ></i>\n              <!-- List all other messages afterwards -->\n              <div\n                v-for=\"msg in data.data.result.messages.slice(1)\"\n                :key=\"msg\"\n              >\n                <span>{{ msg }} </span>\n              </div>\n            </div>\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n\n    <dx-load-panel\n      :visible.sync=\"showLoader\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n<script>\nimport {DxValidator, DxRequiredRule} from \"devextreme-vue/validator\";\nimport {DxFileUploader} from \"devextreme-vue/file-uploader\";\nimport DxValidationGroup from \"devextreme-vue/validation-group\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {mapActions} from \"vuex\";\nimport {configureLookupSearch, isNotEmpty} from \"../common/helperFunctions\";\nimport {DxLookup} from \"devextreme-vue/lookup\";\nimport authService from \"../components/api-authorization/AuthorizeService\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport downloadTemplate from \"../mixins/download-template\";\nimport {boxOfficeUploadListColDefs} from \"../components/box-office/box-office-uploads-list-col-defs\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxExport,\n  DxColumnChooser,\n  DxRemoteOperations,\n  DxHeaderFilter,\n  DxColumnFixing,\n  DxPaging,\n  DxFilterRow,\n  DxSearchPanel,\n} from \"devextreme-vue/data-grid\";\nimport {activeEntityFilter} from \"@/common/constants\";\n\nconst {VUE_APP_API_HOSTNAME} = process.env;\n\nexport default {\n  components: {\n    DxValidator,\n    DxLoadPanel,\n    DxRequiredRule,\n    DxFileUploader,\n    DxValidationGroup,\n    DxLookup,\n    DxButton,\n    DxDataGrid,\n    DxPager,\n    DxFilterRow,\n    DxHeaderFilter,\n    DxColumnFixing,\n    DxExport,\n    DxColumnChooser,\n    DxRemoteOperations,\n    DxPaging,\n    DxSearchPanel,\n  },\n  data() {\n    return {\n      orgDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrgs,\n          byKey: async (key) => {\n            return await this.fetchOrgDetails(key);\n          },\n        }),\n      }),\n      uploadsDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadUploads,\n        }),\n        pageSize: 25,\n        sort: {selector: \"name\", desc: false},\n      }),\n      fileUploaderRef: \"fileUploaderRef\",\n      orgLookupRef: \"orgLookupRef\",\n      orgLookupValidatorRef: \"orgLookupValidatorRef\",\n      selectedOrganisation: null,\n      files: [],\n      allowedFileExtensions: [\".csv\"],\n      validCharacters: /^[\\p{L}+\\d\\s._-]+\\.[\\w]+/u,\n      organisationRefKey: \"organisationData\",\n      isLoading: false,\n      showLoader: false,\n      hasProcessing: true,\n      fileName: null,\n      isImportSuccess: false,\n      successMessages: [],\n      isImportFailure: false,\n      failureMessages: [],\n      boxOfficeTimeout: null,\n      authTokenTimeout: null,\n      authToken: null,\n      templateFilename: \"TicketingProviderDataUploadTemplate.csv\",\n      uploadsListRefKey: \"uploadsListRefKey\",\n      columns: boxOfficeUploadListColDefs,\n      noDataText: \"No data to display\",\n      refresherRunning: false      \n    };\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"organisations\", {\n      fetchOrgDetails: \"fetchOrgDetails\",\n    }),\n    async loadOrgs(searchOptions) {\n      let loadOptions = configureLookupSearch(\n        searchOptions,\n        \"name\",\n        false,\n        activeEntityFilter,\n      );\n\n      let response = await this.$http.get(`organisations`, {\n        params: loadOptions,\n      });\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    async loadUploads() {\n      let response = await this.$http.get(`box-office`, {});\n\n      // Return if response data is empty.\n      if (!isNotEmpty(response.data) && !isNotEmpty(response.data.data)) {\n        return;\n      }\n\n      this.hasProcessing = false;\n      // Parse each of the result JSONs\n      response.data.data.forEach((x) => {\n        x.result = JSON.parse(x.result);\n        if (x.result === null) {\n          this.hasProcessing = true;\n        }\n      });\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    onDataGridToolbarPreparing(e) {\n      let toolbarItems = e.toolbarOptions.items;\n      toolbarItems.unshift({\n        location: \"before\",\n        template: \"page-title-template\",\n      });\n    },\n    attachmentsValueChanged(e) {\n      if (e.value.length > 0) {\n        const result = this.organisationData.validate();\n        if (!result.isValid) {\n          e.component._files[0].cancelButton._clickAction();\n          this.notifyError(\n            `Unable to upload file. ${result.brokenRules[0].message}`,\n          );\n        }\n\n        this.files = e.value;\n        for (let index = 0; index < e.value.length; index++) {\n          let fileName = e.value[index].name;\n\n          if (this.validCharacters.test(fileName)) continue;\n          if (!e.component._files[index].isValid()) {\n            e.component._files[index].$statusMessage.append(\n              \"File Name is invalid\",\n            );\n          } else {\n            e.component._files[index].$statusMessage.text(\n              \"File Name is invalid\",\n            );\n            e.component._files[index].$statusMessage.addClass(\"error-text\");\n            e.component._files[index].isValid = () => false;\n          }\n        }\n      }\n    },\n    getUploadHeaders() {\n      let headers = {\n        \"Access-Control-Allow-Origin\": \"*\",\n      };\n      if (this.authToken) {\n        headers.Authorization = `Bearer ${this.authToken}`;\n      }\n      return headers;\n    },\n    onUploadSuccessful() {\n      this.clearUploaderState();\n      this.isImportSuccess = true;\n      this.refreshUploads();\n\n      if (this.refresherRunning === true) {\n        return;\n      }\n\n      this.refresherRunning = true;\n    },\n    onUploadStarted() {\n      this.isLoading = true;\n      this.successMessages = [];\n      this.failureMessages = [];\n      this.isImportFailure = false;\n      this.isImportSuccess = false;\n    },\n    onUploadError(e) {\n      this.isLoading = false;\n      this.isImportFailure = true;\n      this.failureMessages = [JSON.parse(e.request.response).message];\n      this.clearUploaderState();\n    },\n    async refreshUploads() {\n      this.uploadsDataSource.reload();\n    },\n    clearUploaderState() {\n      this.orgLookupInstance.reset();\n      this.fileUploaderInstance.reset();\n      this.orgLookupValidatorInstance.reset();\n      this.isLoading = false;\n    },\n    onValueChanged(e) {\n      this.selectedOrganisation = e.value;\n    },\n    async getToken() {\n      const result = await authService.getAccessToken();\n      if (result) {\n        this.authToken = result;\n        this.authTokenTimeout = setTimeout(this.getToken, 30000);\n      }\n    },\n    async downloadTemplateFile() {\n      this.showLoader = true;\n      await this.downloadTemplate(`resources/${this.templateFilename}`);\n      this.showLoader = false;\n    },\n  },\n  computed: {\n    orgLookupValidatorInstance() {\n      return this.$refs[this.orgLookupValidatorRef].instance;\n    },\n    orgLookupInstance() {\n      return this.$refs[this.orgLookupRef].instance;\n    },\n    fileUploaderInstance() {\n      return this.$refs[this.fileUploaderRef].instance;\n    },\n    uploadUrl() {\n      return `${VUE_APP_API_HOSTNAME}/box-office/${this.selectedOrganisation}`;\n    },\n    organisationData() {\n      return this.$refs[this.organisationRefKey].instance;\n    },\n    uploadsGrid() {\n      return this.$refs[this.uploadsListRefKey].instance;\n    },\n  },\n  beforeDestroy() {\n    clearTimeout(this.authTokenTimeout);\n  },\n  async mounted() {\n    this.getToken();\n    window.setInterval(() => {\n      if (this.hasProcessing) {\n        this.refreshUploads();\n      }\n    }, 30000);\n  },\n  mixins: [downloadTemplate],\n};\n</script>\n<style scoped lang=\"scss\">\n@import \"../themes/custom-variables.scss\";\n\n.upload-container .dx-fileuploader-input-wrapper {\n  background: rgba(183, 183, 183, 0.1) !important;\n}\n\n.page-title-container {\n  margin-left: 0px !important;\n}\n\n.page-subtitle {\n  font: $base-font-family-medium !important;\n  font-size: $font-size-subheading !important;\n}\n\n.content-block label {\n  font-size: $font-size-subheading;\n}\n\n.box-office-page-container {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n}\n\n.dx-toolbar-item {\n  vertical-align: top;\n}\n\n.dx-datagrid-header-panel {\n  .dx-toolbar {\n    height: 50px;\n  }\n}\n\n.box-office-grid-container {\n  width: 100%;\n  flex-shrink: 1;\n}\n\nh2 {\n  width: fit-content;\n}\n\n.box-office-instructions-container {\n  margin-left: 0px !important;\n  margin-right: 15px;\n  div {\n    margin-left: 0px !important;\n    padding-left: 0;\n    font-size: $font-size-component;\n    text-justify: inter-word;\n  }\n}\n\n.box-office-upload-container {\n  min-width: 300px;\n  flex-shrink: 1;\n}\n\n.result-col {\n  max-width: 600px;\n  span {\n    max-width: 600px;\n    white-space: initial;\n    word-wrap: break-word;\n  }\n}\n\n.dx-lookup {\n  max-width: 300px;\n}\n\n.upload-template-btn {\n  margin-bottom: 20px;\n  width: fit-content;\n}\n\n.processing-label {\n  padding-right: 10px;\n}\n.success-status-label {\n  padding-left: 5px;\n}\n\n@media (width < 760px) {\n  .box-office-instructions-container {\n    display: flex;\n    flex-direction: column;\n  }\n}\n\n@media (max-width: 1000px) {\n  .box-office-page-container {\n    gap: 0px;\n  }\n  .box-office-upload-container {\n    min-width: unset;\n  }\n  .content-block {\n    margin-bottom: unset;\n  }\n}\n\n@media (width < 515px) {\n  .dx-datagrid {\n    .dx-datagrid-search-panel {\n      display: none;\n    }\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./box-office-data.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./box-office-data.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./box-office-data.vue?vue&type=template&id=4ba36b93&scoped=true\"\nimport script from \"./box-office-data.vue?vue&type=script&lang=js\"\nexport * from \"./box-office-data.vue?vue&type=script&lang=js\"\nimport style0 from \"./box-office-data.vue?vue&type=style&index=0&id=4ba36b93&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4ba36b93\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"survey-data-page-wrapper\",class:{loading: _vm.isLoading}},[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"title-back-container\"},[_c('div',{staticClass:\"page-back\"},[_c('dx-button',{staticClass:\"btn-back\",attrs:{\"icon\":\"fas fa-arrow-left\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onBackClicked}})],1),_c('div',{staticClass:\"page-title-container\"},[_c('div',[_c('p',{staticClass:\"page-breadcrumb\"},[_vm._v(\"\\n              Survey Data\\n              \"+_vm._s(_vm.surveyDetails && _vm.surveyDetails.name\n                  ? ` > ${_vm.surveyDetails.name}`\n                  : ``)+\"\\n            \")])]),_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Upload Offline Survey Data\")])])])]),_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.isLoading)?_c('div',{staticClass:\"entity-warning red\"},[_c('p',[_vm._v(\"Data Upload in progress. Please wait...\")])]):_vm._e(),(_vm.isImportSuccess)?_c('div',{staticClass:\"entity-warning green\"},[_c('strong',[_vm._v(\" Data upload successful \")]),_c('p',[_vm._v(_vm._s(_vm.successMessage))])]):_vm._e(),(_vm.isImportFailure)?_c('div',{staticClass:\"entity-warning fail\"},[_c('strong',[_vm._v(\"Data upload failed\")]),_c('p',[_vm._v(_vm._s(_vm.failureMessage))])]):_vm._e()])])]),_c('div',{staticClass:\"content-block\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_vm._m(0),_c('div',{staticClass:\"upload-container\"},[_c('i',{staticClass:\"fas fa-upload\"}),_c('dx-file-uploader',{ref:_vm.fileUploaderRef,attrs:{\"multiple\":false,\"allowed-file-extensions\":_vm.allowedFileExtensions,\"name\":\"file\",\"invalid-file-extension-message\":\"File Type is not allowed\",\"upload-mode\":\"useButtons\",\"upload-url\":_vm.uploadUrl,\"upload-headers\":_vm.getUploadHeaders()},on:{\"uploaded\":_vm.onUploadSuccessful,\"upload-started\":_vm.onUploadStarted,\"upload-error\":_vm.onUploadError,\"value-changed\":_vm.attachmentsValueChanged}})],1)])])])]),_c('dx-load-panel',{attrs:{\"visible\":_vm.isLoading,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isLoading=$event}}})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('label',{staticClass:\"required\"},[_vm._v(\" Upload File \")])])\n}]\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <div\n      :class=\"{loading: isLoading}\"\n      class=\"survey-data-page-wrapper\"\n    >\n      <div class=\"page-header\">\n        <div class=\"title-back-container\">\n          <div class=\"page-back\">\n            <dx-button\n              class=\"btn-back\"\n              icon=\"fas fa-arrow-left\"\n              styling-mode=\"contained\"\n              @click=\"onBackClicked\"\n            >\n            </dx-button>\n          </div>\n          <div class=\"page-title-container\">\n            <div>\n              <p class=\"page-breadcrumb\">\n                Survey Data\n                {{\n                  surveyDetails && surveyDetails.name\n                    ? ` > ${surveyDetails.name}`\n                    : ``\n                }}\n              </p>\n            </div>\n            <h1 class=\"page-title\">Upload Offline Survey Data</h1>\n          </div>\n        </div>\n      </div>\n      <div>\n        <div class=\"row\">\n          <div class=\"col\">\n            <div\n              v-if=\"isLoading\"\n              class=\"entity-warning red\"\n            >\n              <p>Data Upload in progress. Please wait...</p>\n            </div>\n            <div\n              v-if=\"isImportSuccess\"\n              class=\"entity-warning green\"\n            >\n              <strong> Data upload successful </strong>\n              <p>{{ successMessage }}</p>\n            </div>\n            <div\n              v-if=\"isImportFailure\"\n              class=\"entity-warning fail\"\n            >\n              <strong>Data upload failed</strong>\n              <p>{{ failureMessage }}</p>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"content-block\">\n        <div class=\"row\">\n          <div class=\"col\">\n            <div>\n              <label class=\"required\"> Upload File </label>\n            </div>\n            <div class=\"upload-container\">\n              <i class=\"fas fa-upload\"></i>\n              <dx-file-uploader\n                :ref=\"fileUploaderRef\"\n                :multiple=\"false\"\n                :allowed-file-extensions=\"allowedFileExtensions\"\n                name=\"file\"\n                invalid-file-extension-message=\"File Type is not allowed\"\n                @uploaded=\"onUploadSuccessful\"\n                @upload-started=\"onUploadStarted\"\n                @upload-error=\"onUploadError\"\n                @value-changed=\"attachmentsValueChanged\"\n                upload-mode=\"useButtons\"\n                :upload-url=\"uploadUrl\"\n                :upload-headers=\"getUploadHeaders()\"\n              >\n              </dx-file-uploader>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <dx-load-panel\n      :visible.sync=\"isLoading\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n<script>\nimport {DxFileUploader} from \"devextreme-vue/file-uploader\";\nimport {mapActions, mapState} from \"vuex\";\nimport authService from \"../components/api-authorization/AuthorizeService\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxButton} from \"devextreme-vue/button\";\n\nconst {VUE_APP_API_HOSTNAME} = process.env;\nexport default {\n  components: {\n    DxLoadPanel,\n    DxFileUploader,\n    DxButton,\n  },\n  data() {\n    return {\n      fileUploaderRef: \"fileUploaderRef\",\n      files: [],\n      allowedFileExtensions: [\".xlsx\"],\n      validCharacters: /^[\\p{L}+\\d\\s._-]+\\.[\\w]+/u,\n      isLoading: false,\n      isImportSuccess: false,\n      successMessage: null,\n      isImportFailure: false,\n      failureMessage: null,\n      authTokenTimeout: null,\n      authToken: null,\n    };\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"surveys\", {\n      fetchSurveyDetails: \"fetchSurveyDetails\",\n      clearSurveyDetails: \"clear\",\n    }),\n    attachmentsValueChanged(e) {\n      this.files = e.value;\n      for (let index = 0; index < e.value.length; index++) {\n        let fileName = e.value[index].name;\n\n        if (this.validCharacters.test(fileName)) continue;\n        if (!e.component._files[index].isValid()) {\n          e.component._files[index].$statusMessage.append(\n            \"File Name is invalid\",\n          );\n        } else {\n          e.component._files[index].$statusMessage.text(\"File Name is invalid\");\n          e.component._files[index].$statusMessage.addClass(\"error-text\");\n          e.component._files[index].isValid = () => false;\n        }\n      }\n    },\n    getUploadHeaders() {\n      let headers = {\n        \"Access-Control-Allow-Origin\": \"*\",\n      };\n      if (this.authToken) {\n        headers.Authorization = `Bearer ${this.authToken}`;\n      }\n      return headers;\n    },\n    onUploadSuccessful() {\n      this.isImportSuccess = true;\n      this.successMessage = \"Upload Successful\";\n      this.fileUploaderInstance.reset();\n      this.isLoading = false;\n    },\n    onUploadStarted() {\n      this.isLoading = true;\n      this.successMessage = [];\n      this.failureMessage = [];\n      this.isImportFailure = false;\n      this.isImportSuccess = false;\n    },\n    onUploadError(e) {\n      let uploadResponse = JSON.parse(e.request.response);\n      this.isImportFailure = true;\n      this.failureMessage = uploadResponse.message;\n      this.fileUploaderInstance.reset();\n      this.isLoading = false;\n    },\n\n    async getToken() {\n      const result = await authService.getAccessToken();\n      if (result) {\n        this.authToken = result;\n        this.authTokenTimeout = setTimeout(this.getToken, 30000);\n      }\n    },\n    onBackClicked() {\n      this.$router.push({\n        name: \"survey-details\",\n        params: {id: this.$route.params.surveyId},\n      });\n    },\n  },\n  computed: {\n    ...mapState(\"surveys\", [\"surveyDetails\"]),\n    fileUploaderInstance() {\n      return this.$refs[this.fileUploaderRef].instance;\n    },\n    uploadUrl() {\n      return `${VUE_APP_API_HOSTNAME}/surveys/${this.surveyDetails.id}/bulk`;\n    },\n  },\n  beforeDestroy() {\n    clearTimeout(this.authTokenTimeout);\n    this.clearSurveyDetails();\n  },\n  async mounted() {\n    this.getToken();\n    this.fetchSurveyDetails(this.$route.params.surveyId).then(() => {});\n  },\n};\n</script>\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n\n.fa-upload {\n  position: absolute;\n  top: 45px;\n  left: calc(50% - 17px);\n  font-size: 34px;\n  color: #5b778f;\n}\n.upload-container::v-deep .dx-fileuploader-input-wrapper {\n  background-color: rgba(183, 183, 183, 0.1);\n}\n\n.loading::before {\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  background-color: #ffffff52;\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-size: 600px;\n  content: \"_\";\n  color: transparent;\n  z-index: 99999;\n}\n\n.survey-data-page-wrapper{\n  max-width: 500px;\n}\n\n.content-block label {\n  font-size: $font-size-subheading;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-data.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-data.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./survey-data.vue?vue&type=template&id=129679c3&scoped=true\"\nimport script from \"./survey-data.vue?vue&type=script&lang=js\"\nexport * from \"./survey-data.vue?vue&type=script&lang=js\"\nimport style0 from \"./survey-data.vue?vue&type=style&index=0&id=129679c3&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"129679c3\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{on:{\"click\":_vm.updateActiveTime}},[_c('div',{staticClass:\"insights-content\"},[_c('div',{staticClass:\"insights-action-container\"},[_vm._l((_vm.filtersList),function(filter){return _c('dx-button',{key:filter.name,staticClass:\"audit-period-select-btn\",on:{\"click\":function($event){return _vm.loadPowerBI(filter.name)}}},[_c('span',{class:_vm.selectedPeriod === filter.name ? 'bold-text' : ''},[_vm._v(_vm._s(filter.name))])])}),_c('dx-button',{staticClass:\"fullscreen-btn\",attrs:{\"icon\":\"fullscreen\"},on:{\"click\":_vm.pbiFullscreen}})],2),_c('div',{staticClass:\"insights-container\",class:{loading: _vm.isLoading}},[_c('div',{staticClass:\"power-bi-container\",attrs:{\"id\":\"insightContainer\"}})])]),_c('dx-load-panel',{attrs:{\"visible\":_vm.isLoading,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isLoading=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div @click=\"updateActiveTime\">\n    <div class=\"insights-content\">\n      <div class=\"insights-action-container\">\n        <dx-button\n          v-for=\"filter in filtersList\"\n          :key=\"filter.name\"\n          @click=\"loadPowerBI(filter.name)\"\n          class=\"audit-period-select-btn\"\n          ><span :class=\"selectedPeriod === filter.name ? 'bold-text' : ''\">{{\n            filter.name\n          }}</span></dx-button\n        >\n        <dx-button\n          icon=\"fullscreen\"\n          @click=\"pbiFullscreen\"\n          class=\"fullscreen-btn\"\n        />\n      </div>\n      <div\n        class=\"insights-container\"\n        :class=\"{loading: isLoading}\"\n      >\n        <div\n          class=\"power-bi-container\"\n          id=\"insightContainer\"\n        ></div>\n      </div>\n    </div>\n    <dx-load-panel\n      :visible.sync=\"isLoading\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport * as pbi from \"powerbi-client\";\nimport DxButton from \"devextreme-vue/button\";\nimport $axios from \"../utils/axios-instance.js\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\n\nconst models = pbi.models;\nlet powerbi = new pbi.service.Service(\n  pbi.factories.hpmFactory,\n  pbi.factories.wpmpFactory,\n  pbi.factories.routerFactory,\n);\n\nexport default {\n  components: {\n    DxButton,\n    DxLoadPanel,\n  },\n  data() {\n    return {\n      showFilter: false,\n      isLoading: true,\n      filtersList: [],\n      insightsFilter: \"\",\n      selectedPeriod: null,\n    };\n  },\n  computed: {\n    pageTitle() {\n      return \"Insights\";\n    },\n    selectedInsightsFilter() {\n      return this.insightsFilter;\n    },\n  },\n  methods: {\n    async getFiltersList() {\n      try {\n        const response = await $axios.get(`reporting/report-names`);\n        this.filtersList = response.data;\n      } catch (err) {\n        throw new Error(err);\n      }\n    },\n    async loadPowerBI(reportName) {\n      //API call to get embedding details\n      this.isLoading = true;\n      const embedDetails = await this.powerBIEmbedDetails(reportName);\n      this.isLoading = false;\n      const accessToken = embedDetails.token;\n      const embedUrl = embedDetails.embedUrl;\n      const embedInsightId = embedDetails.insightId;\n\n      //Get the container to embed in\n      const embedContainer = document.getElementById(\"insightContainer\");\n      powerbi.reset(embedContainer);\n\n      //Set up embedding configuration\n      const config = {\n        type: \"report\",\n        tokenType: models.TokenType.Embed,\n        accessToken: accessToken,\n        embedUrl: embedUrl,\n        id: embedInsightId,\n        permissions: models.Permissions.All,\n        settings: {\n          filterPaneEnabled: false,\n          navContentPaneEnabled: false,\n          hideErrors: true,\n          layoutType: models.LayoutType.Custom,\n          customLayout: {\n            displayOption: models.DisplayOption.FitToPage,\n          },\n        },\n      };\n\n      //Embed insight\n      powerbi.bootstrap(embedContainer, {type: \"report\"});\n      let pbiComponent = powerbi.embed(embedContainer, config);\n\n      // Accessibility - set iframe title\n      pbiComponent.setComponentTitle(\"Insights report\");\n    },\n    getCurrentReport() {\n      return this.filtersList.find((x) => x.isDefault === true);\n    },\n    async powerBIEmbedDetails(insightName) {\n      this.selectedPeriod = insightName;\n\n      let response = await this.$http.post(\n        `reporting/authorise`,\n        JSON.stringify(insightName),\n      );\n\n      return response.data;\n    },\n    pbiFullscreen() {\n      //Set power bi to be full screen mode\n      const embedContainer = document.getElementById(\"insightContainer\");\n      const insight = powerbi.get(embedContainer);\n      insight.fullscreen();\n    },\n    pbiEdit() {\n      //Toggle between edit and view mode\n      const embedContainer = document.getElementById(\"insightContainer\");\n      const insight = powerbi.get(embedContainer);\n      const switchValue = document.getElementById(\"pbiEditSwitch\");\n      switchValue.ariaPressed == \"true\"\n        ? insight.switchMode(\"edit\")\n        : insight.switchMode(\"view\");\n    },\n    updateActiveTime() {\n      localStorage.setItem(\"lastUserActivityTime\", new Date().getTime());\n    },\n  },\n  beforedestroy() {\n    this.insightsFilter = null;\n  },\n  created() {\n    this.getFiltersList().then(() => {\n      const report = this.getCurrentReport();\n      this.loadPowerBI(report.name);\n    });\n  },\n};\n</script>\n\n//\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n\n.fullscreen-btn {\n  height: 50px;\n  width: 50px;\n}\n\n.insights-container {\n  flex: 1 1 auto;\n  min-height: 300px;\n  width: 100%;\n  position: relative;\n}\n\n.power-bi-container {\n  height: 65vh;\n  width: 100%;\n}\n\n.audit-period-select-btn {\n  height: fit-content;\n  width: fit-content;\n  min-height: 50px;\n\n  font-family: $base-font-family-regular;\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: center;\n  padding: 10px 15px 10px 15px;\n\n  &:hover {\n    text-decoration: underline;\n  }\n}\n\n// awkward fix as active button wouldnt default to bold\n.bold-text {\n  font-weight: 700;\n}\n\n.insights-action-container {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  gap: 5px;\n  flex-wrap: wrap;\n}\n\n.insights-content {\n  display: flex;\n  flex-direction: column;\n  flex: 1 1 auto;\n  overflow-y: auto;\n  padding: 20px;\n  min-height: calc(100vh - 200px);\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insights.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insights.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./insights.vue?vue&type=template&id=2600e888&scoped=true\"\nimport script from \"./insights.vue?vue&type=script&lang=js\"\nexport * from \"./insights.vue?vue&type=script&lang=js\"\nimport style0 from \"./insights.vue?vue&type=style&index=0&id=2600e888&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"2600e888\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{on:{\"click\":_vm.updateActiveTime}},[_c('div',{staticClass:\"insights-content\"},[_c('div',{staticClass:\"insights-action-container\"},[_vm._l((_vm.filtersList),function(filter){return _c('dx-button',{key:filter.name,staticClass:\"audit-period-select-btn\",on:{\"click\":function($event){return _vm.loadPowerBI(filter.name)}}},[_c('span',{class:_vm.selectedPeriod === filter.name ? 'bold-text' : ''},[_vm._v(_vm._s(filter.name))])])}),_c('dx-button',{staticClass:\"fullscreen-btn\",attrs:{\"icon\":\"fullscreen\"},on:{\"click\":_vm.pbiFullscreen}})],2),_c('div',{staticClass:\"insights-container\",class:{loading: _vm.isLoading}},[_c('div',{staticClass:\"power-bi-container\",attrs:{\"id\":\"insightContainer\"}})])]),_c('dx-load-panel',{attrs:{\"visible\":_vm.isLoading,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.isLoading=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div @click=\"updateActiveTime\">\n    <div class=\"insights-content\">\n      <div class=\"insights-action-container\">\n        <dx-button\n          v-for=\"filter in filtersList\"\n          :key=\"filter.name\"\n          @click=\"loadPowerBI(filter.name)\"\n          class=\"audit-period-select-btn\"\n          ><span :class=\"selectedPeriod === filter.name ? 'bold-text' : ''\">{{\n            filter.name\n          }}</span></dx-button\n        >\n        <dx-button\n          icon=\"fullscreen\"\n          @click=\"pbiFullscreen\"\n          class=\"fullscreen-btn\"\n        />\n      </div>\n      <div\n        class=\"insights-container\"\n        :class=\"{loading: isLoading}\"\n      >\n        <div\n          class=\"power-bi-container\"\n          id=\"insightContainer\"\n        ></div>\n      </div>\n    </div>\n    <dx-load-panel\n      :visible.sync=\"isLoading\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport * as pbi from \"powerbi-client\";\nimport DxButton from \"devextreme-vue/button\";\nimport $axios from \"../utils/axios-instance.js\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\n\nconst models = pbi.models;\nlet powerbi = new pbi.service.Service(\n  pbi.factories.hpmFactory,\n  pbi.factories.wpmpFactory,\n  pbi.factories.routerFactory,\n);\n\nexport default {\n  components: {\n    DxButton,\n    DxLoadPanel,\n  },\n  data() {\n    return {\n      showFilter: false,\n      isLoading: true,\n      filtersList: [],\n      insightsFilter: \"\",\n      selectedPeriod: null,\n      pin: \"\",\n    };\n  },\n  computed: {\n    pageTitle() {\n      return \"Insights Public\";\n    },\n    selectedInsightsFilter() {\n      return this.insightsFilter;\n    },\n  },\n  methods: {\n    async getFiltersList() {\n      \n      try {\n        const response = await $axios.get(`reporting/report-names-public`, {  \n          headers: {  \n            'pin': this.pin,\n          },  \n        }); \n        this.filtersList = response.data;\n      } catch (err) {\n        throw new Error(err);\n      }\n    },\n    async loadPowerBI(reportName) {\n      //API call to get embedding details\n      this.isLoading = true;\n      const embedDetails = await this.powerBIEmbedDetails(reportName);\n      this.isLoading = false;\n      const accessToken = embedDetails.token;\n      const embedUrl = embedDetails.embedUrl;\n      const embedInsightId = embedDetails.insightId;\n\n      //Get the container to embed in\n      const embedContainer = document.getElementById(\"insightContainer\");\n      powerbi.reset(embedContainer);\n\n      //Set up embedding configuration\n      const config = {\n        type: \"report\",\n        tokenType: models.TokenType.Embed,\n        accessToken: accessToken,\n        embedUrl: embedUrl,\n        id: embedInsightId,\n        permissions: models.Permissions.All,\n        settings: {\n          filterPaneEnabled: false,\n          navContentPaneEnabled: false,\n          hideErrors: true,\n          layoutType: models.LayoutType.Custom,\n          customLayout: {\n            displayOption: models.DisplayOption.FitToPage,\n          },\n        },\n      };\n\n      //Embed insight\n      powerbi.bootstrap(embedContainer, {type: \"report\"});\n      let pbiComponent = powerbi.embed(embedContainer, config);\n\n      // Accessibility - set iframe title\n      pbiComponent.setComponentTitle(\"Insights report\");\n    },\n    getCurrentReport() {\n      return this.filtersList.find((x) => x.isDefault === true);\n    },\n    async powerBIEmbedDetails(insightName) {\n      this.selectedPeriod = insightName;\n\n      let response = await this.$http.post(  \n        `reporting/authorise-public`,  \n        JSON.stringify(insightName),  \n        {  \n          headers: {  \n            'pin': this.pin\n          },  \n        },  \n      );  \n\n      return response.data;\n    },\n    pbiFullscreen() {\n      //Set power bi to be full screen mode\n      const embedContainer = document.getElementById(\"insightContainer\");\n      const insight = powerbi.get(embedContainer);\n      insight.fullscreen();\n    },\n    pbiEdit() {\n      //Toggle between edit and view mode\n      const embedContainer = document.getElementById(\"insightContainer\");\n      const insight = powerbi.get(embedContainer);\n      const switchValue = document.getElementById(\"pbiEditSwitch\");\n      switchValue.ariaPressed == \"true\"\n        ? insight.switchMode(\"edit\")\n        : insight.switchMode(\"view\");\n    },\n    updateActiveTime() {\n      localStorage.setItem(\"lastUserActivityTime\", new Date().getTime());\n    },\n  },\n  beforedestroy() {\n    this.insightsFilter = null;\n  },\n  created() {\n    const queryParams = new URLSearchParams(window.location.search);  \n    this.pin = queryParams.get(\"pin\") ? queryParams.get(\"pin\") : \"\";\n\n    this.getFiltersList().then(() => {\n      const report = this.getCurrentReport();\n      this.loadPowerBI(report.name);\n    });\n  },\n};\n</script>\n\n//\n<style lang=\"scss\" scoped>\n@import \"../themes/custom-variables.scss\";\n\n.fullscreen-btn {\n  height: 50px;\n  width: 50px;\n}\n\n.insights-container {\n  flex: 1 1 auto;\n  min-height: 300px;\n  width: 100%;\n  position: relative;\n}\n\n.power-bi-container {\n  height: 65vh;\n  width: 100%;\n}\n\n.audit-period-select-btn {\n  height: fit-content;\n  width: fit-content;\n  min-height: 50px;\n\n  font-family: $base-font-family-regular;\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  align-items: center;\n  padding: 10px 15px 10px 15px;\n\n  &:hover {\n    text-decoration: underline;\n  }\n}\n\n// awkward fix as active button wouldnt default to bold\n.bold-text {\n  font-weight: 700;\n}\n\n.insights-action-container {\n  display: flex;\n  flex-direction: row;\n  justify-content: flex-end;\n  gap: 5px;\n  flex-wrap: wrap;\n}\n\n.insights-content {\n  display: flex;\n  flex-direction: column;\n  flex: 1 1 auto;\n  overflow-y: auto;\n  padding: 20px;\n  min-height: calc(100vh - 200px);\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insights-public.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insights-public.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./insights-public.vue?vue&type=template&id=72b915ae&scoped=true\"\nimport script from \"./insights-public.vue?vue&type=script&lang=js\"\nexport * from \"./insights-public.vue?vue&type=script&lang=js\"\nimport style0 from \"./insights-public.vue?vue&type=style&index=0&id=72b915ae&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"72b915ae\",\n  null\n  \n)\n\nexport default component.exports","import { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants'\nimport defaultLayout from \"../../layouts/static-layout\";\n\nconst ApiAuthorizationRoutes = [\n    {\n        path: ApplicationPaths.Login,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Login')\n        },\n        props: { content: { action: LoginActions.Login } },\n        meta: { requiresAuth: false }\n    },\n    {\n        path: ApplicationPaths.LoginFailed,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Login')\n        },\n        props: { content: { action: LoginActions.LoginFailed } },\n        meta: { requiresAuth: false }\n    },\n    {\n        path: ApplicationPaths.LoginCallback,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Login')\n        },\n        props: { content: { action: LoginActions.LoginCallback } },\n        meta: { requiresAuth: false }\n    },\n    {\n        path: ApplicationPaths.Profile,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Login')\n        },\n        props: { content: { action: LoginActions.Profile } },\n        meta: { requiresAuth: false }\n    },\n    {\n        path: ApplicationPaths.Register,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Login')\n        },\n        props: { content: { action: LoginActions.Register } },\n        meta: { requiresAuth: false }\n    },\n    {\n        path: ApplicationPaths.LogOut,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Logout')\n        },\n        props: { content: { action: LogoutActions.Logout } },\n        meta: { requiresAuth: false }\n    },\n    {\n        path: ApplicationPaths.LogOutCallback,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Logout')\n        },\n        props: { content: { action: LogoutActions.LogoutCallback } },\n        meta: { requiresAuth: false }\n    },\n    {\n        path: ApplicationPaths.LoggedOut,\n        components: {\n            layout: defaultLayout,\n            content: () => import('./Logout')\n        },\n        props: { content: { action: LogoutActions.LoggedOut } },\n        meta: { requiresAuth: false }\n    }\n]\n\nexport default ApiAuthorizationRoutes;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"help-container\"},[_c('div',{staticClass:\"help-side-nav-container\"},[_c('dx-scroll-view',{key:_vm.window.width,attrs:{\"disabled\":_vm.window.width <= 750}},[_c('div',{staticClass:\"help-headings\"},[_c('div',{staticClass:\"help-headings-text\"},[_c('h1',{staticClass:\"help-heading\"},[_vm._v(\"Training Modules\")]),(_vm.window.width > 750)?_c('div',{staticClass:\"help-caption help-top-section-caption\"},[_vm._v(\"\\n            Welcome to the Illuminate training hub.\\n          \")]):_vm._e(),(_vm.window.width > 750)?_c('div',{staticClass:\"help-caption help-top-section-caption\"},[_vm._v(\"\\n            All the material you need to get started on Illuminate is here.\\n          \")]):_vm._e(),(_vm.window.width > 750)?_c('div',{staticClass:\"help-caption help-top-section-caption\"},[_vm._v(\"\\n            Click the tiles below to find out more.\\n          \")]):_vm._e()]),(_vm.window.width < 750)?_c('dxButton',{attrs:{\"icon\":_vm.navDrawerOpened ? `fas fa-angle-up` : `fas fa-angle-down`},on:{\"click\":function($event){_vm.navDrawerOpened = !_vm.navDrawerOpened}}}):_vm._e()],1),(_vm.window.width > 750)?_c('training-nav-menu',{on:{\"moduleChanged\":_vm.onModuleChanged}}):_vm._e()],1)],1),(_vm.window.width < 750)?_c('div',[_c('DxDrawer',{attrs:{\"opened-state-mode\":\"overlap\",\"position\":\"top\",\"reveal-mode\":\"expand\",\"opened\":_vm.navDrawerOpened,\"hide-on-outside-click\":true,\"template\":\"listMenu\"},scopedSlots:_vm._u([{key:\"listMenu\",fn:function(){return [_c('training-nav-menu',{on:{\"moduleChanged\":_vm.onModuleChanged,\"moduleFocused\":_vm.onModuleFocused,\"closeDrawer\":_vm.closeDrawer}})]},proxy:true}],null,false,3161441630)})],1):_vm._e(),_c('div',{staticClass:\"help-content-container\"},[_c('dx-scroll-view',{staticClass:\"help-content-scrollview\"},[_c('div',{staticClass:\"help-content-module-container\"},[(_vm.currentModule.viewType === _vm.viewTypes.guides)?_c('training-module',{attrs:{\"training-module\":_vm.currentModule}}):_vm._e(),(_vm.currentModule.viewType === _vm.viewTypes.table)?_c('training-table',{attrs:{\"trainingTable\":_vm.currentModule}}):_vm._e()],1)])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Datetime format: YYYY-MM-DD hh:mm\n\nexport const trainingSessions = [\n  {\n    date: new Date(\"2023-05-16 10:00\"),\n    sessionTitle: \"Illuminate Training Session - May\",\n    sessionDescription: \"\",\n    type: \"Webcast\",\n    duration: \"60 minutes\",\n    bookingLink: \"\",\n    recordingLink: \"\",\n  },\n\n  {\n    date: new Date(\"2023-06-12 11:00\"),\n    sessionTitle: \"Drop-in Clinic Session\",\n    sessionDescription:\n      \"A 1 hour drop-in session, where we will answer your pre-submitted questions.\",\n    type: \"Webcast\",\n    duration: \"60 minutes\",\n    bookingLink:\n      \"https://docs.google.com/forms/d/e/1FAIpQLSeV7duKdhxTqAFfUnDGe-asd-si_HjqLP0JK0Zal__Jlr62rA/viewform\",\n    recordingLink: \"\",\n  },\n\n  {\n    date: new Date(\"2023-07-20 11:00\"),\n    sessionTitle: \"Illuminate Clinic Session\",\n    sessionDescription:\n      \"This Clinic session will be an opportunity for you to pre-submit any questions you have about Illuminate, which will be answered by the team during the session.\",\n    type: \"Webcast\",\n    duration: \"60 minutes\",\n    bookingLink: \"https://forms.gle/s1kTtd1cLg5e6xxN9\",\n    recordingLink: \"\",\n  },\n  {\n    date: new Date(\"2024-05-16 11:00\"),\n    sessionTitle: \"Illuminate Clinic Session\",\n    sessionDescription:\n      \"For this Clinic session there will be an opportunity for you to pre-submit any questions you have about Illuminate, which will be answered by the team during the session.\",\n    type: \"Webcast\",\n    duration: \"60 minutes\",\n    bookingLink: \"https://forms.gle/w2R2FS1UCf2GcbNc8\",\n    recordingLink: \"https://video.pwc.com/media/1_7chlgsy4\",\n    transcriptFilename: \"Illuminate_Clinic_Session_Transcript.pdf\",\n  },\n];\n","import {trainingSideNavBarViewType as tType} from \"../../common/constants\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\nimport {trainingSessions} from \"./training-session-defs\";\nimport roles from \"../../config/roles\";\n\nexport const trainingModuleDefinitons = [\n  {\n    navSectionTitle: \"How to use Illuminate\",\n    sections: [\n      {\n        title: \"Illuminate Overview\",\n        introText:\n          \"New to Illuminate? Here you will find an overview of the platform, along with guidance on minimum data submission requirements.\",\n        viewType: tType.guides,\n        visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n        subSections: [\n          {\n            title: \"\",\n            visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n            modules: [\n              {\n                title: \"Illuminate Overview\",\n                files: [\n                  {\n                    title: \"Illuminate Overview\",\n                    fileName: \"Illuminate_Overview.pdf\",\n                  },\n                  {\n                    title: \"Illuminate Overview - Accessible Version\",\n                    fileName: \"Illuminate_Overview_accessible_version.pdf\",\n                  },\n                ],\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n              },\n              {\n                title: \"Minimum Requirements for Organisations\",\n                files: [\n                  {\n                    title: \"Minimum Requirements for Organisations\",\n                    fileName: \"Minimum_Requirements_for_NPOs_and_CPPs.pdf\",\n                  },\n                  {\n                    title:\n                      \"Minimum Requirements for Organisations - Accessible Version\",\n                    fileName:\n                      \"Minimum_Requirements_for_NPOs_and_CPPs_accessible_version.pdf\",\n                  },\n                ],\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n              },\n              {\n                title: \"Relationship Manager Overview\",\n                files: [\n                  {\n                    title: \"Relationship Manager Overview\",\n                    fileName: \"Relationship_Manager_Overview.pdf\",\n                  },\n                  {\n                    title: \"Relationship Manager Overview - Accessible Version\",\n                    fileName:\n                      \"Relationship_Manager_Overview_accessible_version.pdf\",\n                  },\n                ],\n                visibleTo: [roles.GlobalAdmin],\n              },\n              {\n                title: \"ACE Admin Overview\",\n                files: [\n                  {\n                    title: \"ACE Admin Overview\",\n                    fileName: \"Arts_Council_Admin_Overview.pdf\",\n                  },\n                  {\n                    title: \"ACE Admin Overview - Accessible Version\",\n                    fileName:\n                      \"Arts_Council_Admin_Overview_accessible_version.pdf\",\n                  },\n                ],\n                visibleTo: [roles.GlobalAdmin],\n              },\n            ],\n          },\n        ],\n      },\n      {\n        title: \"Events & Surveys\",\n        introText:\n          \"Learn how to enter event information and issue surveys within Illuminate, along with some best practice guidance.\",\n        viewType: tType.guides,\n        visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n        subSections: [\n          {\n            title: \"Events\",\n            visibleTo: [roles.GlobalAdmin, roles.Admin],\n            modules: [\n              {\n                title: \"How to Create Locations and Activities / Events\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin],\n                files: [\n                  {\n                    title: \"How to Create Locations and Activities / Events\",\n                    fileName:\n                      \"How_to_Create_Locations_and_Activities_Events.pdf\",\n                  },\n                  {\n                    title:\n                      \"How to Create Locations and Activities / Events - Accessible Version\",\n                    fileName:\n                      \"How_to_Create_Locations_and_Activities_Events_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"How to Complete Quarterly Activity Confirmations\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin],\n                files: [\n                  {\n                    title: \"How to Complete Quarterly Activity Confirmations\",\n                    fileName:\n                      \"How_to_Complete_Quarterly_Activity_Confirmations.pdf\",\n                  },\n                  {\n                    title:\n                      \"How to Complete Quarterly Activity Confirmations - Accessible Version\",\n                    fileName:\n                      \"How_to_Complete_Quarterly_Activity_Confirmations_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"How to Bulk Upload Locations and Events\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"How to Bulk Upload Locations and Events\",\n                    fileName: \"How_to_Bulk_Upload_Locations_and_Events.pdf\",\n                  },\n                  {\n                    title:\n                      \"How to Bulk Upload Locations and Events - Accessible Version\",\n                    fileName:\n                      \"How_to_Bulk_Upload_Locations_and_Events_accessible_version.pdf\",\n                  },\n                ],\n              },\n            ],\n          },\n          {\n            title: \"Surveys\",\n            visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n            modules: [\n              {\n                title: \"How to Create and Issue Surveys\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"How to Create and Issue Surveys\",\n                    fileName: \"How_to_Create_and_Issue_Surveys.pdf\",\n                  },\n                  {\n                    title:\n                      \"How to Create and Issue Surveys - Accessible Version\",\n                    fileName:\n                      \"How_to_Create_and_Issue_Surveys_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"Survey Question Selection\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"Survey Question Selection\",\n                    fileName: \"Survey_Question_Selection.pdf\",\n                  },\n                  {\n                    title: \"Survey Question Selection - Accessible Version\",\n                    fileName:\n                      \"Survey_Question_Selection_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"Survey Best Practice\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"Survey Best Practice\",\n                    fileName: \"Survey_Best_Practice.pdf\",\n                  },\n                  {\n                    title: \"Survey Best Practice - Accessible Version\",\n                    fileName: \"Survey_Best_Practice_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"How to Upload Offline Survey Responses\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"How to Upload Offline Survey Responses\",\n                    fileName: \"How_to_upload_offline_survey_responses.pdf\",\n                  },\n                  {\n                    title:\n                      \"How to Upload Offline Survey Responses - Accessible Version\",\n                    fileName:\n                      \"How_to_upload_offline_survey_responses_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"Survey Collection Fieldwork\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"Survey Collection Fieldwork\",\n                    fileName: \"Survey_Collection_Fieldwork.pdf\",\n                  },\n                  {\n                    title: \"Survey Collection Fieldwork - Accessible Version\",\n                    fileName:\n                      \"Survey_Collection_Fieldwork_accessible_version.pdf\",\n                  },\n                ],\n              },\n            ],\n          },\n        ],\n      },\n      {\n        title: \"Ticketing Data\",\n        introText:\n          \"Learn how to connect your ticketing provider or manually upload ticketing data to Illuminate.\",\n        viewType: tType.guides,\n        visibleTo: [roles.GlobalAdmin, roles.Admin],\n        subSections: [\n          {\n            title: \"\",\n            visibleTo: [roles.GlobalAdmin, roles.Admin],\n            modules: [\n              {\n                title: \"Ticketing Data Upload\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin],\n                files: [\n                  {\n                    title: \"Ticketing Data Upload\",\n                    fileName: \"Box_Office_Data_Upload.pdf\",\n                  },\n                  {\n                    title: \"Ticketing Data Upload - Accessible Version\",\n                    fileName: \"Box_Office_Data_Upload_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"API Connection for Ticketing Provider Integration\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin],\n                files: [\n                  {\n                    title: \"API Connection for Ticketing Provider Integration\",\n                    fileName: \"API_Connection_for_Box_Office_Integration.pdf\",\n                  },\n                  {\n                    title:\n                      \"API Connection for Ticketing Provider Integration - Accessible Version\",\n                    fileName:\n                      \"API_Connection_for_Box_Office_Integration_accessible_version.pdf\",\n                  },\n                ],\n              },\n            ],\n          },\n        ],\n      },\n      {\n        title: \"Insights\",\n        introText:\n          \"Here you will learn how to analyse your audience data and use it to enable actionable audience insights.\",\n        viewType: tType.guides,\n        visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n        subSections: [\n          {\n            title: \"How to Use Dashboards within Insights\",\n            visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n            modules: [\n              {\n                title: \"Insights Overview Reference Guide\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"Insights Overview Reference Guide\",\n                    fileName: \"Insights_Overview_Reference_Guide.pdf\",\n                  },\n                  {\n                    title:\n                      \"Insights Overview Reference Guide - Accessible Version\",\n                    fileName:\n                      \"Insights_Overview_Reference_Guide_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"Insight Training Videos\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"BSL - Illuminate Insights: Audience Development\",\n                    videoLink: \"https://www.youtube.com/watch?v=u2Pq8f9Ja9w\",\n                  },\n                  {\n                    title: \"BSL - Illuminate Insights: Illuminate Engagements\",\n                    videoLink: \"https://www.youtube.com/watch?v=hUyuxJifVdE\",\n                  },\n                  {\n                    title:\n                      \"BSL - Illuminate Insights: Responses to optional survey questions\",\n                    videoLink: \"https://www.youtube.com/watch?v=QziSZafIsh8\",\n                  },\n                  {\n                    title:\n                      \"BSL - Illuminate Insights: Understanding your areas\",\n                    videoLink: \"https://www.youtube.com/watch?v=1b8CLF_DgFI\",\n                  },\n                  {\n                    title:\n                      \"BSL - Illuminate Insights: Understanding your box office\",\n                    videoLink: \"https://www.youtube.com/watch?v=S5Q0p29Z4Ks\",\n                  },\n                  {\n                    title:\n                      \"BSL - Illuminate Insights: Understanding your audience\",\n                    videoLink: \"https://www.youtube.com/watch?v=YCevo8eRkpQ\",\n                  },\n                ],\n              },\n            ],\n          },\n        ],\n      },\n    ],\n  },\n  {\n    navSectionTitle: \"Other key information\",\n    sections: [\n      {\n        title: \"Account Administration\",\n        visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n        viewType: tType.guides,\n        introText: \"\",\n        subSections: [\n          {\n            title: \"\",\n            visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n            modules: [\n              {\n                title: \"New User Account Creation\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n                files: [\n                  {\n                    title: \"New User Account Creation\",\n                    fileName: \"New_User_Account_Creation.pdf\",\n                  },\n                  {\n                    title: \"New User Account Creation - Accessible Version\",\n                    fileName:\n                      \"New_User_Account_Creation_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"User Management\",\n                visibleTo: [roles.GlobalAdmin, roles.Admin],\n                files: [\n                  {\n                    title: \"User Management\",\n                    fileName: \"User_Management.pdf\",\n                  },\n                  {\n                    title: \"User Management - Accessible Version\",\n                    fileName: \"User_Management_accessible_version.pdf\",\n                  },\n                ],\n              },\n              {\n                title: \"ACE Admins: Organisation Management\",\n                visibleTo: [roles.GlobalAdmin],\n                files: [\n                  {\n                    title: \"ACE Admins: Organisation Management\",\n                    fileName: \"ACE_Admins_Organisation_Management.pdf\",\n                  },\n                  {\n                    title:\n                      \"ACE Admins: Organisation Management - Accessible Version\",\n                    fileName:\n                      \"ACE_Admins_Organisation_Management_accessible_version.pdf\",\n                  },\n                ],\n              },\n            ],\n          },\n        ],\n      },\n      {\n        title: \"Upcoming Training Sessions\",\n        viewType: tType.table,\n        visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n        sessions: _getTrainingSessions(trainingSessions, false),\n      },\n      {\n        title: \"Recordings of Previous Training\",\n        viewType: tType.table,\n        visibleTo: [roles.GlobalAdmin, roles.Admin, roles.User],\n        sessions: _getTrainingSessions(trainingSessions, true),\n      },\n    ],\n  },\n];\n\nfunction _getTrainingSessions(trainingSessions, inPast) {\n  let today = new Date();\n\n  return trainingSessions.filter((x) => {\n    if (inPast) {\n      return (\n        x.date < today &&\n        (isNotEmpty(x.recordingLink) || isNotEmpty(x.transcriptFilename))\n      );\n    } else {\n      return x.date > today;\n    }\n  });\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"training-title-section\"},[_c('h1',[_vm._v(_vm._s(_vm.trainingModule.title))]),_c('div',{staticClass:\"help-caption\"},[_vm._v(_vm._s(_vm.trainingModule.introText))])]),_vm._l((_vm.trainingModule.subSections),function(section){return _c('div',{key:section.title},[(_vm.canUserSeeOption(section))?_c('div',[_c('div',{staticClass:\"training-section-title\"},[_vm._v(_vm._s(section.title))]),_vm._l((section.modules),function(mod){return _c('div',{key:mod.title},[(_vm.canUserSeeOption(mod))?_c('div',{staticClass:\"training-module\"},[_c('div',{staticClass:\"training-module-title\"},[_vm._v(_vm._s(mod.title))]),_vm._l((mod.files),function(file,index){return _c('div',{key:file.title,staticClass:\"training-module-file-item\"},[_c('div',{staticClass:\"training-module-file-name\"},[_vm._v(_vm._s(file.title))]),(file.videoLink !== undefined)?_c('a',{staticClass:\"training-video-link\",attrs:{\"href\":file.videoLink,\"target\":\"_blank\"}},[_c('i',{staticClass:\"fab fa-youtube\"}),_vm._v(\"View\\n            \")]):_vm._e(),(file.fileName !== undefined)?_c('button',{staticClass:\"training-file-download\",on:{\"click\":function($event){return _vm.downloadClicked(mod, index)}}},[_c('i',{staticClass:\"fas fa-cloud-download-alt\"}),_vm._v(\"Download\\n            \")]):_vm._e()])})],2):_vm._e()])})],2):_vm._e()])}),_c('dx-load-panel',{attrs:{\"visible\":_vm.showLoader,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.showLoader=$event}}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <div class=\"training-title-section\">\n      <h1>{{ trainingModule.title }}</h1>\n      <div class=\"help-caption\">{{ trainingModule.introText }}</div>\n    </div>\n    <div\n      v-for=\"section in trainingModule.subSections\"\n      :key=\"section.title\"\n    >\n      <div v-if=\"canUserSeeOption(section)\">\n        <div class=\"training-section-title\">{{ section.title }}</div>\n\n        <div\n          v-for=\"mod in section.modules\"\n          :key=\"mod.title\"\n        >\n          <div\n            class=\"training-module\"\n            v-if=\"canUserSeeOption(mod)\"\n          >\n            <div class=\"training-module-title\">{{ mod.title }}</div>\n\n            <div\n              class=\"training-module-file-item\"\n              v-for=\"(file, index) in mod.files\"\n              :key=\"file.title\"\n            >\n              <div class=\"training-module-file-name\">{{ file.title }}</div>\n              <a\n                v-if=\"file.videoLink !== undefined\"\n                :href=\"file.videoLink\"\n                target=\"_blank\"\n                class=\"training-video-link\"\n              >\n                <i class=\"fab fa-youtube\" />View\n              </a>\n              <button\n                v-if=\"file.fileName !== undefined\"\n                class=\"training-file-download\"\n                @click=\"downloadClicked(mod, index)\"\n              >\n                <i class=\"fas fa-cloud-download-alt\" />Download\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <dx-load-panel\n      :visible.sync=\"showLoader\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapGetters, mapActions} from \"vuex\";\nimport downloadTemplate from \"../../mixins/download-template\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\n\nexport default {\n  props: [\"trainingModule\"],\n  components: {\n    DxLoadPanel,\n  },\n  data() {\n    return {\n      showLoader: false,\n    };\n  },\n  computed: {\n    ...mapGetters(\"auth\", [\"getRole\"]),\n  },\n  mixins: [downloadTemplate],\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\"]),\n    async downloadClicked(mod, i) {\n      let fileName = mod.files[i].fileName;\n      try {\n        this.showLoader = true;\n        let success = await this.downloadTemplate(`resources/${fileName}`);\n\n        if (success === false) {\n          throw Error();\n        }\n      } catch (e) {\n        this.notifyError(\"Unable to download file. Please try again\");\n      } finally {\n        this.showLoader = false;\n      }\n    },\n    canUserSeeOption(option) {\n      return option.visibleTo.map((x) => x.role).includes(this.getRole);\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../../themes/custom-variables.scss\";\n\n.training-title-section {\n  .help-caption {\n    margin-bottom: 15px;\n  }\n}\n\n.training-module {\n  background-color: $white;\n  padding: 15px;\n  border-radius: 5px;\n  margin: 15px 0 15px 0;\n  box-shadow: 0px 2px 4px 0px rgba(199, 199, 199, 0.2);\n\n  .training-module-title {\n    font: $base-font-family-medium;\n    font-size: $font-size-subheading;\n  }\n\n  .training-module-file-name {\n    font: $base-font-family-regular;\n    font-size: $font-size-body;\n    color: $grey-16;\n    text-overflow: ellipsis;\n  }\n\n  .training-module-file-item {\n    padding: 15px 0px 15px 0px;\n    border-bottom: 1px solid $grey4;\n    display: flex;\n    flex-direction: row;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n\n    i {\n      padding-right: 8px;\n    }\n  }\n\n  .training-file-download {\n    color: $download;\n    padding-right: 10px;\n    padding-left: 10px;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    background: none;\n    border: none;\n    padding: 5px 5px;\n\n    &:hover {\n      text-decoration: underline;\n      cursor: pointer;\n    }\n\n    &:active,\n    &:focus {\n      box-shadow: 0px 0px 0px 4px rgba(61, 40, 124, 0.31) !important;\n      outline: none;\n    }\n  }\n\n  .training-test-anchor {\n    &:active,\n    &:focus {\n      box-shadow: 0px 0px 0px 4px rgba(61, 40, 124, 0.31) !important;\n      outline: none;\n    }\n  }\n}\n\n.training-section-title {\n  color: $grey-16;\n  font: $base-font-family-medium;\n  font-size: $font-size-subheading;\n}\n\n.training-video-link {\n  color: #ba0a0a!important;\n}\n\nh1 {\n  margin: unset;\n  margin-top: 10px;\n}\n\n.training-test-link {\n  background-color: transparentize($color: $brand-primary, $amount: 0.92);\n  padding: 15px;\n  border-radius: 4px;\n  margin-top: 10px;\n\n  i {\n    padding-right: 10px;\n  }\n\n  a {\n    color: black !important;\n    padding: 5px;\n  }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-module.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-module.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./training-module.vue?vue&type=template&id=5c5c4f6a&scoped=true\"\nimport script from \"./training-module.vue?vue&type=script&lang=js\"\nexport * from \"./training-module.vue?vue&type=script&lang=js\"\nimport style0 from \"./training-module.vue?vue&type=style&index=0&id=5c5c4f6a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"5c5c4f6a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',[_c('h1',{staticClass:\"training-table-header\"},[_vm._v(_vm._s(_vm.trainingTable.title))])]),_c('div',[_c('dx-data-grid',{staticClass:\"thin-column-chooser multi-select-grid-property\",attrs:{\"show-borders\":false,\"data-source\":_vm.trainingTable.sessions,\"noDataText\":\"There are currently no available training sessions\",\"columnMinWidth\":25,\"columnAutoWidth\":true,\"columns\":_vm.columns,\"allow-column-reordering\":false},scopedSlots:_vm._u([{key:\"session-template\",fn:function({data}){return [_c('div',[_c('div',{staticClass:\"session-title\"},[_vm._v(_vm._s(data.data.sessionTitle))]),_c('div',{staticClass:\"session-description\"},[_vm._v(\"\\n            \"+_vm._s(data.data.sessionDescription)+\"\\n          \")])])]}},{key:\"actions-template\",fn:function(cell){return [_c('div',[(true)?_c('div',{staticClass:\"training-action-buttons-container\"},[(!_vm.isDateInPast(cell.data.data.date))?_c('dx-button',{staticClass:\"btn-create\",attrs:{\"type\":\"default\",\"text\":\"Book\",\"hint\":\"Book this training session\"},on:{\"click\":function($event){return _vm.openLinkInNewTab(cell.data.data.bookingLink)}}}):_vm._e(),(\n                _vm.isDateInPast(cell.data.data.date) &&\n                cell.data.data.recordingLink\n              )?_c('dx-button',{staticClass:\"btn-create\",attrs:{\"type\":\"default\",\"text\":\"Open recording\",\"hint\":\"Watch this training session\"},on:{\"click\":function($event){return _vm.openLinkInNewTab(cell.data.data.recordingLink)}}}):_vm._e(),(\n                _vm.isDateInPast(cell.data.data.date) &&\n                cell.data.data.transcriptFilename\n              )?_c('dx-button',{staticClass:\"btn-create ml-2\",attrs:{\"type\":\"default\",\"text\":\"View transcript\",\"hint\":\"Download this training session's transcript\"},on:{\"click\":function($event){return _vm.downloadTranscript(cell.data.data.transcriptFilename)}}}):_vm._e()],1):_vm._e()])]}}])},[_c('dx-paging',{attrs:{\"page-size\":10}}),_c('dx-pager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('DxColumnFixing',{attrs:{\"enabled\":true}})],1)],1),_c('dx-load-panel',{attrs:{\"visible\":_vm.showLoader,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.showLoader=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const trainingTableColDefs = [\n  {\n    dataField: \"date\",\n    caption: \"Date\",\n    dataType: \"date\",\n    format: \"dd/MM/yyyy\",\n    sortOrder: \"asc\",\n  },\n  {\n    caption: \"Session\",\n    cellTemplate: \"session-template\",\n  },\n  {\n    dataField: \"type\",\n    caption: \"Type\",\n    dataType: \"string\",\n  },\n  {\n    dataField: \"duration\",\n    caption: \"Duration\",\n    dataType: \"string\",\n  },\n  {\n    caption: \"\",\n    cellTemplate: \"actions-template\",\n    width: 325,\n  },\n];\n","<template>\n  <div>\n    <div>\n      <h1 class=\"training-table-header\">{{ trainingTable.title }}</h1>\n    </div>\n    <div>\n      <dx-data-grid\n        class=\"thin-column-chooser multi-select-grid-property\"\n        :show-borders=\"false\"\n        :data-source=\"trainingTable.sessions\"\n        noDataText=\"There are currently no available training sessions\"\n        :columnMinWidth=\"25\"\n        :columnAutoWidth=\"true\"\n        :columns=\"columns\"\n        :allow-column-reordering=\"false\"\n      >\n        <dx-paging :page-size=\"10\" />\n        <dx-pager\n          :allowed-page-sizes=\"[5, 10, 25]\"\n          :show-page-size-selector=\"true\"\n          :show-info=\"true\"\n        />\n        <DxColumnFixing :enabled=\"true\" />\n\n        <template #session-template=\"{data}\">\n          <div>\n            <div class=\"session-title\">{{ data.data.sessionTitle }}</div>\n            <div class=\"session-description\">\n              {{ data.data.sessionDescription }}\n            </div>\n          </div>\n        </template>\n\n        <template #actions-template=\"cell\">\n          <div>\n            <div\n              v-if=\"true\"\n              class=\"training-action-buttons-container\"\n            >\n              <dx-button\n                v-if=\"!isDateInPast(cell.data.data.date)\"\n                type=\"default\"\n                class=\"btn-create\"\n                text=\"Book\"\n                hint=\"Book this training session\"\n                @click=\"openLinkInNewTab(cell.data.data.bookingLink)\"\n              />\n              <dx-button\n                v-if=\"\n                  isDateInPast(cell.data.data.date) &&\n                  cell.data.data.recordingLink\n                \"\n                type=\"default\"\n                class=\"btn-create\"\n                text=\"Open recording\"\n                hint=\"Watch this training session\"\n                @click=\"openLinkInNewTab(cell.data.data.recordingLink)\"\n              />\n              <dx-button\n                v-if=\"\n                  isDateInPast(cell.data.data.date) &&\n                  cell.data.data.transcriptFilename\n                \"\n                type=\"default\"\n                class=\"btn-create ml-2\"\n                text=\"View transcript\"\n                hint=\"Download this training session's transcript\"\n                @click=\"downloadTranscript(cell.data.data.transcriptFilename)\"\n              />\n            </div>\n          </div>\n        </template>\n      </dx-data-grid>\n    </div>\n    <dx-load-panel\n      :visible.sync=\"showLoader\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n\n<script>\nimport {mapActions} from \"vuex\";\nimport {trainingTableColDefs} from \"./training-table-col-defs\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {\n  DxDataGrid,\n  DxPager,\n  DxColumnFixing,\n  DxPaging,\n} from \"devextreme-vue/data-grid\";\nimport downloadTemplate from \"../../mixins/download-template\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\n\nexport default {\n  components: {\n    DxButton,\n    DxDataGrid,\n    DxPager,\n    DxColumnFixing,\n    DxPaging,\n    DxLoadPanel,\n  },\n  props: [\"trainingTable\"],\n  data() {\n    return {\n      columns: trainingTableColDefs,\n    };\n  },\n  mixins: [downloadTemplate],\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\"]),\n\n    isDateInPast(date) {\n      return date < new Date();\n    },\n    openLinkInNewTab(link) {\n      window.open(link, \"_blank\");\n    },\n    async downloadTranscript(fileName) {\n      try {\n        this.showLoader = true;\n        let success = await this.downloadTemplate(`resources/${fileName}`);\n\n        if (success === false) {\n          throw Error();\n        }\n      } catch (e) {\n        this.notifyError(\"Unable to download file. Please try again\");\n      } finally {\n        this.showLoader = false;\n      }\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../../themes/custom-variables.scss\";\n\n.session-title {\n  font: $base-font-family-medium;\n  font-size: $font-size-body;\n  text-align: start;\n}\n\n.session-description {\n  color: $grey2;\n  text-align: start;\n  white-space: normal;\n}\n\n.dx-header-row > td > .dx-datagrid-text-content {\n  text-align: start;\n}\n\n.training-table-header {\n  padding-bottom: 15px;\n}\n\n.training-action-buttons-container {\n  text-align: end;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-table.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./training-table.vue?vue&type=template&id=9a1488e2&scoped=true\"\nimport script from \"./training-table.vue?vue&type=script&lang=js\"\nexport * from \"./training-table.vue?vue&type=script&lang=js\"\nimport style0 from \"./training-table.vue?vue&type=style&index=0&id=9a1488e2&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"9a1488e2\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"help-side-nav-bar-container\"},[_c('div',{staticClass:\"help-nav-bar-training-content-container\"},[(_vm.getRole !== null)?_c('div',{staticClass:\"help-nav-sections-container\"},_vm._l((_vm.trainingModules),function(navSection){return _c('div',{key:navSection.navSectionTitle,staticClass:\"help-nav-section\"},[_c('div',{staticClass:\"help-heading help-nav-section-header\"},[_vm._v(\"\\n          \"+_vm._s(navSection.navSectionTitle)+\"\\n        \")]),_vm._l((navSection.sections),function(mod){return _c('div',{key:mod.title},[(_vm.canUserSeeOption(mod))?_c('button',{staticClass:\"help-module-select\",class:_vm.currentModule.title == mod.title ? `activeModule` : ``,on:{\"click\":function($event){return _vm.onSideNavOptionClicked(mod)},\"focus\":_vm.onModuleFocused}},[_c('div',{staticClass:\"help-caption\"},[_vm._v(\"\\n              \"+_vm._s(mod.title)+\"\\n            \")]),_c('i',{staticClass:\"fas fa-chevron-right\"})]):_vm._e()])})],2)}),0):_vm._e()]),_c('div',{staticClass:\"contact-us-container\"},[_c('div',[_vm._v(\"Still need our help?\")]),_c('div',{staticClass:\"contact-us-caption\"},[_vm._v(\"Contact our dedicated help desk\")]),_c('div',{attrs:{\"tabindex\":\"0\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.contactUsClicked.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\"))return null;return _vm.closeDrawer.apply(null, arguments)}]}},[_c('dx-button',{staticClass:\"contact-us-button\",attrs:{\"text\":\"Contact us\",\"type\":\"default\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.contactUsClicked}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div class=\"help-side-nav-bar-container\">\n    <div class=\"help-nav-bar-training-content-container\">\n      <div\n        class=\"help-nav-sections-container\"\n        v-if=\"getRole !== null\"\n      >\n        <div\n          class=\"help-nav-section\"\n          v-for=\"navSection in trainingModules\"\n          :key=\"navSection.navSectionTitle\"\n        >\n          <div class=\"help-heading help-nav-section-header\">\n            {{ navSection.navSectionTitle }}\n          </div>\n          <div\n            v-for=\"mod in navSection.sections\"\n            :key=\"mod.title\"\n          >\n            <button\n              v-if=\"canUserSeeOption(mod)\"\n              class=\"help-module-select\"\n              @click=\"onSideNavOptionClicked(mod)\"\n              :class=\"currentModule.title == mod.title ? `activeModule` : ``\"\n              @focus=\"onModuleFocused\"\n            >\n              <div class=\"help-caption\">\n                {{ mod.title }}\n              </div>\n\n              <i class=\"fas fa-chevron-right\"></i>\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"contact-us-container\">\n      <div>Still need our help?</div>\n      <div class=\"contact-us-caption\">Contact our dedicated help desk</div>\n      <div\n        @keydown.enter=\"contactUsClicked\"\n        @keydown.tab=\"closeDrawer\"\n        tabindex=\"0\"\n      >\n        <dx-button\n          class=\"contact-us-button\"\n          text=\"Contact us\"\n          type=\"default\"\n          styling-mode=\"contained\"\n          @click=\"contactUsClicked\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\nimport {trainingModuleDefinitons} from \"../../components/help-centre/training-module-definitions\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport {mapGetters} from \"vuex\";\n\nexport default {\n  components: {\n    DxButton,\n  },\n  data() {\n    return {\n      trainingModules: trainingModuleDefinitons,\n      currentModule: trainingModuleDefinitons[0].sections[0],\n    };\n  },\n  computed: {\n    ...mapGetters(\"auth\", [\"getRole\"]),\n  },\n  methods: {\n    onSideNavOptionClicked(e) {\n      this.currentModule = e;\n      this.$emit(\"moduleChanged\", e);\n    },\n    canUserSeeOption(option) {\n      return option.visibleTo.map((x) => x.role).includes(this.getRole);\n    },\n    contactUsClicked() {\n      window.open(\"mailto:uk_illuminate_support@pwc.com\");\n    },\n    onModuleFocused(e) {\n      this.$emit(\"moduleFocused\", e);\n    },\n    closeDrawer(e) {\n      this.$emit(\"closeDrawer\");\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"../../themes/custom-variables.scss\";\n\n.help-side-nav-bar-container {\n  background-color: $white;\n  height: calc(100% - 100px);\n  display: flex;\n  flex-direction: column;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n  min-width: 375px;\n  padding: 10px 40px 40px 40px;\n}\n\n.help-nav-sections-container {\n  display: flex;\n  flex-direction: column;\n  flex-wrap: nowrap;\n}\n\n.help-nav-bar-training-content-container {\n  display: flex;\n  gap: 25px;\n  flex-direction: column;\n}\n\n.help-heading {\n  font: $base-font-family-medium;\n  margin: unset;\n}\n\n.help-caption {\n  font: $base-font-family-medium;\n  font-size: $font-size-body;\n  color: $grey2;\n}\n\n.help-nav-section-header {\n  font: $base-font-family-medium !important;\n  font-size: $font-size-subheading !important;\n  padding-bottom: 5px;\n}\n\n.help-nav-section {\n  margin-top: 10px;\n  margin-bottom: 20px;\n}\n\n.help-module-select {\n  background-color: $white;\n  border-radius: 4px;\n  padding-left: 15px;\n  padding: 15px;\n  margin: 8px 0 8px 0;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  border: 0;\n  width: 100%;\n  justify-content: space-between;\n  align-items: center;\n  transition: all ease-in-out 0.2s;\n\n  i {\n    display: none;\n    color: transparentize($brand-primary, 0.5);\n  }\n\n  &:hover,\n  &.activeModule {\n    background-color: transparentize($color: $brand-primary, $amount: 0.8);\n\n    i {\n      display: inline;\n    }\n\n    .help-caption {\n      color: $brand-primary !important;\n    }\n\n    cursor: pointer;\n  }\n\n  &:active,\n  &:focus {\n    box-shadow: 0px 0px 0px 4px rgba(61, 40, 124, 0.31) !important;\n    outline: none;\n  }\n}\n\n.contact-us-container {\n  background: linear-gradient(\n    98.9deg,\n    $brand-primary 0%,\n    rgba(59, 39, 119, 0.9) 101.21%\n  );\n  border-radius: 4px;\n  color: $white;\n  box-shadow: 0px 1px 23px 0px rgba(61, 40, 124, 0.4);\n  padding: 15px;\n}\n\n.contact-us-button {\n  border-color: $white !important;\n  color: $white !important;\n  width: fit-content;\n  margin-top: 15px;\n  border-radius: 3px;\n\n  .dx-button-text {\n    color: white !important;\n  }\n}\n\n.contact-us-caption {\n  font-size: $font-size-body;\n  color: transparentize($white, 0.3);\n}\n\n@media (width < 1000px) {\n  .help-side-nav-bar-container {\n    min-width: 325px;\n  }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-nav-menu.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-nav-menu.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./training-nav-menu.vue?vue&type=template&id=7b2853f8&scoped=true\"\nimport script from \"./training-nav-menu.vue?vue&type=script&lang=js\"\nexport * from \"./training-nav-menu.vue?vue&type=script&lang=js\"\nimport style0 from \"./training-nav-menu.vue?vue&type=style&index=0&id=7b2853f8&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"7b2853f8\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"help-container\">\n    <div class=\"help-side-nav-container\">\n      <dx-scroll-view\n        :key=\"window.width\"\n        :disabled=\"window.width <= 750\"\n      >\n        <div class=\"help-headings\">\n          <div class=\"help-headings-text\">\n            <h1 class=\"help-heading\">Training Modules</h1>\n            <div\n              class=\"help-caption help-top-section-caption\"\n              v-if=\"window.width > 750\"\n            >\n              Welcome to the Illuminate training hub.\n            </div>\n            <div\n              class=\"help-caption help-top-section-caption\"\n              v-if=\"window.width > 750\"\n            >\n              All the material you need to get started on Illuminate is here.\n            </div>\n            <div\n              class=\"help-caption help-top-section-caption\"\n              v-if=\"window.width > 750\"\n            >\n              Click the tiles below to find out more.\n            </div>\n          </div>\n          <dxButton\n            v-if=\"window.width < 750\"\n            :icon=\"navDrawerOpened ? `fas fa-angle-up` : `fas fa-angle-down`\"\n            @click=\"navDrawerOpened = !navDrawerOpened\"\n          >\n          </dxButton>\n        </div>\n\n        <training-nav-menu\n          v-if=\"window.width > 750\"\n          @moduleChanged=\"onModuleChanged\"\n        />\n      </dx-scroll-view>\n    </div>\n\n    <div v-if=\"window.width < 750\">\n      <DxDrawer\n        opened-state-mode=\"overlap\"\n        position=\"top\"\n        reveal-mode=\"expand\"\n        :opened=\"navDrawerOpened\"\n        :hide-on-outside-click=\"true\"\n        template=\"listMenu\"\n      >\n        <template #listMenu>\n          <training-nav-menu\n            @moduleChanged=\"onModuleChanged\"\n            @moduleFocused=\"onModuleFocused\"\n            @closeDrawer=\"closeDrawer\"\n          />\n        </template>\n      </DxDrawer>\n    </div>\n\n    <div class=\"help-content-container\">\n      <dx-scroll-view class=\"help-content-scrollview\">\n        <div class=\"help-content-module-container\">\n          <training-module\n            v-if=\"currentModule.viewType === viewTypes.guides\"\n            :training-module=\"currentModule\"\n          />\n\n          <training-table\n            v-if=\"currentModule.viewType === viewTypes.table\"\n            :trainingTable=\"currentModule\"\n          />\n        </div>\n      </dx-scroll-view>\n    </div>\n  </div>\n</template>\n\n<script>\nimport DxButton from \"devextreme-vue/button\";\nimport DxScrollView from \"devextreme-vue/scroll-view\";\nimport {trainingModuleDefinitons} from \"../components/help-centre/training-module-definitions\";\nimport TrainingModule from \"../components/help-centre/training-module.vue\";\nimport TrainingTable from \"../components/help-centre/training-table.vue\";\nimport {trainingSideNavBarViewType} from \"../common/constants\";\nimport TrainingNavMenu from \"../components/help-centre/training-nav-menu.vue\";\nimport DxDrawer from \"devextreme-vue/drawer\";\n\nexport default {\n  components: {\n    TrainingNavMenu,\n    TrainingModule,\n    TrainingTable,\n    DxDrawer,\n    DxButton,\n    DxScrollView,\n  },\n  data() {\n    return {\n      trainingModuleDefinitions: trainingModuleDefinitons,\n      currentModule: trainingModuleDefinitons[0].sections[0],\n      viewTypes: trainingSideNavBarViewType,\n      navDrawerOpened: false,\n      window: {\n        width: 0,\n        height: 0,\n      },\n      drawerMenuButtonOptions: {\n        icon: \"fas fa-angle-down \",\n        onClick: () => {\n          this.navDrawerOpened = !this.navDrawerOpened;\n        },\n      },\n    };\n  },\n  methods: {\n    onModuleChanged(e) {\n      this.currentModule = e;\n      if (this.navDrawerOpened) {\n        this.navDrawerOpened = false;\n      }\n    },\n    onModuleFocused(e) {\n      this.navDrawerOpened = true;\n    },\n    closeDrawer(each) {\n      this.navDrawerOpened = false;\n    },\n    handleResize() {\n      this.window.width = window.innerWidth;\n      this.window.height = window.innerHeight;\n    },\n  },\n  created() {\n    window.addEventListener(\"resize\", this.handleResize);\n    this.handleResize();\n  },\n};\n</script>\n\n<style lang=\"scss\">\n@import \"../themes/custom-variables.scss\";\n\n.help-container {\n  margin: -22px 0px 0 -30px;\n  height: calc(100% - 65px);\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n  position: absolute;\n  width: 100%;\n}\n\n.help-headings {\n  padding-left: 40px;\n  padding-top: 40px;\n  padding-right: 20px;\n  display: flex;\n  flex-direction: column;\n\n  .help-headings-text {\n    align-self: center;\n  }\n\n  .dx-button {\n    background-color: white;\n    border-radius: 4px;\n  }\n\n  i {\n    color: $grey-04 !important;\n  }\n}\n\n.help-side-nav-container {\n  min-width: 375px;\n}\n\n.help-heading {\n  font: $base-font-family-medium;\n  margin: unset;\n}\n\n.help-caption {\n  font: $base-font-family-medium;\n  font-size: $font-size-body;\n  color: $grey2;\n}\n\n.help-content-container {\n  background-color: $grey5;\n  width: 100%;\n  height: 100%;\n  padding: 30px;\n\n  .help-content-scrollview {\n    width: 100%;\n  }\n\n  .help-content-module-container {\n    height: 100%;\n  }\n}\n\n.help-top-section-caption {\n  margin-top: 5px;\n  padding-bottom: 5px;\n}\n\n@media (width < 1000px) {\n  .help-side-nav-bar-container {\n    min-width: 325px;\n  }\n}\n\n@media (width < 750px) {\n  .help-container {\n    flex-direction: column;\n    position: relative;\n  }\n  .help-headings {\n    flex-direction: row;\n    justify-content: space-between;\n    padding-bottom: 40px;\n    padding-right: 40px;\n    padding-top: 30px;\n  }\n}\n\n@media (width < 350px) {\n  .help-headings {\n    flex-direction: column;\n    justify-content: flex-start;\n    align-content: flex-start;\n    align-items: flex-start;\n    padding-bottom: 20px;\n    padding-right: 20px;\n    padding-top: 20px;\n\n    .help-headings-text {\n      align-self: flex-start;\n    }\n  }\n\n  .help-content-container {\n    padding: 10px;\n    padding-right: 0px;\n  }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help-centre.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help-centre.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./help-centre.vue?vue&type=template&id=23b18c83\"\nimport script from \"./help-centre.vue?vue&type=script&lang=js\"\nexport * from \"./help-centre.vue?vue&type=script&lang=js\"\nimport style0 from \"./help-centre.vue?vue&type=style&index=0&id=23b18c83&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"events-upload-page-container\"},[_c('div',{staticClass:\"events-upload-container\"},[_c('div',{staticClass:\"page-header\"},[_c('div',{staticClass:\"title-back-container\"},[_c('div',{staticClass:\"page-back\"},[_c('dx-button',{staticClass:\"btn-back\",attrs:{\"icon\":\"fas fa-arrow-left\",\"styling-mode\":\"contained\"},on:{\"click\":_vm.onBackClicked}})],1),_vm._m(0)])]),_c('div',{staticClass:\"content-block\"},[_vm._m(1),_c('div',[_c('dx-validation-group',{ref:_vm.organisationRefKey},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',[_c('h2',[_c('label',{staticClass:\"required\"},[_vm._v(\" Organisation \")])])]),_c('dx-lookup',{ref:_vm.orgLookupRef,attrs:{\"data-source\":_vm.orgDataSource,\"display-expr\":\"name\",\"value-expr\":\"id\",\"search-enabled\":true,\"search-mode\":\"contains\",\"search-expr\":['name'],\"min-search-length\":2,\"show-data-before-search\":true,\"search-placeholder\":\"Select Organisation...\",\"value\":_vm.selectedOrganisation,\"defer-rendering\":false},on:{\"value-changed\":_vm.onOrgValueChanged}},[_c('dx-validator',{ref:_vm.orgLookupValidatorRef},[_c('dx-required-rule',{attrs:{\"message\":\"Organisation Access is required\"}})],1)],1)],1)])])],1),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',[_vm._m(2),_c('div',{staticClass:\"mb-3\"},[_vm._v(\"\\n              The upload can take several minutes, once the process has\\n              initiated please stay on this page until it has completed. Once\\n              the upload has completed you will be able to see the new events\\n              in the events schedule. If the upload was unsuccessful there\\n              will be a summary of validation errors below.\\n            \")]),_c('dx-button',{staticClass:\"btn-primary btn-confirm upload-template-btn\",attrs:{\"text\":\"Download template\",\"type\":\"default\",\"styling-mode\":\"contained\",\"on-click\":_vm.onDownloadTemplateFile}})],1),_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.isUploading)?_c('div',{staticClass:\"entity-warning red\"},[_c('p',[_vm._v(\"Data import in progress. Please wait...\")])]):_vm._e(),(_vm.isImportSuccess)?_c('div',{staticClass:\"entity-warning green\"},[_c('strong',[_vm._v(\" File has been successfully uploaded \")])]):_vm._e(),(_vm.isImportFailure)?_c('div',{staticClass:\"entity-warning fail\"},[(_vm.failureMessages.length === 0)?_c('div',[_c('strong',[_vm._v(\"Data import failed\")]),_vm._v(\" - see error breakdown\\n                  below\\n                \")]):_c('div',[_c('strong',[_vm._v(\"Data import failed\")]),_vm._l((_vm.failureMessages),function(msg){return _c('li',{key:msg},[_vm._v(\"\\n                      \"+_vm._s(msg)+\"\\n                    \")])})],2)]):_vm._e()])])]),_c('div',{staticClass:\"upload-container\"},[_c('i',{staticClass:\"fas fa-upload\"}),_c('dx-file-uploader',{ref:_vm.fileUploaderRef,attrs:{\"multiple\":false,\"allowed-file-extensions\":_vm.allowedFileExtensions,\"accept\":\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\"name\":\"file\",\"invalid-file-extension-message\":\"File Type is not allowed\",\"upload-mode\":\"useButtons\",\"upload-url\":_vm.uploadUrl,\"upload-headers\":_vm.getUploadHeaders()},on:{\"uploaded\":_vm.onUploadSuccessful,\"upload-started\":_vm.onUploadStarted,\"upload-error\":_vm.onUploadError,\"value-changed\":_vm.attachmentsValueChanged}})],1)])]),(_vm.showErrorBreakdown)?_c('div',[_c('error-summary-grid',{attrs:{\"errorsDataSource\":_vm.errorsList}})],1):_vm._e()])]),_c('dx-load-panel',{attrs:{\"visible\":_vm.showLoader,\"show-indicator\":true,\"show-pane\":true,\"shading\":true,\"hide-on-outside-click\":false},on:{\"update:visible\":function($event){_vm.showLoader=$event}}})],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-title-container\"},[_c('h1',{staticClass:\"page-title\"},[_vm._v(\"Events bulk upload\")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"row events-upload-instructions-container\"},[_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 1:\")]),_c('br'),_vm._v(\"\\n          Download the latest template by clicking on the button below\\n          'Download template'. Please save the file using the name prescribed\\n          and do not rename, as this will impact the subsequent upload\\n          process.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 2:\")]),_c('br'),_vm._v(\"\\n          Select the name of the appropriate organisation from the dropdown\\n          below.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 3:\")]),_c('br'),_vm._v(\"\\n          Populate the template, ensuring all of the compulsory fields include\\n          a value. For more details on the compulsory fields, please refer to\\n          the 'Events Bulk Upload' guide on the Training page.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 4:\")]),_c('br'),_vm._v(\"\\n          Attach the file to the page, either by dragging and dropping the\\n          file into the square below or using the 'Select file' button below.\\n          Please note that the format of the file needs to be .xlsx.\\n        \")]),_c('div',{staticClass:\"col\"},[_c('b',[_vm._v(\"Step 5:\")]),_c('br'),_vm._v(\"\\n          The chosen file will then appear on screen with the message ‘Ready\\n          to Upload’. Please click the 'Upload' button in order to initiate\\n          the process.\\n        \")])])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('h2',[_c('label',{staticClass:\"required\"},[_vm._v(\"Upload file\")])])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"error-breakdown-text-section\"},[_vm._m(0),_c('div',[_vm._v(\"\\n      This table shows all of the errors that occurred when attempting to\\n      process the attached file. Please attempt the recommended fixes below\\n      and then upload again. To see the fixes and affected cells, select the\\n      dropdown for each error.\\n    \")]),_c('div',[_c('strong',[_vm._v(\"Total number of errors\")]),_vm._v(\": \"+_vm._s(_vm.errorCount))])]),_c('DxDataGrid',{attrs:{\"data-source\":_vm.groupedErrors,\"remote-operations\":false,\"allow-column-reordering\":false,\"row-alternation-enabled\":true,\"noDataText\":_vm.noDataText,\"width\":'100%',\"columns\":_vm.columns},scopedSlots:_vm._u([{key:\"masterDetailTemplate\",fn:function({data: error}){return [_c('div',{staticClass:\"rec-fixes-container\"},[_c('div',{staticClass:\"entity-warning red\"},[(error.data.fixes.length > 0)?_c('div',[_vm._v(\"Recommended fixes:\")]):_vm._e(),_c('ul',_vm._l((error.data.fixes),function(fix,index){return _c('li',{key:index},[_vm._v(\"\\n              \"+_vm._s(fix)+\"\\n            \")])}),0)]),_c('div',{staticClass:\"entity-warning fail\"},[(error.data.errors.length > 0)?_c('div',[_vm._v(\"Affected cells:\")]):_vm._e(),_c('ul',_vm._l((error.data.errors),function(err,index){return _c('li',{key:index},[_vm._v(\"\\n              \"+_vm._s(err.cell)+\": \"+_vm._s(err.description)+\"\\n            \")])}),0)])])]}}])},[_c('DxPager',{attrs:{\"allowed-page-sizes\":[5, 10, 25],\"show-page-size-selector\":true,\"show-info\":true}}),_c('DxPaging',{attrs:{\"page-size\":10}}),_c('DxMasterDetail',{attrs:{\"enabled\":true,\"template\":\"masterDetailTemplate\"}})],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('h2',[_c('label',[_vm._v(\"Error breakdown\")])])\n}]\n\nexport { render, staticRenderFns }","export const errorSummaryGridColDefs = [\n  {\n    dataField: \"errorType\",\n    caption: \"Error type\",\n    dataType: \"string\",\n    allowHiding: false,\n    visible: false\n  },\n  {\n    dataField: \"description\",\n    caption: \"Description\",\n    dataType: \"string\",\n    allowHiding: false,\n  },\n  {\n    dataField: \"errorCount\",\n    caption: \"Error count\",\n    dataType: \"string\",\n    allowHiding: false,\n  },\n\n];\n","export const bulkUploadErrors = {\n  RequiredFieldEmpty: {\n    id: 0,\n    fixes: [\"Ensure all mandatory fields are populated.\"],\n    description: \"The mandatory field for ${columnName} appears to be empty.\"\n  },\n  CharacterLimitExceeded: {\n    id: 1,\n    fixes: [\"Trim the text to fit within the character limit.\", \"Consider removing extraneous details or abbreviating where possible.\"],\n    description: \"The text in ${columnName} exceeds the allowed character limit.\"\n  },\n  AlreadyExists: {\n    id: 2,\n    fixes: [\"Verify for duplicate entries and amend as necessary.\", \"Each entry should be distinct and unique.\"],\n    description: \"The input for ${columnName} already exists.\"\n  },\n  NotFound: {\n    id: 3,\n    fixes: [\"Confirm the value provided exists and is correctly spelled.\", \"These values are case-sensitive\", \n    \"Ensure that the value appears in the dropdown for this column\"],\n    description: \"The input for ${columnName} could not be found.\"\n  },\n  InvalidPostcode: {\n    id: 4,\n    fixes: [\"Verify the postcode for accuracy and adherence to the regional format.\", \"Ensure the postcode is valid for the specified region.\"],\n    description: \"The postcode provided in ${columnName} appears to be invalid.\"\n  },\n  DateOutOfRange: {\n    id: 5,\n    fixes: [\"Check that the date falls within the acceptable range.\", \"Ensure that start dates precede end dates.\"],\n    description: \"The date provided in ${columnName} is outside the permissible range.\"\n  },\n  DateFormat: {\n    id: 6,\n    fixes: [\"Ensure the date adheres to the correct format.\", \"The expected format is DD/MM/YYYY.\"],\n    description: \"The date format in ${columnName} seems to be incorrect.\"\n  },\n  IntegerFormat: {\n    id: 7,\n    fixes: [\"Ensure the value is a whole number.\", \"Check for any non-numeric characters in the value.\"],\n    description: \"The value in ${columnName} should be a whole number.\"\n  },\n  MultipleVenues: {\n    id: 8,\n    fixes: [\"Ensure only one venue is specified per row.\", \"If multiple venues are required, consider adding additional rows.\"],\n    description: \"More than one venue has been specified in ${columnName}.\"\n  }\n};\n","<template>\n  <div>\n    <div class=\"error-breakdown-text-section\">\n      <h2><label>Error breakdown</label></h2>\n      <div>\n        This table shows all of the errors that occurred when attempting to\n        process the attached file. Please attempt the recommended fixes below\n        and then upload again. To see the fixes and affected cells, select the\n        dropdown for each error.\n      </div>\n      <div><strong>Total number of errors</strong>: {{ errorCount }}</div>\n    </div>\n\n    <DxDataGrid\n      :data-source=\"groupedErrors\"\n      :remote-operations=\"false\"\n      :allow-column-reordering=\"false\"\n      :row-alternation-enabled=\"true\"\n      :noDataText=\"noDataText\"\n      :width=\"'100%'\"\n      :columns=\"columns\"\n    >\n      <DxPager\n        :allowed-page-sizes=\"[5, 10, 25]\"\n        :show-page-size-selector=\"true\"\n        :show-info=\"true\"\n      />\n      <DxPaging :page-size=\"10\" />\n\n      <DxMasterDetail\n        :enabled=\"true\"\n        template=\"masterDetailTemplate\"\n      />\n      <template #masterDetailTemplate=\"{data: error}\">\n        <div class=\"rec-fixes-container\">\n          <div class=\"entity-warning red\">\n            <div v-if=\"error.data.fixes.length > 0\">Recommended fixes:</div>\n            <ul>\n              <li\n                v-for=\"(fix, index) in error.data.fixes\"\n                :key=\"index\"\n              >\n                {{ fix }}\n              </li>\n            </ul>\n          </div>\n          <div class=\"entity-warning fail\">\n            <div v-if=\"error.data.errors.length > 0\">Affected cells:</div>\n            <ul>\n              <li\n                v-for=\"(err, index) in error.data.errors\"\n                :key=\"index\"\n              >\n                {{ err.cell }}: {{ err.description }}\n              </li>\n            </ul>\n          </div>\n        </div>\n      </template>\n    </DxDataGrid>\n  </div>\n</template>\n<script>\nimport {\n  DxDataGrid,\n  DxPager,\n  DxPaging,\n  DxMasterDetail,\n} from \"devextreme-vue/data-grid\";\nimport {errorSummaryGridColDefs} from \"./error-summary-grid-col-defs\";\nimport {isNotEmpty} from \"@/common/helperFunctions\";\nimport {\n  bulkUploadErrors\n} from \"@/components/shared/bulk-upload-error-defs\";\n\nexport default {\n  components: {\n    DxDataGrid,\n    DxPager,\n    DxPaging,\n    DxMasterDetail,\n  },\n  props: [\"errorsDataSource\"],\n  data() {\n    return {\n      columns: errorSummaryGridColDefs,\n      noDataText: \"No errors to display\",\n      gridRefKey: \"gridRefKey\",\n      bulkUploadErrors: bulkUploadErrors,\n    };\n  },\n  computed: {\n    errorCount() {\n      if (isNotEmpty(this.errorsDataSource)) {\n        return this.errorsDataSource.length;\n      }\n      return 0;\n    },\n    groupedErrors() {\n      return this.groupErrors(this.errorsDataSource);\n    },\n  },\n  methods: {\n    groupErrors(errors) {\n      // Groups by ColumnName and ErrorType\n      let groupedErrors = {};\n\n      errors.forEach((error) => {\n        let key = `${error.columnName}_${error.errorType}`;\n\n        if (!groupedErrors[key]) {\n          let errorType = this.getErrorTypeAsText(error.errorType);\n          groupedErrors[key] = {\n            errorType: errorType,\n            columnName: error.columnName,\n            description: this.getErrorDescription(errorType, error.columnName),\n            fixes: this.getFixesForErrorType(errorType),\n            errors: [],\n          };\n        }\n\n        groupedErrors[key].errors.push({\n          cell: error.cell,\n          description: error.description,\n        });\n\n        groupedErrors[key].errorCount = groupedErrors[key].errors.length;\n      });\n\n      return Object.values(groupedErrors);\n    },\n    getFixesForErrorType(errorType) {\n      return bulkUploadErrors[errorType].fixes || [];\n    },\n    getErrorDescription(errorType, columnName) {\n      // Return the appropriate description based on the error type\n      return (\n        bulkUploadErrors[errorType].description.replace(\n          \"${columnName}\",\n          columnName,\n        ) || \"\"\n      );\n    },\n    getErrorTypeAsText(errorType) {\n      // Get the keys and values from the bulkUploadErrors object\n      const errorTypes = Object.keys(bulkUploadErrors);\n\n      // Find the key that matches the errorType\n      const foundErrorType = errorTypes.find(\n        (key) => bulkUploadErrors[key].id === errorType,\n      );\n\n      // Return the key (error type as text) if found, otherwise return null\n      return foundErrorType || null;\n    },\n  },\n};\n</script>\n\n<style scoped lang=\"scss\">\n@import \"@/themes/custom-variables.scss\";\n\nh2 {\n  width: fit-content;\n}\n\n.content-block label {\n  font-size: $font-size-subheading;\n}\n\n.error-breakdown-text-section {\n  display: flex;\n  gap: 5px;\n  flex-direction: column;\n}\n\n.entity-warning {\n  padding: 15px 18px 5px 30px !important;\n}\n\n.entity-warning.fail {\n    border-left: 3px solid #C52A1A;\n    background: rgba(0, 0, 0, 0);\n    color: unset;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-summary-grid.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./error-summary-grid.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./error-summary-grid.vue?vue&type=template&id=8e409284&scoped=true\"\nimport script from \"./error-summary-grid.vue?vue&type=script&lang=js\"\nexport * from \"./error-summary-grid.vue?vue&type=script&lang=js\"\nimport style0 from \"./error-summary-grid.vue?vue&type=style&index=0&id=8e409284&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8e409284\",\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div class=\"events-upload-page-container\">\n    <div class=\"events-upload-container\">\n      <div class=\"page-header\">\n        <div class=\"title-back-container\">\n          <div class=\"page-back\">\n            <dx-button\n              class=\"btn-back\"\n              icon=\"fas fa-arrow-left\"\n              styling-mode=\"contained\"\n              @click=\"onBackClicked\"\n            >\n            </dx-button>\n          </div>\n          <div class=\"page-title-container\">\n            <h1 class=\"page-title\">Events bulk upload</h1>\n          </div>\n        </div>\n      </div>\n      <div class=\"content-block\">\n        <div class=\"row events-upload-instructions-container\">\n          <div class=\"col\">\n            <b>Step 1:</b><br />\n            Download the latest template by clicking on the button below\n            'Download template'. Please save the file using the name prescribed\n            and do not rename, as this will impact the subsequent upload\n            process.\n          </div>\n          <div class=\"col\">\n            <b>Step 2:</b><br />\n            Select the name of the appropriate organisation from the dropdown\n            below.\n          </div>\n          <div class=\"col\">\n            <b>Step 3:</b><br />\n            Populate the template, ensuring all of the compulsory fields include\n            a value. For more details on the compulsory fields, please refer to\n            the 'Events Bulk Upload' guide on the Training page.\n          </div>\n          <div class=\"col\">\n            <b>Step 4:</b><br />\n            Attach the file to the page, either by dragging and dropping the\n            file into the square below or using the 'Select file' button below.\n            Please note that the format of the file needs to be .xlsx.\n          </div>\n          <div class=\"col\">\n            <b>Step 5:</b><br />\n            The chosen file will then appear on screen with the message ‘Ready\n            to Upload’. Please click the 'Upload' button in order to initiate\n            the process.\n          </div>\n        </div>\n\n        <div>\n          <dx-validation-group :ref=\"organisationRefKey\">\n            <div class=\"row\">\n              <div class=\"col\">\n                <div>\n                  <h2><label class=\"required\"> Organisation </label></h2>\n                </div>\n                <dx-lookup\n                  :ref=\"orgLookupRef\"\n                  :data-source=\"orgDataSource\"\n                  display-expr=\"name\"\n                  value-expr=\"id\"\n                  :search-enabled=\"true\"\n                  search-mode=\"contains\"\n                  :search-expr=\"['name']\"\n                  :min-search-length=\"2\"\n                  :show-data-before-search=\"true\"\n                  search-placeholder=\"Select Organisation...\"\n                  @value-changed=\"onOrgValueChanged\"\n                  :value=\"selectedOrganisation\"\n                  :defer-rendering=\"false\"\n                >\n                  <dx-validator :ref=\"orgLookupValidatorRef\">\n                    <dx-required-rule\n                      message=\"Organisation Access is required\"\n                    />\n                  </dx-validator>\n                </dx-lookup>\n              </div>\n            </div>\n          </dx-validation-group>\n        </div>\n\n        <div class=\"row\">\n          <div class=\"col\">\n            <div>\n              <div>\n                <h2><label class=\"required\">Upload file</label></h2>\n              </div>\n              <div class=\"mb-3\">\n                The upload can take several minutes, once the process has\n                initiated please stay on this page until it has completed. Once\n                the upload has completed you will be able to see the new events\n                in the events schedule. If the upload was unsuccessful there\n                will be a summary of validation errors below.\n              </div>\n              <dx-button\n                text=\"Download template\"\n                type=\"default\"\n                class=\"btn-primary btn-confirm upload-template-btn\"\n                styling-mode=\"contained\"\n                :on-click=\"onDownloadTemplateFile\"\n              >\n              </dx-button>\n            </div>\n\n            <div>\n              <div class=\"row\">\n                <div class=\"col\">\n                  <div\n                    v-if=\"isUploading\"\n                    class=\"entity-warning red\"\n                  >\n                    <p>Data import in progress. Please wait...</p>\n                  </div>\n                  <div\n                    v-if=\"isImportSuccess\"\n                    class=\"entity-warning green\"\n                  >\n                    <strong> File has been successfully uploaded </strong>\n                  </div>\n                  <div\n                    v-if=\"isImportFailure\"\n                    class=\"entity-warning fail\"\n                  >\n                  <div v-if=\"failureMessages.length === 0\">\n                    <strong>Data import failed</strong> - see error breakdown\n                    below\n                  </div>\n                    <div v-else>\n                    <strong>Data import failed</strong>\n                      <li\n                        v-for=\"msg in failureMessages\"\n                        :key=\"msg\"\n                      >\n                        {{ msg }}\n                      </li>\n                      </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n            <div class=\"upload-container\">\n              <i class=\"fas fa-upload\"></i>\n              <dx-file-uploader\n                :ref=\"fileUploaderRef\"\n                :multiple=\"false\"\n                :allowed-file-extensions=\"allowedFileExtensions\"\n                accept=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n                name=\"file\"\n                invalid-file-extension-message=\"File Type is not allowed\"\n                @uploaded=\"onUploadSuccessful\"\n                @upload-started=\"onUploadStarted\"\n                @upload-error=\"onUploadError\"\n                @value-changed=\"attachmentsValueChanged\"\n                upload-mode=\"useButtons\"\n                :upload-url=\"uploadUrl\"\n                :upload-headers=\"getUploadHeaders()\"\n              >\n              </dx-file-uploader>\n            </div>\n\n            \n          </div>\n        </div>\n\n        <div v-if=\"showErrorBreakdown\">\n          <error-summary-grid :errorsDataSource=\"errorsList\" />\n        </div>\n      </div>\n    </div>\n\n    <dx-load-panel\n      :visible.sync=\"showLoader\"\n      :show-indicator=\"true\"\n      :show-pane=\"true\"\n      :shading=\"true\"\n      :hide-on-outside-click=\"false\"\n    />\n  </div>\n</template>\n<script>\nimport {DxValidator, DxRequiredRule} from \"devextreme-vue/validator\";\nimport {DxFileUploader} from \"devextreme-vue/file-uploader\";\nimport DxValidationGroup from \"devextreme-vue/validation-group\";\nimport CustomStore from \"devextreme/data/custom_store\";\nimport DataSource from \"devextreme/data/data_source\";\nimport {mapActions} from \"vuex\";\nimport {\n  configureLookupSearch,\n  isNotEmpty\n} from \"@/common/helperFunctions\";\nimport {DxLookup} from \"devextreme-vue/lookup\";\nimport authService from \"../components/api-authorization/AuthorizeService\";\nimport {DxLoadPanel} from \"devextreme-vue/load-panel\";\nimport {DxButton} from \"devextreme-vue/button\";\nimport downloadTemplate from \"../mixins/download-template\";\nimport ErrorSummaryGrid from \"@/components/shared/error-summary-grid.vue\";\nimport { activeEntityFilter } from '../common/constants';\n\nconst {VUE_APP_API_HOSTNAME} = process.env;\n\nexport default {\n  components: {\n    DxValidator,\n    DxLoadPanel,\n    DxRequiredRule,\n    DxFileUploader,\n    DxValidationGroup,\n    DxLookup,\n    DxButton,\n    ErrorSummaryGrid,\n  },\n  data() {\n    return {\n      orgDataSource: new DataSource({\n        store: new CustomStore({\n          key: \"id\",\n          load: this.loadOrgs,\n          byKey: async (key) => {\n            return await this.fetchOrgDetails(key);\n          },\n        }),\n      }),\n      fileUploaderRef: \"fileUploaderRef\",\n      orgLookupRef: \"orgLookupRef\",\n      orgLookupValidatorRef: \"orgLookupValidatorRef\",\n      selectedOrganisation: null,\n      files: [],\n      allowedFileExtensions: [\".xlsx\"],\n      validCharacters: /^[\\p{L}+\\d\\s._-]+\\.[\\w]+/u,\n      organisationRefKey: \"organisationData\",\n      isUploading: false,\n      showLoader: false,\n      fileName: null,\n      isImportSuccess: false,\n      isImportFailure: false,\n      failureMessages: [],\n      authTokenTimeout: null,\n      authToken: null,\n      templateFilename: \"EventsUploadTemplate.xlsx\",\n      errorsList: null,\n    };\n  },\n  computed: {\n    orgLookupValidatorInstance() {\n      return this.$refs[this.orgLookupValidatorRef].instance;\n    },\n    orgLookupInstance() {\n      return this.$refs[this.orgLookupRef].instance;\n    },\n    fileUploaderInstance() {\n      return this.$refs[this.fileUploaderRef].instance;\n    },\n    uploadUrl() {\n      return `${VUE_APP_API_HOSTNAME}/events/${this.selectedOrganisation}`;\n    },\n    organisationData() {\n      return this.$refs[this.organisationRefKey].instance;\n    },\n    showErrorBreakdown() {\n      if (isNotEmpty(this.errorsList)) {\n        return this.errorsList.length > 0;\n      }\n      return false;\n    },\n  },\n  methods: {\n    ...mapActions(\"notify\", [\"notifyError\", \"notifySuccess\"]),\n    ...mapActions(\"organisations\", {\n      fetchOrgDetails: \"fetchOrgDetails\",\n    }),\n    onBackClicked() {\n      this.$router.push({\n        name: \"events-list\",\n      });\n    },\n    async loadOrgs(searchOptions) {\n      let loadOptions = configureLookupSearch(searchOptions, 'name', false, activeEntityFilter);\n\n      let response = await this.$http.get(`organisations`, {\n        params: loadOptions,\n      });\n\n      return {\n        data: response.data.data,\n        totalCount: response.data.totalCount,\n        summary: response.data.summary,\n        groupCount: response.data.groupCount,\n      };\n    },\n    attachmentsValueChanged(e) {\n      if (e.value.length > 0) {\n        const result = this.organisationData.validate();\n        if (!result.isValid) {\n          e.component._files[0].cancelButton._clickAction();\n          this.notifyError(\n            `Unable to upload file. ${result.brokenRules[0].message}`,\n          );\n        }\n\n        this.files = e.value;\n        for (let index = 0; index < e.value.length; index++) {\n          let fileName = e.value[index].name;\n\n          if (this.validCharacters.test(fileName)) continue;\n          if (!e.component._files[index].isValid()) {\n            e.component._files[index].$statusMessage.append(\n              \"File Name is invalid\",\n            );\n          } else {\n            e.component._files[index].$statusMessage.text(\n              \"File Name is invalid\",\n            );\n            e.component._files[index].$statusMessage.addClass(\"error-text\");\n            e.component._files[index].isValid = () => false;\n          }\n        }\n      }\n    },\n    getUploadHeaders() {\n      let headers = {\n        \"Access-Control-Allow-Origin\": \"*\",\n      };\n      if (this.authToken) {\n        headers.Authorization = `Bearer ${this.authToken}`;\n      }\n      return headers;\n    },\n    onUploadSuccessful(e) {\n      this.clearUploaderState();\n      let resp = JSON.parse(e.request.response);\n\n      this.isImportSuccess = resp.success;\n      this.isImportFailure = !resp.success;\n\n      this.errorsList = resp.errors;\n    },\n    onUploadStarted() {\n      this.isUploading = true;\n      this.successMessages = [];\n      this.failureMessages = [];\n      this.isImportFailure = false;\n      this.isImportSuccess = false;\n      this.errorsList = false;\n    },\n    onUploadError(e) {\n      this.isUploading = false;\n      this.isImportFailure = true;\n\n      if (e.request.response == undefined){\n        this.failureMessages.push(\"An unexpected error occured whilst processing the file.\")\n      }\n      else{\n        this.failureMessages = [JSON.parse(e.request.response).message];\n      }\n\n      this.clearUploaderState();\n    },\n    clearUploaderState() {\n      this.fileUploaderInstance.reset();\n      this.orgLookupValidatorInstance.reset();\n      this.isUploading = false;\n    },\n    onOrgValueChanged(e) {\n      this.selectedOrganisation = e.value;\n    },\n    async getToken() {\n      const result = await authService.getAccessToken();\n      if (result) {\n        this.authToken = result;\n        this.authTokenTimeout = setTimeout(this.getToken, 30000);\n      }\n    },\n    async onDownloadTemplateFile() {\n      this.showLoader = true;\n      await this.downloadTemplate(`resources/${this.templateFilename}`);\n      this.showLoader = false;\n    },\n  },\n  beforeDestroy() {\n    clearTimeout(this.authTokenTimeout);\n  },\n  mounted() {\n    this.getToken();\n  },\n  mixins: [downloadTemplate],\n};\n</script>\n<style scoped lang=\"scss\">\n@import \"../themes/custom-variables.scss\";\n\n.upload-container .dx-fileuploader-input-wrapper {\n  background: rgba(183, 183, 183, 0.1) !important;\n}\n\n.page-title-container {\n  margin-left: 0px !important;\n}\n\n.page-subtitle {\n  font: $base-font-family-medium !important;\n  font-size: $font-size-subheading !important;\n}\n\n.content-block label {\n  font-size: $font-size-subheading;\n}\n\n.events-upload-page-container {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n}\n\n@media (width < 1000px) {\n  .events-upload-page-container {\n    gap: 0px;\n  }\n  .events-upload-container {\n    min-width: unset;\n  }\n  .content-block {\n    margin-bottom: unset;\n  }\n}\n\n@media (width < 515px) {\n  .dx-datagrid {\n    .dx-datagrid-search-panel {\n      display: none;\n    }\n  }\n}\n\n.dx-toolbar-item {\n  vertical-align: top;\n}\n\n.dx-datagrid-header-panel {\n  .dx-toolbar {\n    height: 50px;\n  }\n}\n\nh2 {\n  width: fit-content;\n}\n\n.events-upload-instructions-container {\n  margin-left: 0px !important;\n  margin-right: 15px;\n  div {\n    margin-left: 0px !important;\n    padding-left: 0;\n    font-size: $font-size-component;\n    text-justify: inter-word;\n  }\n}\n\n@media (width < 760px) {\n  .events-upload-instructions-container {\n    display: flex;\n    flex-direction: column;\n  }\n}\n\n.events-upload-container {\n  min-width: 300px;\n  flex-shrink: 1;\n}\n\n.result-col {\n  max-width: 600px;\n  span {\n    max-width: 600px;\n    white-space: initial;\n    word-wrap: break-word;\n  }\n}\n\n.dx-lookup {\n  max-width: 300px;\n}\n\n.upload-template-btn {\n  margin-bottom: 20px;\n  width: fit-content;\n}\n\n.processing-label {\n  padding-right: 10px;\n}\n.success-status-label {\n  padding-left: 5px;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-bulk-upload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-bulk-upload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./event-bulk-upload.vue?vue&type=template&id=24238656&scoped=true\"\nimport script from \"./event-bulk-upload.vue?vue&type=script&lang=js\"\nexport * from \"./event-bulk-upload.vue?vue&type=script&lang=js\"\nimport style0 from \"./event-bulk-upload.vue?vue&type=style&index=0&id=24238656&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"24238656\",\n  null\n  \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport Router from \"vue-router\";\nimport store from \"./store/index\";\nimport authService from \"./components/api-authorization/AuthorizeService\";\n\nimport defaultLayout from \"./layouts/side-nav-outer-toolbar\";\nimport surveyLayout from \"./layouts/survey-layout\";\nimport staticLayout from \"./layouts/static-layout\";\nimport {handleRouterError} from \"./utils/error-handler\";\nimport Home from \"./views/home\";\nimport SurveyResponse from \"./views/survey-response\";\nimport subjects from \"./config/subjects\";\nimport TermsOfUse from \"./views/terms-of-use.vue\";\nimport OrganisationOverview from \"./views/organisation-overview.vue\";\nimport OrganisationsList from \"./views/organisations-list.vue\";\nimport EventOverview from \"./views/event-overview.vue\";\nimport SurveyOverview from \"./views/survey-create-update-overview.vue\";\nimport EventsList from \"./views/events-management.vue\";\nimport LocationDetail from \"./views/location-details.vue\";\nimport LocationsList from \"./views/locations-list.vue\";\nimport UserDetails from \"./views/user-details.vue\";\nimport UsersList from \"./views/users-list.vue\";\nimport PrivacyPolicy from \"./views/privacy-policy.vue\";\nimport CookieNotice from \"./views/cookie-notice.vue\";\nimport BoxOffice from \"./views/box-office-data.vue\";\nimport SurveyData from \"./views/survey-data.vue\";\nimport Insights from \"./views/insights.vue\";\nimport InsightsPublic from \"./views/insights-public.vue\";\nimport ApiAuthorizationRoutes from \"./components/api-authorization/ApiAuthorizationRoutes\";\nimport HelpCentre from \"./views/help-centre.vue\";\nimport EventBulkUpload from \"./views/event-bulk-upload.vue\";\n\n// route level code-splitting\n// this generates a separate chunk (e.g. login.[hash].js) for routes\n// which is lazy-loaded when the route is visited.\nconst Chunks = {\n  Error: () => import(/* webpackChunkName: \"error\" */ \"./views/error\"),\n};\n\nfunction ensureValidIntParam(paramName, to, next, optional = false) {\n  const paramValue = to.params[paramName];\n  if (optional && !paramValue) {\n    next();\n    return;\n  }\n\n  const intValue = parseInt(paramValue);\n  if (isNaN(intValue)) {\n    next({name: \"pageNotFound\", params: {0: to.path}});\n  } else {\n    next();\n  }\n}\n\nVue.use(Router);\n\nconst router = new Router({\n  mode: \"history\",\n  routes: [\n    {\n      path: \"\",\n      name: \"home\",\n      meta: {requiresAuth: true, subject: subjects.home.subject},\n      components: {\n        layout: defaultLayout,\n        content: Home,\n      },\n    },\n    {\n      path: \"/error/:errorCode\",\n      name: \"error\",\n      meta: {requiresAuth: false},\n      components: {\n        layout: defaultLayout,\n        content: Chunks.Error,\n      },\n      beforeEnter: (to, from, next) =>\n        ensureValidIntParam(\"errorCode\", to, next),\n      props: {\n        content: (route) => ({\n          errorCode: parseInt(route.params.errorCode, 10),\n        }),\n        layout: false,\n      },\n    },\n    {\n      path: \"/survey/:quickcode\",\n      name: \"survey-responses\",\n      meta: {\n        requiresAuth: false,\n        subject: subjects.surveyResponse.subject,\n      },\n      components: {\n        layout: surveyLayout,\n        content: SurveyResponse,\n      },\n      props: {\n        content: (route) => ({\n          quickcode: route.params.quickcode,\n        }),\n        layout: false,\n      },\n    },\n    {\n      path: \"/locations-list\",\n      name: \"locations-list\",\n      meta: {requiresAuth: true, subject: subjects.location.subject},\n      components: {\n        layout: defaultLayout,\n        content: LocationsList,\n      },\n    },\n    {\n      path: \"/location-overview/:id?\",\n      name: \"location-details\",\n      meta: {requiresAuth: true, subject: subjects.location.subject},\n      components: {\n        layout: defaultLayout,\n        content: LocationDetail,\n      },\n    },\n    {\n      path: \"/organisations-list\",\n      name: \"organisations-list\",\n      meta: {requiresAuth: true, subject: subjects.organisation.subject},\n      components: {\n        layout: defaultLayout,\n        content: OrganisationsList,\n      },\n    },\n    {\n      path: \"/organisation-details/:id?\",\n      name: \"organisation-details\",\n      meta: {requiresAuth: true, subject: subjects.organisation.subject},\n      components: {\n        layout: defaultLayout,\n        content: OrganisationOverview,\n      },\n    },\n    {\n      path: \"/events-list\",\n      name: \"events-list\",\n      meta: {requiresAuth: true, subject: subjects.event.subject},\n      components: {\n        layout: defaultLayout,\n        content: EventsList,\n      },\n    },\n    {\n      path: \"/event-bulk-upload\",\n      name: \"event-bulk-upload\",\n      meta: {requiresAuth: true, subject: subjects.event.subject},\n      components: {\n        layout: defaultLayout,\n        content: EventBulkUpload,\n      },\n    },\n    {\n      path: \"/event-overview/:id?\",\n      name: \"event-details\",\n      meta: {requiresAuth: true, subject: subjects.event.subject},\n      components: {\n        layout: defaultLayout,\n        content: EventOverview,\n      },\n    },\n    {\n      path: \"/terms-of-use\",\n      name: \"terms-of-use\",\n      meta: {requiresAuth: true},\n      components: {\n        layout: defaultLayout,\n        content: TermsOfUse,\n      },\n    },\n    {\n      path: \"/privacy-policy\",\n      name: \"privacy-policy\",\n      meta: {requiresAuth: false},\n      components: {\n        layout: async () =>\n          (await authService.isAuthenticated()) ? defaultLayout : staticLayout,\n        content: PrivacyPolicy,\n      },\n    },\n    {\n      path: \"/cookie-notice\",\n      name: \"cookie-notice\",\n      meta: {requiresAuth: false},\n      components: {\n        layout: async () =>\n          (await authService.isAuthenticated()) ? defaultLayout : staticLayout,\n        content: CookieNotice,\n      },\n    },\n    {\n      path: \"/users-list\",\n      name: \"users-list\",\n      meta: {requiresAuth: true, subject: subjects.user.subject},\n      components: {\n        layout: defaultLayout,\n        content: UsersList,\n      },\n    },\n    {\n      path: \"/user-overview/:id?\",\n      name: \"user-details\",\n      meta: {requiresAuth: true, subject: subjects.user.subject},\n      components: {\n        layout: defaultLayout,\n        content: UserDetails,\n      },\n    },\n    {\n      path: \"/survey-overview/:id\",\n      name: \"survey-details\",\n      meta: {requiresAuth: true, subject: subjects.survey.subject},\n      components: {\n        layout: defaultLayout,\n        content: SurveyOverview,\n      },\n      props: {layout: false, content: true},\n    },\n    {\n      path: \"/box-office-data\",\n      name: \"box-office-data\",\n      meta: {requiresAuth: true, subject: subjects.boxOffice.subject},\n      components: {\n        layout: defaultLayout,\n        content: BoxOffice,\n      },\n    },\n    {\n      path: \"/survey-data/:surveyId\",\n      name: \"survey-data\",\n      meta: {requiresAuth: true, subject: subjects.survey.subject},\n      components: {\n        layout: defaultLayout,\n        content: SurveyData,\n      },\n    },\n    {\n      path: \"/insights\",\n      name: \"insights\",\n      meta: {requiresAuth: true, subject: subjects.insights.subject},\n      components: {\n        layout: defaultLayout,\n        content: Insights,\n      },\n    },\n    {\n      path: \"/insights-public\",\n      name: \"insights-public\",\n      meta: {requiresAuth: false},\n      components: {\n        layout: staticLayout,\n        content: InsightsPublic,\n      },\n    },\n    {\n      path: \"/training\",\n      name: \"training\",\n      meta: {requiresAuth: true, subject: subjects.home.subject},\n      components: {\n        layout: defaultLayout,\n        content: HelpCentre,\n      },\n    },\n    {\n      path: \"*\",\n      name: \"pageNotFound\",\n      meta: {requiresAuth: true, subject: subjects.home.subject},\n      components: {\n        layout: defaultLayout,\n        content: Home,\n      },\n    },\n    ...ApiAuthorizationRoutes,\n  ],\n});\n\nrouter.beforeEach(async (to, from, next) => {\n  // if next page is an oidc callback then next()\n  if (to.path.includes(\"/authentication\") || to.meta.requiresAuth === false) {\n    next();\n    return;\n  }\n\n  // Need this as sometimes it 401s on this call.\n  // AuthRoute won't get displayed unless authorised.\n  try {\n    // will be auth'ed if you get to this point. If not then will 401.\n    let touAccepted = await getTermsAcceptanceStatus();\n\n    // if terms accepted or next route is ToU then next\n    if (touAccepted || to.name === \"terms-of-use\") {\n      next();\n      return;\n    }\n\n    // if not accepted then route to ToU\n    if (!touAccepted) {\n      next({\n        name: \"terms-of-use\",\n        query: {redirect: to.fullPath},\n      });\n      return;\n    }\n  } catch (err) {\n    next();\n  }\n});\n\n//router.beforeEach(\n//  multiguard([vuexOidcCreateRouterMiddleware(store, \"oidc\"), termsGuard]),\n//);\n\nrouter.onError(handleRouterError);\n\nexport default router;\n\nasync function getTermsAcceptanceStatus() {\n  if (store.state.auth.termsAgreedStatus == null) {\n    await store.dispatch(\"auth/getTermsAcceptanceStatus\");\n  }\n\n  return store.state.auth.termsAgreedStatus;\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-overview.vue?vue&type=style&index=0&id=2f769a12&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./illuminate-widgets.vue?vue&type=style&index=0&id=6126c13a&prod&scoped=true&lang=scss\"","import { isNotEmpty } from \"../../common/helperFunctions\";\nimport $axios from \"../../utils/axios-instance\";\n\nexport default {\n  namespaced: true,\n  state: {\n    user: null,\n    termsAgreedStatus: null,\n  },\n  actions: {\n    getTermsAcceptanceStatus({ state, dispatch }) {\n      return new Promise((resolve, reject) => {\n        if (state.termsAgreedStatus === true) {\n          resolve(state.termsAgreedStatus);\n        } else {\n          dispatch(\"setTermsAcceptedStatus\")\n            .then((response) => {\n              resolve(response);\n            })\n            .catch((err) => {\n              reject(err);\n            });\n        }\n      });\n    },\n    setTermsAcceptedStatus({ commit }) {\n      return new Promise((resolve, reject) => {\n        $axios\n          .get(`/users/termsofuse`)\n          .then((response) => {\n            commit(\"updateTermsAcceptanceStatus\", response.data.isAccepted);\n            resolve(response.data);\n          })\n          .catch((err) => {\n            reject(err);\n          });\n      });\n    },\n    saveTermsAcceptanceStatus() {\n      return new Promise((resolve, reject) => {\n        $axios\n          .post(`/users/termsofuse`, null)\n          .then((resp) => {\n            resolve(resp);\n          })\n          .catch((err) => {\n            reject(err);\n          });\n      });\n    },\n    getUser({ state, dispatch }) {\n      return new Promise((resolve, reject) => {\n        if (state.user) {\n          resolve(state.user);\n        } else {\n          dispatch(\"setUser\")\n            .then((response) => {\n              resolve(response);\n            })\n            .catch((err) => {\n              reject(err);\n            });\n        }\n      });\n    },\n    setUser({ commit }) {\n      return new Promise((resolve, reject) => {\n        $axios\n          .get(`/users/profile`)\n          .then((response) => {\n            commit(\"updateUser\", response.data);\n            resolve(response.data);\n          })\n          .catch((err) => {\n            reject(err);\n          });\n      });\n    },\n  },\n  mutations: { \n    updateUser(state, user) {\n      state.user = user;\n    },\n    updateTermsAcceptanceStatus(state, termsAgreedStatus) {\n      state.termsAgreedStatus = termsAgreedStatus;\n    },\n  },\n\n  getters: {\n    getUser: (state) => state.user,\n    getTermsAcceptanceStatus: (state) => state.termsAgreedStatus,\n    getRole: (state) => {\n      if (isNotEmpty(state.user)){\n        return state.user.roles[0];\n      }\n      return null;\n  },\n}\n};\n","const dismissInterval = 5000\n\nexport default {\n  namespaced: true,\n  state: {\n    notification: {}\n  },\n  mutations: {\n    error(state, message) {\n      state.notification = { message, type: 'error', dismissAfter: dismissInterval }\n    },\n    info(state, message) {\n      state.notification = { message, type: 'info', dismissAfter: dismissInterval }\n    },\n    success(state, message) {\n      state.notification = { message, type: 'success', dismissAfter: dismissInterval }\n    },\n    warning(state, message) {\n      state.notification = { message, type: 'warning', dismissAfter: dismissInterval }\n    }\n  },\n  actions: {\n    notifyError( { commit }, message ) {\n      commit('error', message)\n    },\n    notifyInfo( { commit }, message ) {\n      commit('info', message)\n    },\n    notifySuccess( { commit }, message ) {\n      commit('success', message)\n    },\n    notifyWarning( { commit }, message ) {\n      commit('warning', message)\n    },\n  }\n}","const processingStatus = {\n  UNSET: 0,\n  PROCESSING: 1,\n  READY: 2,\n};\n\nexport default Object.freeze(processingStatus);  ","import $axios from \"@/utils/axios-instance\";\nimport processingStatus from \"@/common/processing-status.js\";\nimport {getLogoFromEndpoint} from \"../../common/helperFunctions\";\nconst baseUrl = \"survey-responses\";\n\nexport default {\n  namespaced: true,\n  state: {\n    status: processingStatus.UNSET,\n    questionnaire: undefined,\n    surveyLogo: null,\n  },\n  mutations: {\n    clearQuestionnaire(state) {\n      state.status = processingStatus.UNSET;\n      state.questionnaire = undefined;\n    },\n    setQuestionnaire(state, questionnaire) {\n      state.questionnaire = questionnaire;\n      state.status = processingStatus.READY;\n    },\n    setAnswers(state, answers) {\n      state.questionnaire.surveyAnswers = answers;\n      state.status = processingStatus.READY;\n    },\n    setStatus(state, status) {\n      state.status = status;\n    },\n    setSurveyLogo(state, logo) {\n      state.surveyLogo = logo;\n    },\n  },\n  actions: {\n    async saveQuestionnaire({commit, state}, payload) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The survey is already being processed\");\n      } else {\n        commit(\"setStatus\", processingStatus.PROCESSING);\n        try {\n          let response = await $axios.put(\n            `${baseUrl}/${state.questionnaire.id}`,\n            {\n              ...payload,\n              id: state.questionnaire.id,\n            },\n          );\n\n          commit(\"setAnswers\", payload.surveyAnswers);\n\n          return response.data;\n        } catch (err) {\n          commit(\"setStatus\", processingStatus.READY);\n          throw err;\n        } finally {\n          commit(\"setStatus\", processingStatus.READY);\n        }\n      }\n    },\n    async getQuestionnaire({commit, state}, data) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The survey is already being processed\");\n      } else {\n        commit(\"setStatus\", processingStatus.PROCESSING);\n        try {\n          let response = await $axios.get(\n            `${baseUrl}/${data.id}?validationKey=${data.validationKey}`,\n          );\n\n          commit(\"setQuestionnaire\", response.data);\n          return response.data;\n        } catch (err) {\n          commit(\"clearQuestionnaire\");\n          throw err;\n        } finally {\n          commit(\"setStatus\", processingStatus.READY);\n        }\n      }\n    },\n    async createFromQuickCode({commit, state}, payload) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The survey is already being processed\");\n      } else {\n        commit(\"setStatus\", processingStatus.PROCESSING);\n        try {\n          let response = await $axios.post(\n            `${baseUrl}/create-from-code`,\n            payload,\n          );\n          return response.data;\n        } catch (err) {\n          commit(\"setStatus\", processingStatus.READY);\n          throw err;\n        } finally {\n          commit(\"setStatus\", processingStatus.READY);\n        }\n      }\n    },\n    async getSurveyLogo({commit, state}, data) {\n      try {\n        let surveyLogo = (\n          await getLogoFromEndpoint(\n            `${baseUrl}/${data.id}/logo?validationKey=${data.validationKey}`,\n          )\n        ).base64;\n        commit(\"setSurveyLogo\", surveyLogo);\n      } catch (err) {\n        // fail silently as this means logo could not be loaded. Will default to ACE.\n      }\n    },\n  },\n  getters: {\n    isProcessing: (state) => state.status === processingStatus.PROCESSING,\n  },\n};\n","import $axios from \"@/utils/axios-instance\";\nimport processingStatus from \"@/common/processing-status.js\";\nimport { isNotEmpty } from \"@/common/helperFunctions\";\n\nexport default {\n  namespaced: true,\n  state: {\n    eventDetails: {},\n    duplicatingEvent: false,\n    status: processingStatus.UNSET,\n  },\n  mutations: {\n    clear(state) {\n      state.status = processingStatus.UNSET;\n      state.eventDetails = {};\n      this.duplicatingEvent = false;\n    },\n    setStatus(state, status) {\n      state.status = status;\n    },\n    setEventDetails(state, eventDetails) {\n      state.eventDetails = eventDetails;\n    },\n    setDuplicatingEvent(state, duplicatingEvent) {\n      state.duplicatingEvent = duplicatingEvent;\n    },\n    addOrg(state, eventOrg) {\n      if (\n        state.eventDetails.eventOrganisations === undefined ||\n        state.eventDetails.eventOrganisations === null\n      ) {\n        state.eventDetails.eventOrganisations = [eventOrg];\n      } else {\n        state.eventDetails.eventOrganisations.push(eventOrg);\n      }\n    },\n    removeOrg(state, id) {\n      const idx = state.eventDetails.eventOrganisations.findIndex(\n        (x) => x.organisationId === id,\n      );\n\n      if (idx > -1) {\n        state.eventDetails.eventOrganisations.splice(idx, 1);\n      }\n    },\n  },\n  actions: {\n    async create({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The event is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        let response = await $axios.post(\"events\", state.eventDetails);\n        return response.data.id;\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async update({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The event is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        await $axios.put(\"events\", state.eventDetails);\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async delete({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The event is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        await $axios.delete(\"events\", {\n          data: {eventId: state.eventDetails.id},\n        });\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async fetchEventDetails({commit, state}, id) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The event is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        let response = await $axios.get(`events/${id}`);\n        commit(\"setEventDetails\", response.data);\n        return response.data;\n      } catch (err) {\n        commit(\"clear\");\n        throw err;\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async fetchDuplicateEventName({commit, state}){\n\n      if (!isNotEmpty(state.eventDetails.name)){\n        throw new Error(\n          `Event name is empty`,\n        );\n      }\n\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      commit(\"setEventDetails\", {\n        ...state.eventDetails,\n        name: incrementEventSuffix(state.eventDetails.name)\n      });\n\n      commit(\"setStatus\", processingStatus.READY);\n\n      return;\n      \n    },\n    async clear({ commit, state }){\n      commit(\"clear\");\n    }\n  },\n  getters: {\n    isProcessing: (state) => state.status === processingStatus.PROCESSING,\n  },\n};\n\nfunction incrementEventSuffix(eventName) {\n  // Split the string into parts\n  let parts = eventName.split(' - ');\n\n  // Check if the last part is a number\n  if (!isNaN(parts[parts.length - 1])) {\n      // If it is, increment it\n      parts[parts.length - 1] = parseInt(parts[parts.length - 1]) + 1;\n  } else {\n      // If it's not, add \" - 1\" to the end\n      parts.push('1');\n  }\n\n  // Join the parts back together and return the result\n  return parts.join(' - ');\n}\n\n","import $axios from \"@/utils/axios-instance\";\nimport processingStatus from \"@/common/processing-status.js\";\n\nexport default {\n  namespaced: true,\n  state: {\n    locationDetails: {},\n    status: processingStatus.UNSET,\n  },\n  mutations: {\n    clear(state) {\n      state.status = processingStatus.UNSET;\n      state.locationDetails = {};\n    },\n    setStatus(state, status) {\n      state.status = status;\n    },\n    setLocationDetails(state, locationDetails) {\n      state.locationDetails = locationDetails;\n    },\n  },\n  actions: {\n    async create({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The location is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        await $axios.post(\"locations\", state.locationDetails);\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async update({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The location is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        await $axios.put(\"locations\", state.locationDetails);\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async delete({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The location is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        await $axios.delete(\"locations\", {\n          data: {locationId: state.locationDetails.id},\n        });\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async fetchLocationDetails({commit, state}, id) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The location is already being processed\");\n      }\n\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        let response = await $axios.get(`locations/${id}`);\n        commit(\"setLocationDetails\", response.data);\n        return response.data;\n      } catch (err) {\n        commit(\"clear\");\n        throw err;\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    clear({ commit, state }){\n      commit(\"clear\");\n    }\n  },\n  getters: {\n    isProcessing: (state) => state.status === processingStatus.PROCESSING,\n  },\n};\n","import $axios from \"@/utils/axios-instance\";\nimport processingStatus from \"@/common/processing-status.js\";\nimport { getLogoFromEndpoint } from \"../../common/helperFunctions\";\n\nexport default {\n  namespaced: true,\n  state: {\n    orgDetails: {},\n    status: processingStatus.UNSET,\n    orgLogo: null,\n  },\n  mutations: {\n    clear(state) {\n      state.status = processingStatus.UNSET;\n      state.orgDetails = {};\n      state.orgLogo = null;\n    },\n    setStatus(state, status) {\n      state.status = status;\n    },\n    setOrgDetails(state, orgDetails) {\n      state.orgDetails = orgDetails;\n    },\n    setOrgLogo(state, orgLogo) {\n      state.orgLogo = orgLogo;\n    },\n    addBOProviderRef(state, orgBORef) {\n      if (\n        state.orgDetails.organisationBoxOffices === undefined ||\n        state.orgDetails.organisationBoxOffices === null\n      ) {\n        state.orgDetails.organisationBoxOffices = [orgBORef];\n      } else {\n        state.orgDetails.organisationBoxOffices.push(orgBORef);\n      }\n    },\n    removeBOProviderRef(state, data) {\n      const idx = state.orgDetails.organisationBoxOffices.findIndex(\n        (x) =>\n          x.boxOfficeProviderId === data.boxOfficeProviderId &&\n          x.providerOrgRef === data.providerOrgRef &&\n          x.providerKey === data.providerKey,\n      );\n\n      if (idx > -1) {\n        state.orgDetails.organisationBoxOffices.splice(idx, 1);\n      }\n    },\n  },\n  actions: {\n    async create({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The organisation is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        await $axios.post(\"organisations\", state.orgDetails);\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async update({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The organisation is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        await $axios.put(\"organisations\", state.orgDetails);\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async delete({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The organisation is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        await $axios.delete(\"organisations\", {\n          data: {organisationId: state.orgDetails.id},\n        });\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async fetchOrgDetails({commit, state}, id) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The organisation is already being processed\");\n      }\n\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        let response = await $axios.get(`organisations/${id}`);\n        commit(\"setOrgDetails\", response.data);\n        return response.data;\n      } catch (err) {\n        commit(\"clear\");\n        throw err;\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async getOrgLogo({commit, state}, id) {\n      try {\n        let orgLogo = (await getLogoFromEndpoint(`organisations/${id}/logo`)).base64;\n        commit(\"setOrgLogo\", orgLogo);\n      } catch (err) {\n        // fail silently as this means logo could not be loaded.\n      }\n    },\n    clear({commit, state}) {\n      commit(\"clear\");\n    },\n  },\n  getters: {\n    isProcessing: (state) => state.status === processingStatus.PROCESSING,\n  },\n};\n","import $axios from \"@/utils/axios-instance\";\nimport processingStatus from \"@/common/processing-status.js\";\n\nexport default {\n  namespaced: true,\n  state: {\n    userDetails: {},\n    status: processingStatus.UNSET,\n  },\n  mutations: {\n    clear(state) {\n      state.status = processingStatus.UNSET;\n      state.userDetails = {};\n    },\n    setStatus(state, status) {\n      state.status = status;\n    },\n    setuserDetails(state, userDetails) {\n      state.userDetails = userDetails;\n    },\n  },\n  actions: {\n    async create({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The user is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        await $axios.post(\"users\", state.userDetails);\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async update({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The user is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        await $axios.put(\"users\", state.userDetails);\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async delete({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The user is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        await $axios.delete(\"users\", {\n          data: {userId: state.userDetails.id},\n        });\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async fetchUserDetails({commit, state}, id) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The user is already being processed\");\n      }\n\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      try {\n        let response = await $axios.get(`users/${id}`);\n        commit(\"setuserDetails\", response.data);\n        return response.data;\n      } catch (err) {\n        commit(\"clear\");\n        throw err;\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    clear({commit, state}){\n      commit(\"clear\");\n    }\n  },\n  getters: {\n    isProcessing: (state) => state.status === processingStatus.PROCESSING,\n  },\n};\n","import $axios from \"@/utils/axios-instance\";\nimport processingStatus from \"@/common/processing-status.js\";\nimport {isNotEmpty} from \"../../common/helperFunctions\";\n\nexport default {\n  namespaced: true,\n  state: {\n    surveyDetails: {},\n    status: processingStatus.UNSET,\n  },\n  mutations: {\n    clear(state) {\n      state.status = processingStatus.UNSET;\n      state.surveyDetails = {};\n      state.surveyTemplateDetails = {};\n    },\n    setStatus(state, status) {\n      state.status = status;\n    },\n    setSurveyDetails(state, surveyDetails) {\n      state.surveyDetails = surveyDetails;\n    },\n    setSurveyTemplateDetails(state, surveyTemplateDetails) {\n      state.surveyTemplateDetails = surveyTemplateDetails;\n    },\n  },\n  actions: {\n    async create({commit, state}, eventId) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The survey is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        let response;\n        if (isNotEmpty(eventId)) {\n          response = await $axios.post(\"surveys\", {eventId: eventId});\n        } else {\n          response = await $axios.post(\"surveys\", {});\n        }\n        return response.data;\n      } catch (err) {\n        throw err;\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async update({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The survey is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n\n      // be aware that this will make a mess of objects\n      // convert surveyDetails to form and ignore empty values (as it causes 400s)\n      let formData = new FormData();\n\n      for (let key in state.surveyDetails) {\n        let val = state.surveyDetails[key]\n        if (val !== null && val != undefined){\n          formData.append(key, val);\n        }\n      }\n\n      try {\n        // need diff method here as ContentType is form so that logo can be sent\n        await $axios({\n          method: \"put\",\n          url: `surveys/${state.surveyDetails.id}`,\n          data: formData,\n          headers: {\"Content-Type\": \"multipart/form-data\"},\n        });\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async delete({commit, state}) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The survey is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        await $axios.delete(\"surveys\", {\n          data: {surveyId: state.surveyDetails.id},\n        });\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    async fetchSurveyDetails({commit, state}, id) {\n      try {\n        let response = await $axios.get(`surveys/${id}`);\n        commit(\"setSurveyDetails\", response.data);\n        return response.data;\n      } catch (err) {\n        commit(\"clear\");\n        throw err;\n      }\n    },\n    async fetchSurveyTemplateDetails({commit, state}, id) {\n      let response = await $axios.get(`survey-templates/${id}`);\n      commit(\"setSurveyTemplateDetails\", response.data);\n      return response.data;\n    },\n    async deleteSurveyTemplate({commit, state}, id) {\n      if (state.status === processingStatus.PROCESSING) {\n        throw new Error(\"The survey template is already being processed\");\n      }\n      commit(\"setStatus\", processingStatus.PROCESSING);\n      try {\n        await $axios.delete(\"survey-templates\", {\n          data: {surveyTemplateId: id},\n        });\n      } finally {\n        commit(\"setStatus\", processingStatus.READY);\n      }\n    },\n    clear({commit, state}) {\n      commit(\"clear\");\n    },\n  },\n  getters: {\n    isProcessing: (state) => state.status === processingStatus.PROCESSING,\n  },\n};\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport {createStore} from \"vuex-extensions\";\nimport authModule from \"./modules/auth\";\nimport notifyModule from \"./modules/notify\";\nimport surveyResponseModule from \"./modules/survey-response\";\nimport eventsModule from \"./modules/events\";\nimport locationsModule from \"./modules/locations\";\nimport organisationsModule from \"./modules/organisations\";\nimport usersModule from \"./modules/users\";\nimport surveysModule from \"./modules/surveys\";\n\nVue.use(Vuex);\n\nexport default createStore(Vuex.Store, {\n  state: {},\n  modules: {\n    auth: authModule,\n    notify: notifyModule,\n    surveyResponse: surveyResponseModule,\n    events: eventsModule,\n    locations: locationsModule,\n    organisations: organisationsModule,\n    users: usersModule,\n    surveys: surveysModule,\n  },\n  getters: {},\n});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./training-table.vue?vue&type=style&index=0&id=9a1488e2&prod&scoped=true&lang=scss\"","module.exports = __webpack_public_path__ + \"img/illuminate_logo.46e97805.svg\";","import { UserManager, WebStorageStateStore } from 'oidc-client';\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\n\nexport class AuthorizeService {\n  _callbacks = [];\n  _nextSubscriptionId = 0;\n  _user = null;\n  _isAuthenticated = false;\n\n  // By default pop ups are disabled because they don't work properly on Edge.\n  // If you want to enable pop up authentication simply set this flag to false.\n  _popUpDisabled = true;\n\n  async isAuthenticated() {\n    const user = await this.getUser();\n    return !!user;\n  }\n\n  async getUser() {\n    if (this._user && this._user.profile) {\n      return this._user.profile;\n    }\n\n    await this.ensureUserManagerInitialized();\n    const user = await this.userManager.getUser();\n    return user && user.profile;\n  }\n\n  async getAccessToken() {\n    await this.ensureUserManagerInitialized();\n    const user = await this.userManager.getUser();\n    return user && user.access_token;\n  }\n\n  // We try to authenticate the user in three different ways:\n  // 1) We try to see if we can authenticate the user silently. This happens\n  //    when the user is already logged in on the IdP and is done using a hidden iframe\n  //    on the client.\n  // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\n  //    Pop-Up blocker or the user has disabled PopUps.\n  // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\n  //    redirect flow.\n  async signIn(state) {\n    await this.ensureUserManagerInitialized();\n    try {\n      const silentUser = await this.userManager.signinSilent(this.createArguments());\n      this.updateState(silentUser);\n      return this.success(state);\n    } catch (silentError) {\n      // User might not be authenticated, fallback to popup authentication\n      console.log(\"Silent authentication error: \", silentError);\n\n      try {\n        if (this._popUpDisabled) {\n          throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\n        }\n\n        const popUpUser = await this.userManager.signinPopup(this.createArguments());\n        this.updateState(popUpUser);\n        return this.success(state);\n      } catch (popUpError) {\n        if (popUpError.message === \"Popup window closed\") {\n          // The user explicitly cancelled the login action by closing an opened popup.\n          return this.error(\"The user closed the window.\");\n        } else if (!this._popUpDisabled) {\n          console.log(\"Popup authentication error: \", popUpError);\n        }\n\n        // PopUps might be blocked by the user, fallback to redirect\n        try {\n          await this.userManager.signinRedirect(this.createArguments(state));\n          return this.redirect();\n        } catch (redirectError) {\n          console.log(\"Redirect authentication error: \", redirectError);\n          return this.error(redirectError);\n        }\n      }\n    }\n  }\n\n  async completeSignIn(url) {\n    try {\n      await this.ensureUserManagerInitialized();\n      const user = await this.userManager.signinCallback(url);\n      this.updateState(user);\n      return this.success(user && user.state);\n    } catch (error) {\n      console.log('There was an error signing in: ', error);\n      return this.error('There was an error signing in.');\n    }\n  }\n\n  // We try to sign out the user in two different ways:\n  // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\n  //    Pop-Up blocker or the user has disabled PopUps.\n  // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\n  //    post logout redirect flow.\n  async signOut(state) {\n    await this.ensureUserManagerInitialized();\n    try {\n      if (this._popUpDisabled) {\n        throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\n      }\n\n      await this.userManager.signoutPopup(this.createArguments());\n      this.updateState(undefined);\n      return this.success(state);\n    } catch (popupSignOutError) {\n      console.log(\"Popup signout error: \", popupSignOutError);\n      try {\n        await this.userManager.signoutRedirect(this.createArguments(state));\n        return this.redirect();\n      } catch (redirectSignOutError) {\n        console.log(\"Redirect signout error: \", redirectSignOutError);\n        return this.error(redirectSignOutError);\n      }\n    }\n  }\n\n  async completeSignOut(url) {\n    await this.ensureUserManagerInitialized();\n    try {\n      const response = await this.userManager.signoutCallback(url);\n      this.updateState(null);\n      return this.success(response && response.data);\n    } catch (error) {\n      console.log(`There was an error trying to log out '${error}'.`);\n      return this.error(error);\n    }\n  }\n\n  updateState(user) {\n    this._user = user;\n    this._isAuthenticated = !!this._user;\n    this.notifySubscribers();\n  }\n\n  subscribe(callback) {\n    this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\n    return this._nextSubscriptionId - 1;\n  }\n\n  unsubscribe(subscriptionId) {\n    const subscriptionIndex = this._callbacks\n      .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\n      .filter(element => element.found === true);\n    if (subscriptionIndex.length !== 1) {\n      throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\n    }\n\n    this._callbacks.splice(subscriptionIndex[0].index, 1);\n  }\n\n  notifySubscribers() {\n    for (let i = 0; i < this._callbacks.length; i++) {\n      const callback = this._callbacks[i].callback;\n      callback();\n    }\n  }\n\n  createArguments(state) {\n    return { useReplaceToNavigate: true, data: state };\n  }\n\n  error(message) {\n    return { status: AuthenticationResultStatus.Fail, message };\n  }\n\n  success(state) {\n    return { status: AuthenticationResultStatus.Success, state };\n  }\n\n  redirect() {\n    return { status: AuthenticationResultStatus.Redirect };\n  }\n\n  async ensureUserManagerInitialized() {\n    if (this.userManager !== undefined) {\n      return;\n    }\n\n    let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\n    if (!response.ok) {\n      throw new Error(`Could not load settings for '${ApplicationName}'`);\n    }\n\n    let settings = await response.json();\n    settings.automaticSilentRenew = true;\n    settings.includeIdTokenInSilentRenew = true;\n    settings.userStore = new WebStorageStateStore({\n      prefix: ApplicationName\n    });\n\n    this.userManager = new UserManager(settings);\n\n    this.userManager.events.addUserSignedOut(async () => {\n      await this.userManager.removeUser();\n      this.updateState(undefined);\n    });\n  }\n\n  static get instance() { return authService }\n}\n\nconst authService = new AuthorizeService();\n\nexport default authService;\n\nexport const AuthenticationResultStatus = {\n  Redirect: 'redirect',\n  Success: 'success',\n  Fail: 'fail',\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./welcome-widget.vue?vue&type=style&index=0&id=8c1d93be&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quarterly-attestations.vue?vue&type=style&index=0&id=7bfad231&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./assigned-box-office-provider-refs-table.vue?vue&type=style&index=0&id=3a5919f8&prod&lang=scss&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=98a67650&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-details.vue?vue&type=style&index=0&id=0f24f064&prod&scoped=true&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"root\"}},[_c('div',{class:_vm.cssClasses},[_c('router-view',{attrs:{\"name\":\"layout\",\"title\":_vm.title,\"is-x-small\":_vm.screen.isXSmall,\"is-small\":_vm.screen.Small,\"is-x-large\":_vm.screen.isXLarge}},[_c('div',{staticClass:\"content\",attrs:{\"role\":\"main\"}},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[(_vm.$router.currentRoute.meta.requiresAuth === true)?_c('AuthorizeRoute',[_c('router-view',{attrs:{\"name\":\"content\"}})],1):_c('router-view',{attrs:{\"name\":\"content\"}})],1)])],1)])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.ready)?_c('div',[(_vm.authenticated)?_vm._t(\"default\"):_c('Navigate',{attrs:{\"to\":_vm.redirectUrl}})],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <div></div>\n</template>\n\n<script>    \n    export default {\n        props: {\n            to: String\n        },\n\n        created() {\n            this.$router.push({ path: this.to, replace: true })\n        }        \n    }\n</script>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigate.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigate.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Navigate.vue?vue&type=template&id=f4fbb6d6\"\nimport script from \"./Navigate.vue?vue&type=script&lang=js\"\nexport * from \"./Navigate.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n    <div v-if=\"ready\">\n        <slot v-if=\"authenticated\" />\n        <Navigate v-else :to=\"redirectUrl\" />\n    </div>\n</template>\n\n<script>\n    import authService from './AuthorizeService'\n    import Navigate from './Navigate'\n    import { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\n\n    export default {        \n        data() {\n            return {\n                ready: false,\n                authenticated: false\n            }\n        },\n        created() {\n            this._subscription = authService.subscribe(() => this.authenticationChanged())\n            this.populateAuthenticationState()\n        },\n        beforeDestroy() {\n            authService.unsubscribe(this._subscription)\n        },\n        computed: {            \n            redirectUrl() {\n                const link = document.createElement('a')\n                link.href = this.$route.fullPath\n                const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`\n                return `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURIComponent(returnUrl)}`\n            }\n        },\n        methods: {\n            async populateAuthenticationState() {\n                const authenticated = await authService.isAuthenticated()\n                this.ready = true\n                this.authenticated = authenticated\n            },\n            async authenticationChanged() {\n                this.ready = false\n                this.authenticated = false\n                await this.populateAuthenticationState()\n            }\n        },\n        components: {\n            Navigate\n        }\n    }\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorizeRoute.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthorizeRoute.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AuthorizeRoute.vue?vue&type=template&id=29f06e36\"\nimport script from \"./AuthorizeRoute.vue?vue&type=script&lang=js\"\nexport * from \"./AuthorizeRoute.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","const Breakpoints = {\n  XSmall: \"(max-width: 575.99px)\",\n  Small: \"(min-width: 576px) and (max-width: 767.99px)\",\n  Medium: \"(min-width: 768px) and (max-width: 991.99px)\",\n  Large: \"(min-width: 992px) and (max-width: 1199.99px)\",\n  XLarge: \"(min-width: 1200px)\"\n};\n\nlet handlers = [];\nconst xSmallMedia = window.matchMedia(Breakpoints.XSmall);\nconst smallMedia = window.matchMedia(Breakpoints.Small);\nconst mediumMedia = window.matchMedia(Breakpoints.Medium);\nconst largeMedia = window.matchMedia(Breakpoints.Large);\nconst xLargeMedia = window.matchMedia(Breakpoints.XLarge);\n\n[xSmallMedia, smallMedia, mediumMedia, largeMedia, xLargeMedia].forEach(media => {\n  media.addListener(() => {\n    handlers.forEach(handler => handler());\n  });\n});\n\nexport const sizes = () => {\n  return {\n    \"screen-x-small\": xSmallMedia.matches,\n    \"screen-small\": smallMedia.matches,\n    \"screen-medium\": mediumMedia.matches,\n    \"screen-large\": largeMedia.matches,\n    \"screen-x-large\": xLargeMedia.matches\n  };\n};\n\nexport const subscribe = handler => handlers.push(handler);\n\nexport const unsubscribe = handler => {\n  handlers = handlers.filter(item => item !== handler);\n};\n","<template>\n  <div id=\"root\">\n    <div :class=\"cssClasses\">\n      <router-view\n        name=\"layout\"\n        :title=\"title\"\n        :is-x-small=\"screen.isXSmall\"\n        :is-small=\"screen.Small\"\n        :is-x-large=\"screen.isXLarge\"        \n      >\n        <div class=\"content\" role=\"main\">\n          <transition name=\"fade\" mode=\"out-in\">\n              <div>\n                  <AuthorizeRoute v-if=\"$router.currentRoute.meta.requiresAuth === true\">\n                      <router-view name=\"content\" />\n                  </AuthorizeRoute>\n                  <router-view v-else name=\"content\" />\n              </div>\n          </transition>\n        </div>\n        <!--<template #footer>\n          <the-footer />\n        </template>-->\n      </router-view>\n    </div>\n  </div>\n</template>\n\n<script>\n//import TheFooter from \"./components/the-footer\";\nimport AuthorizeRoute from \"./components/api-authorization/AuthorizeRoute\"\nimport { sizes, subscribe, unsubscribe } from \"./utils/media-query\";\n\nfunction getScreenSizeInfo() {\n  const screenSizes = sizes();\n\n  return {\n    isXSmall: screenSizes[\"screen-x-small\"],\n    isSmall: screenSizes[\"screen-small\"],\n    isXLarge: screenSizes[\"screen-x-large\"],\n    cssClasses: Object.keys(screenSizes).filter(cl => screenSizes[cl])\n  };\n}\n\nexport default {\n  name: \"app\",\n  data() {\n    return {\n      title: this.$appInfo.title,\n      screen: getScreenSizeInfo()\n    };\n  },\n  computed: {\n    cssClasses() {\n      return [\"app\"].concat(this.screen.cssClasses);\n    }\n  },\n  methods: {\n    screenSizeChanged() {\n      this.screen = getScreenSizeInfo();\n    }\n  },\n\n  mounted() {\n    subscribe(this.screenSizeChanged);\n  },\n\n  beforeDestroy() {\n    unsubscribe(this.screenSizeChanged);\n  },\n\n  components: {\n    AuthorizeRoute\n  }\n};\n</script>\n\n<style lang=\"scss\">\n.fade-enter-active,\n.fade-leave-active {\n  transition-duration: 0.3s;\n  transition-property: opacity;\n  transition-timing-function: ease;\n}\n\n.fade-enter,\n.fade-leave-active {\n  opacity: 0;\n}\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=98a67650\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=98a67650&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","export default {\n    title: \"Illuminate\"\n};\n","import { defineAbility } from \"@casl/ability\";\n\nexport default defineAbility((can, cannot) => {\n  cannot(\"manage\", \"Admin\");\n  can(\"manage\", \"Home\");\n});\n","import Vue from \"vue\";\nimport VueMeta from \"vue-meta\";\nimport App from \"./App\";\nimport router from \"./router\";\nimport appInfo from \"./app-info\";\nimport $axios from \"./utils/axios-instance.js\";\nimport {handleVueError} from \"./utils/error-handler\";\nimport store from \"./store\";\nimport \"@fortawesome/fontawesome-free/css/all.css\";\nimport \"devextreme/dist/css/dx.common.css\";\nimport \"./themes/generated/theme.base.css\";\nimport \"./themes/custom.scss\";\nimport {abilitiesPlugin} from \"@casl/vue\";\nimport ability from \"./config/defineAbility\";\nimport subjects from \"./config/subjects\";\nimport config from \"devextreme/core/config\";\n\nVue.use(VueMeta);\n\nVue.use(abilitiesPlugin, ability);\n\nVue.config.productionTip = false;\nVue.config.errorHandler = handleVueError;\n\nVue.prototype.$appInfo = appInfo;\nVue.prototype.$subjects = subjects;\nwindow.Vue = Vue;\n\nconst axiosStatic = $axios;\nlet vuexStore = store;\n\nconfig({\n  editorStylingMode: \"outlined\",\n});\n\nVue.use(require(\"vue-moment\"));\n\nVue.prototype.$http = axiosStatic;\nvuexStore.$http = axiosStatic;\n\nnew Vue({\n    router,\n    render: (h) => h(App),\n    store,\n}).$mount(\"#app\");\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./help-centre.vue?vue&type=style&index=0&id=23b18c83&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insights-public.vue?vue&type=style&index=0&id=72b915ae&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-surveys-list.vue?vue&type=style&index=0&id=a83753b2&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-details.vue?vue&type=style&index=0&id=2c08d358&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-layout.vue?vue&type=style&index=0&id=327269da&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insights.vue?vue&type=style&index=0&id=2600e888&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-nav-outer-toolbar.vue?vue&type=style&index=0&id=1c3cc64c&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./cookie-notice.vue?vue&type=style&index=0&id=0d4856ec&prod&scoped=true&lang=scss\"","export default {\n  LOGOUT: 1,\n  ERROR: 2,\n  NOTIFY: 4\n}","import ErrorAction from './error-action'\n\nexport default [\n  { code: 401, name: 'Unauthorized', action: ErrorAction.LOGOUT },\n  { code: 403, name: 'Forbidden', action: ErrorAction.ERROR },\n  { code: 500, name: 'Internal Server Error', action: ErrorAction.ERROR },\n  { code: 501, name: 'Not Implemented', action: ErrorAction.ERROR },\n  { code: 503, name: 'Service Unavailable', action: ErrorAction.ERROR },\n]\n","/* eslint-disable no-console */\nimport store from \"../store\";\nimport ErrorAction from \"./error-action\";\nimport ErrorTypes from \"./error-types\";\nimport {ApplicationPaths} from \"../components/api-authorization/ApiAuthorizationConstants\";\nimport router from \"../router\";\n\nconst {NODE_ENV} = process.env;\nconst DEBUG = NODE_ENV === \"development\";\n\nfunction getErrorMessage(errorCode) {\n  return `An error has occurred ${\n    errorCode ? `(${errorCode})` : \"\"\n  } and your request cannot be processed.\\nPlease try again and contact the Help Desk if the error continues to occur.`;\n}\n\nfunction parseError(error) {\n  return error\n    ? `${error.name || \"Error\"}: ${error.message || error}`\n    : \"Undefined error\";\n}\n\nfunction handleHttpError(error) {\n  if (error.response) {\n    let errorType = ErrorTypes.find((x) => x.code === error.response.status);\n    if (errorType) {\n      if ((errorType.action & ErrorAction.NOTIFY) === ErrorAction.NOTIFY) {\n        store.dispatch(\n          \"notify/notifyError\",\n          getErrorMessage(error.response.status),\n        );\n      }\n\n      // if ((errorType.action & ErrorAction.ERROR) === ErrorAction.ERROR) {\n      //   this.$router.push({ name: \"error\", params: { errorCode: error.response.status } })\n      // }\n\n      if ((errorType.action & ErrorAction.LOGOUT) === ErrorAction.LOGOUT) {\n        router.push({path: `${ApplicationPaths.Login}`, replace: true});\n      }\n    }\n  }\n\n  if (DEBUG) {\n    if (error.response) {\n      console.error(parseError(error), {\n        response: error.response,\n        config: error.config,\n      });\n    } else if (error.request) {\n      console.error(parseError(error), {\n        request: error.request,\n        config: error.config,\n      });\n    } else {\n      console.error(parseError(error), {config: error.config});\n    }\n  }\n}\n\nfunction handleRouterError(error) {\n  if (DEBUG) {\n    console.error(parseError(error));\n  }\n\n  store.dispatch(\"notify/notifyError\", getErrorMessage());\n}\n\nfunction handleVueError(error, vm, info) {\n  if (DEBUG) {\n    console.error(parseError(error), {info: info, instance: vm});\n  }\n\n  store.dispatch(\"notify/notifyError\", getErrorMessage());\n}\n\nexport {handleHttpError, handleRouterError, handleVueError, getErrorMessage};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-logo-uploader.vue?vue&type=style&index=0&id=24cf9c60&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-popup.vue?vue&type=style&index=0&id=1a17fe6e&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header-toolbar.vue?vue&type=style&index=0&id=704a489a&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./published-survey-details-banner.vue?vue&type=style&index=0&id=699996cd&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-delete-popup.vue?vue&type=style&index=0&id=55cecff1&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./side-nav-menu.vue?vue&type=style&index=0&id=e47f6744&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=style&index=0&id=04e6a426&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./users-list.vue?vue&type=style&index=0&id=51e41992&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-details.vue?vue&type=style&index=0&id=2d543179&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./events-schedule.vue?vue&type=style&index=0&id=44691454&prod&lang=scss&scoped=true\"","module.exports = __webpack_public_path__ + \"img/welcome-widget-min.3a2261bb.jpeg\";","export const orgNpoStatuses = Object.freeze({\n  Npo: {id: 0, name: \"NPO\"},\n  Ipso: {id: 1, name: \"IPSO\"},\n  Cpp: {id: 2, name: \"CPP\"},\n  Other: {id: 3, name: \"Other\"},\n});\n\nexport const orgActiveStatuses = Object.freeze({\n  active: {id: 1, name: \"Active\"},\n  disabled: {id: 0, name: \"Inactive\"},\n});\n\nexport const LookupCodes = Object.freeze({\n  Country: \"countries\",\n  ThirdPartyTypes: \"thirdpartytypes\",\n  Region: \"regions\",\n  IsTicketed: \"isTicketed\",\n  BoxOfficeProvider: \"boxOfficeProviders\",\n  EventType: \"eventTypes\",\n  AceArea: \"aceAreas\",\n  ExemptFromSurveying: \"exemptFromSurveyings\",\n  eventOrgRelationshipType: \"eventOrgRelationshipTypes\",\n  IsFunded: \"isFunded\",\n  DistributionType: \"distributionTypes\",\n});\n\nexport const userActiveState = Object.freeze({\n  Active: {id: 1, name: \"Active\"},\n  Disabled: {id: 0, name: \"Disabled\"},\n});\n\nexport const trainingSideNavBarViewType = Object.freeze({\n  table: 0,\n  guides: 1,\n});\n\nexport const eventOwnerRelationshipType = Object.freeze({\n  id: 10,\n  name: \"Event owner\"\n});\n\nexport const eventTicketingLookups = Object.freeze({\n  71: true,\n  72: false\n});\n\nexport const activeEntityFilter = [\"ActiveStatus\", \"=\", \"1\"];\n\n// Using values here in case the IDs change between environments.\nexport const ukCountryLookupValues = [\"England\", \"Wales\", \"Scotland\", \"Northern Ireland\"];\n\nexport const logoUploadConfig  = {\n  fileExtensions: [\".jpg\", \".jpeg\", \".png\"],\n  maxFileUploadSize: 100000\n};\n\nexport const SurveyCompletionMethod = Object.freeze({\n  Anonymous: 0,\n  Authenticated: 1,\n  BulkUpload: 2,\n  UnattendedMode: 3\n});\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./the-footer.vue?vue&type=style&index=0&id=4a29ecee&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./events-management.vue?vue&type=style&index=0&id=5b7d0dad&prod&lang=scss&scoped=true\"","import axios from \"axios\";\nimport { handleHttpError } from \"./error-handler\";\nimport authService from '../components/api-authorization/AuthorizeService'\n\n\nconst { VUE_APP_API_HOSTNAME } = process.env;\n\nconst $axios = axios.create({\n  headers: {\n    \"Access-Control-Allow-Origin\": \"*\",\n    \"Content-Type\": \"application/json\"\n  },\n  // TODO: Remove when dotenv is correctly configured on develop\n  baseURL: `${VUE_APP_API_HOSTNAME}`\n});\n\n\n// This is where we set the authorization config for our axios instance.\n// This code will intercept every request made by the browser\n// and check for an auth token stored in state\n$axios.interceptors.request.use(\n  async config => {\n    const authToken = await authService.getAccessToken();\n    if (authToken) {\n      config.headers.Authorization = `Bearer ${authToken}`;\n    }\n    return config;\n  },\n  error => {\n    handleHttpError(error)\n    return Promise.reject(error);\n  }\n);\n\n$axios.interceptors.response.use(\n  response => {\n    return response;\n  },\n  error => {\n    handleHttpError(error)\n    return Promise.reject(error);\n});\n\nexport default $axios;\n","export const ApplicationName = 'Ace';\n\nconst hostName = process.env.VUE_APP_CLIENT_HOSTNAME;\n\nexport const QueryParameterNames = {\n  ReturnUrl: 'returnUrl',\n  Message: 'message'\n};\n\nexport const LogoutActions = {\n  LogoutCallback: 'logout-callback',\n  Logout: 'logout',\n  LoggedOut: 'logged-out'\n};\n\nexport const LoginActions = {\n  Login: 'login',\n  LoginCallback: 'login-callback',\n  LoginFailed: 'login-failed',\n  Profile: 'profile',\n  Register: 'register'\n};\n\nconst prefix = '/authentication';\n\nexport const ApplicationPaths = {\n  DefaultLoginRedirectPath: '/',\n  ApiAuthorizationClientConfigurationUrl: `${hostName}/_configuration/${ApplicationName}`,\n  ApiAuthorizationPrefix: prefix,\n  Login: `${prefix}/${LoginActions.Login}`,\n  LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\n  LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\n  Register: `${prefix}/${LoginActions.Register}`,\n  Profile: `${prefix}/${LoginActions.Profile}`,\n  LogOut: `${prefix}/${LogoutActions.Logout}`,\n  LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\n  LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\n  IdentityRegisterPath: 'Identity/Account/Register',\n  IdentityManagePath: 'Identity/Account/Manage'\n};\n","import {orgActiveStatuses} from \"../common/constants\";\nimport {serializeLoadOptions} from \"../utils/load-options-serializer\";\nimport Vue from \"vue\";\n\nexport function isEmpty(value) {\n  return !isNotEmpty(value);\n}\n\nexport function isNotEmpty(value) {\n  return value !== undefined && value !== null && value !== \"\";\n}\n\nexport function toCamelCase(str) {\n  return str\n    .replace(/\\s(.)/g, function (a) {\n      return a.toUpperCase();\n    })\n    .replace(/\\s/g, \"\")\n    .replace(/^(.)/, function (b) {\n      return b.toLowerCase();\n    });\n}\n\nexport function titleCase(str) {\n  return str\n    .toLowerCase()\n    .split(\" \")\n    .map(function (word) {\n      return word.replace(word[0], word[0].toUpperCase());\n    })\n    .join(\" \");\n}\n\nexport function objectEquals(x, y) {\n  // Needed as sometimes one of these is an empty observer and the other is just null\n\n  x = JSON.parse(JSON.stringify(x));\n  y = JSON.parse(JSON.stringify(y));\n\n  x = x === null ? {} : x;\n  y = y === null ? {} : y;\n\n  if (x === y) return true;\n  // if both x and y are null or undefined and exactly the same\n\n  if (!(x instanceof Object) || !(y instanceof Object)) return false;\n  // if they are not strictly equal, they both need to be Objects\n\n  if (x.constructor !== y.constructor) return false;\n  // they must have the exact same prototype chain, the closest we can do is\n  // test there constructor.\n\n  // disabled as p is used globally. Not my code I grabbed it from SO\n  // eslint-disable-next-line no-var\n  for (var p in x) {\n    if (!x.hasOwnProperty(p)) continue;\n    // other properties were tested using x.constructor === y.constructor\n\n    if (!y.hasOwnProperty(p)) return false;\n    // allows to compare x[ p ] and y[ p ] when set to undefined\n\n    if (x[p] === y[p]) continue;\n    // if they have the same strict value or identity then they are equal\n\n    if (typeof x[p] !== \"object\") return false;\n    // Numbers, Strings, Functions, Booleans must be strictly equal\n\n    if (!objectEquals(x[p], y[p])) return false;\n    // Objects and Arrays must be tested recursively\n  }\n\n  for (p in y) if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) return false;\n  // allows x[ p ] to be set to undefined\n\n  return true;\n}\n\nexport function filterInactiveEntity(list) {\n  return list.filter((x) => {\n    return x.activeStatus === orgActiveStatuses.active.id;\n  });\n}\n\n/**\n * Configures the lookup search options for server side filtering and sorting.\n * @param {Object} searchOptions - The search options object from the lookup.\n * @param {string} [sortSelector='name'] - The property to sort by.\n * @param {boolean} [sortDesc=false] - Whether to sort in descending order.\n * @param {Array} [customFilter=[]] - The custom filter values to applied alongside the search. Follows the DxDataSource.filter format.\n * @returns {Object} - The configured load options object to be passed into the GET request body.\n */\nexport function configureLookupSearch(\n  searchOptions,\n  sortSelector = \"name\",\n  sortDesc = false,\n  customFilter = [],\n) {\n  let loadOptions;\n\n  searchOptions.sort = [\n    {\n      selector: sortSelector,\n      desc: sortDesc,\n    },\n  ];\n\n  // Initialise filter array and add custom filter value if its exists\n  let filter = [];\n  if (customFilter.length > 0) {\n    filter.push(customFilter);\n  }\n\n  // Adds search to Loader via filtering\n  if (searchOptions.searchExpr != null) {\n    // add extra filtering from searchExpression. See DxDataSource.filter API for more info\n    if (filter.length > 0){\n      filter.push(\"and\");\n    }\n    filter.push([\n      searchOptions.searchExpr[0],\n      searchOptions.searchOperation,\n      searchOptions.searchValue,\n    ]);\n    loadOptions = serializeLoadOptions(searchOptions);\n  } else {\n    loadOptions = serializeLoadOptions(searchOptions);\n  }\n\n  if (isNotEmpty(filter)) {\n    loadOptions.filter = JSON.stringify(filter);\n  }\n\n  return loadOptions;\n}\n\nexport function filterOnlineVenue(list) {\n  return list.filter((x) => {\n    return x.onlineStatus === false;\n  });\n}\n\nexport function getQuarterStartDate(quarterNum, year) {\n  switch (quarterNum) {\n    case 1:\n      return new Date(year, 3, 1);\n    case 2:\n      return new Date(year, 6, 1);\n    case 3:\n      return new Date(year, 9, 1);\n    case 4:\n      return new Date(year + 1, 0, 1);\n    default:\n      return null;\n  }\n}\n\nexport function getFyQuarterFromDate(date) {\n  let year = date.getFullYear();\n  let month = date.getMonth();\n\n  if (month < 3) {\n    year--;\n  }\n\n  return {\n    year: year,\n    quarter: getQuarterFromMonth(month),\n  };\n}\n\nexport function getQuarterFromMonth(month) {\n  if (month >= 0 && month < 3) {\n    return 4;\n  }\n  if (month >= 3 && month < 6) {\n    return 1;\n  }\n  if (month >= 6 && month < 9) {\n    return 2;\n  }\n  if (month >= 9 && month < 12) {\n    return 3;\n  }\n\n  return null;\n}\n\n/**\n * Creates a deep copy of a JSON object.\n *\n * @param {Object} object - The JSON object to be copied.\n * @returns {Object} - The deep copy of the JSON object.\n */\nexport function deepCopyJson(object) {\n  return JSON.parse(JSON.stringify(object));\n}\n\n\n/**\n * Retrieves a logo from the specified endpoint as base 64 and as a File.\n * @param {string} uri - The URI of the logo endpoint.\n * @returns {Promise<{base64: string, file: File}>} - A promise that resolves to an object containing the base64 representation of the logo and the logo file.\n */\nexport async function getLogoFromEndpoint(uri) {\n  let response = await Vue.prototype.$http.get(uri, {\n    responseType: \"arraybuffer\",\n  });\n\n  const image = btoa(\n    new Uint8Array(response.data).reduce(\n      (data, byte) => data + String.fromCharCode(byte),\n      \"\",\n    ),\n  );\n\n  const logoBlob = new Blob([response.data], {\n    type: response.headers[\"content-type\"],\n  });\n  let filename = getFileNameFromContentDisposition(\n    response.headers[\"content-disposition\"],\n  );\n  const file = new File([logoBlob], filename, {type: logoBlob.type});\n\n  const base64 = `data:${response.headers[\n    \"content-type\"\n  ].toLowerCase()};base64,${image}`;\n\n  return {base64, file};\n}\n\n/**\n * Retrieves the file name from the content disposition header.\n * @param {string} contentDisposition - The content disposition header value.\n * @returns {string} - The extracted file name, defaulted to 'logo.png'.\n */\nexport function getFileNameFromContentDisposition(contentDisposition) {\n  let filename = \"logo.png\";\n  if (contentDisposition) {\n    const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n    let matches = filenameRegex.exec(contentDisposition);\n    if (matches != null && matches[1]) {\n      filename = matches[1].replace(/['\"]/g, \"\");\n    }\n  }\n  return filename;\n}\n\n/**\n * Converts a File object to a base64 string.\n * @param {File} file - The File object to convert.\n * @returns {Promise<string>} A promise that resolves with the base64 string of the file.\n */\nexport function fileToBase64(file) {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n    reader.onloadend = function () {\n      resolve(reader.result);\n    };\n    reader.onerror = reject;\n    reader.readAsDataURL(file);\n  });\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm-attestation-popup.vue?vue&type=style&index=0&id=6b311b7e&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisations-list.vue?vue&type=style&index=0&id=2c925ba4&prod&lang=scss&scoped=true\"","// https://stalniy.github.io/casl/v4/en/guide/intro#basics\n// CASL operates on the abilities level, that is what a user can actually do in the application. An ability itself depends on the 4 parameters:\n// 1. User Action: Describes what user can actually do in the app. This app uses the basic CRUD operations (\"create\", \"read\", \"update\", \"delete\")\n// 2. Subject: The subject or subject type which you want to check user action on.\n// 3. Fields: Used to restrict user action only to matched subject's fields (e.g a user can perform a primary assessment review but not a secondary review)\n// 4. Conditions: An object or function which restricts user action only to matched subjects.\n\nexport default {\n  home: {subject: \"Home\"},\n\n  // client setup\n  client: {subject: \"Client\"},\n\n  //users\n  user: {\n    subject: \"User\",\n    fields: {\n      updateRole: \"updateRole\",\n    },\n  },\n\n  // project setup\n  project: {subject: \"Project\"},\n  projectBusinessUnit: {subject: \"ProjectBusinessUnit\"},\n  projectUser: {\n    subject: \"ProjectUser\",\n    fields: {\n      pwcUser: \"pwcUser\",\n      clientUser: \"clientUser\",\n      pwcRoleEdit: \"pwcRoleEdit\",\n      clientRoleEdit: \"clientRoleEdit\",\n    },\n  },\n\n  // assessment definition\n  projectQuestionnaire: {subject: \"ProjectQuestionnaire\"},\n  scopingQuestion: {subject: \"ScopingQuestion\"},\n  customQuestionnaire: {subject: \"CustomQuestionnaire\"},\n  masterQuestionnaire: {\n    subject: \"MasterQuestionnaire\",\n    fields: {\n      save: \"save\",\n    },\n  },\n  scopingQuestionnaire: {subject: \"ScopingQuestionnaire\"},\n  standardQuestionnaire: {subject: \"StandardQuestionnaire\"},\n\n  // Completing Scoping Questionnaire\n  thirdPartyAssessment: {\n    subject: \"ThirdPartyAssessment\",\n    fields: {\n      saveDraft: \"saveDraft\",\n      submit: \"submit\",\n    },\n  },\n\n  // Creating Third Parties\n  thirdParty: {subject: \"ThirdParty\"},\n\n  // Organisations\n  organisation: {\n    subject: \"Organisation\",\n    fields: {\n      activeStatus: \"activeStatus\",\n      exemptFromSurveying: \"exemptFromSurveying\",\n    },\n  },\n\n  // Locations\n  location: {subject: \"Location\"},\n\n  // Events\n  event: {\n    subject: \"Event\",\n    fields: {\n      seeOwningOrganisation: \"owningOrganisation\",\n    },\n  },\n\n  // survey\n  survey: {subject: \"Survey\"},\n\n  insights: {\n    subject: \"Insights\",\n  },\n\n  // Completing Assessment Questionnaires\n  surveyResponse: {subject: \"surveyResponse\"},\n\n  // Reviewing Questionnaires (Primary)\n  // Reviewing Questionnaires (Secondary)\n  assessmentReview: {subject: \"AssessmentReview\"},\n  surveyResponseReview: {\n    subject: \"SurveyResponseReview\",\n    fields: {\n      escalateForSecondaryReview: \"escalateForSecondaryReview\",\n      saveDraft: \"saveDraft\",\n      submitPrimaryReview: \"submitPrimaryReview\",\n      submitSecondaryReview: \"submitSecondaryReview\",\n    },\n  },\n\n  // Insights\n  projectInsight: {subject: \"projectInsight\"},\n\n  // Box office / Ticketing\n  boxOffice: {subject: \"BoxOffice\"},\n};\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./event-forecast.vue?vue&type=style&index=0&id=3d4e28d1&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./user-panel.vue?vue&type=style&index=0&id=405f6c12&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./organisation-templates.vue?vue&type=style&index=0&id=342ebdcf&prod&lang=scss&scoped=true\"","module.exports = __webpack_public_path__ + \"img/illuminate-widget-crop.77675a70.jpg\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./locations-list.vue?vue&type=style&index=0&id=466602ac&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-optional-questions.vue?vue&type=style&index=0&id=4a0551ee&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./terms-of-use.vue?vue&type=style&index=0&id=4ff806fc&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quarterly-attestation-box.vue?vue&type=style&index=0&id=551a2d0a&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-response-details.vue?vue&type=style&index=0&id=720dd4f3&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./survey-create-update-overview.vue?vue&type=style&index=0&id=b65191a2&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./static-layout.vue?vue&type=style&index=0&id=4c333a4c&prod&lang=scss\""],"sourceRoot":""}