{"version":3,"sources":["webpack:///./src/components/AdminSubscriptionEditorModal.vue?eb1d","webpack:///./src/views/AdminUsersPage.vue?7b29","webpack:///./src/views/AdminSustainabilityPage.vue?aef3","webpack:///./src/store/modules/adminSustainabilityDataImport.ts","webpack:///./src/views/AdminSustainabilityPage.vue","webpack:///./src/views/AdminSustainabilityPage.vue?4819","webpack:///./src/views/AdminSustainabilityPage.vue?a355","webpack:///./src/components/general/SearchBox.vue?46e5","webpack:///./src/store/modules/adminUsersSpecific.ts","webpack:///./src/views/AdminUsersPage.vue?825b","webpack:///./src/components/AdminUserList.vue?8ee8","webpack:///./src/components/AdminUserList.vue","webpack:///./src/components/AdminUserList.vue?db63","webpack:///./src/components/AdminUserList.vue?8d89","webpack:///./src/services/AdminPermissionsService.ts","webpack:///./src/store/modules/adminPermissions.ts","webpack:///./src/store/modules/adminBusinessContacts.ts","webpack:///./src/store/modules/adminUsersContacts.ts","webpack:///./src/views/AdminUsersPage.vue","webpack:///./src/views/AdminUsersPage.vue?0dd8","webpack:///./src/views/AdminUsersPage.vue?a771","webpack:///./src/components/AdminParameterEditorModal.vue?55a1","webpack:///./src/components/CompanyChainCustomersTreeSelect.vue?0bed","webpack:///./src/components/CompanyChainCustomersTreeSelect.vue","webpack:///./src/components/CompanyChainCustomersTreeSelect.vue?e004","webpack:///./src/components/CompanyChainCustomersTreeSelect.vue?30ea","webpack:///./src/services/AdminUsersService.ts","webpack:///./src/views/AdminParametersPage.vue?6f42","webpack:///./src/components/AdminParameterList.vue?8388","webpack:///./src/components/AdminParameterList.vue","webpack:///./src/components/AdminParameterList.vue?7e22","webpack:///./src/components/AdminParameterList.vue?282d","webpack:///./src/components/AdminParameterEditorModal.vue?d5a3","webpack:///./src/components/AdminParameterCustomNameEditor.vue?4b25","webpack:///./src/components/AdminParameterCustomNameEditor.vue","webpack:///./src/components/AdminParameterCustomNameEditor.vue?e082","webpack:///./src/components/AdminParameterCustomNameEditor.vue?8e0a","webpack:///./src/services/AdminParametersService.ts","webpack:///./src/store/modules/adminParameters.ts","webpack:///./src/store/modules/adminParameter.ts","webpack:///./src/components/AdminParameterEditorModal.vue","webpack:///./src/components/AdminParameterEditorModal.vue?5a86","webpack:///./src/components/AdminParameterEditorModal.vue?034b","webpack:///./src/views/AdminParametersPage.vue","webpack:///./src/views/AdminParametersPage.vue?b854","webpack:///./src/views/AdminParametersPage.vue?a92b","webpack:///./src/services/SustainabilityService.ts","webpack:///./src/components/AdminUserEditorModal.vue?fe57","webpack:///./src/components/AdminUserPermissionsEditor.vue?63f1","webpack:///./src/components/AdminUserPermissionEditor.vue?0152","webpack:///./src/components/AdminUserPermissionEditor.vue","webpack:///./src/components/AdminUserPermissionEditor.vue?ffeb","webpack:///./src/components/AdminUserPermissionEditor.vue?af5a","webpack:///./src/components/AdminUserPermissionsEditor.vue","webpack:///./src/components/AdminUserPermissionsEditor.vue?915d","webpack:///./src/components/AdminUserPermissionsEditor.vue?cc5f","webpack:///./src/components/AdminUserCustomersEditor.vue?7932","webpack:///./src/components/AdminUserCustomersEditor.vue","webpack:///./src/components/AdminUserCustomersEditor.vue?66ea","webpack:///./src/components/AdminUserCustomersEditor.vue?9d4b","webpack:///./src/components/AdminUserEditorModal.vue","webpack:///./src/components/AdminUserEditorModal.vue?55df","webpack:///./src/components/AdminUserEditorModal.vue?0de1","webpack:///./src/store/modules/adminUsers.ts","webpack:///./src/views/AdminSubscriptionsPage.vue?0c67","webpack:///./src/components/general/SearchBox.vue?e3c2","webpack:///./src/components/general/SearchBox.vue","webpack:///./src/components/general/SearchBox.vue?d6e5","webpack:///./src/components/general/SearchBox.vue?7952","webpack:///./src/components/AdminSubscriptionHistoryItem.vue?396f","webpack:///./src/models/AdminUsers/UsersSortBy.ts","webpack:///./src/store/modules/userCustomers.ts","webpack:///./src/views/AdminSubscriptionsPage.vue?b872","webpack:///./src/store/modules/adminSubscribers.ts","webpack:///./src/models/AdminSubscriptions/SubscriptionsSortBy.ts","webpack:///./src/components/AdminSubscriptionList.vue?64ed","webpack:///./src/models/Subscriptions/UserSubscriptionSendOutType.ts","webpack:///./src/models/Subscriptions/SubscriptionLogType.ts","webpack:///./src/components/AdminSubscriptionHistoryModal.vue?53f4","webpack:///./src/components/AdminSubscriptionHistoryItem.vue?f321","webpack:///./src/components/AdminSubscriptionHistoryItem.vue","webpack:///./src/models/AdminSubscriptions/SubscriptionHistorySortBy.ts","webpack:///./src/components/AdminSubscriptionHistoryItem.vue?80d9","webpack:///./src/components/AdminSubscriptionHistoryItem.vue?42b6","webpack:///./src/components/AdminSubscriptionHistoryModal.vue","webpack:///./src/components/AdminSubscriptionHistoryModal.vue?78bf","webpack:///./src/components/AdminSubscriptionHistoryModal.vue?e802","webpack:///./src/components/AdminSubscriptionList.vue","webpack:///./src/components/AdminSubscriptionList.vue?5993","webpack:///./src/components/AdminSubscriptionList.vue?2485","webpack:///./src/components/AdminSubscriptionEditorModal.vue?c300","webpack:///./src/components/UsersTreeSelect.vue?9d40","webpack:///./src/components/UsersTreeSelect.vue","webpack:///./src/components/UsersTreeSelect.vue?f5c3","webpack:///./src/components/UsersTreeSelect.vue?ddaf","webpack:///./src/components/AdminSubscriptionEditorModal.vue","webpack:///./src/components/AdminSubscriptionEditorModal.vue?5959","webpack:///./src/components/AdminSubscriptionEditorModal.vue?d5ef","webpack:///./src/views/AdminSubscriptionsPage.vue","webpack:///./src/views/AdminSubscriptionsPage.vue?3851","webpack:///./src/views/AdminSubscriptionsPage.vue?ae99","webpack:///./src/components/CompanyChainCustomersTreeSelect.vue?6385"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","breadcrumbs","staticClass","_v","_s","$t","error","type","errorText","_e","statistics","_l","yearlyMeasurements","index","key","year","carbonFootprints","waterFootprints","environmentalData","species","originOfWood","staticStyle","data","carbonFootprint","imported","waterFootprint","uploading","on","upload","staticRenderFns","common","loading","isLoading","setLoading","clearLoading","result","file","Promise","resolve","commitClearData","commitClearError","commitSetLoading","uploadSustainabilityData","then","response","Consoler","debugLog","commitSetData","catch","debugWarn","commitSetError","commitClearLoading","getMeasurementStatistics","commitSetStatistics","reject","rawError","namespaced","name","dynamic","store","adminSustainabilityDataImportModule","length","routeName","toString","event","el","target","files","dispatchUpload","routeTrackingInfo","$route","loadData","finally","stopTrackPage","dispatchLoad","components","DefaultLayout","Breadcrumbs","Messages","component","AdminUsersSpecificModule","axId","search","results","items","filter","u","getDataFor","payload","setLoadingComplete","setLoadingError","hasFreshDataFor","item","currentlyLoadingPromise","isCurrentlyLoading","loadingPromise","findUser","commitSetLoadingComplete","id","commitSetLoadingError","adminUsersSpecificModule","term","isAdminUser","onSearchSubmit","responsibles","nonResponsibles","customerIdsFilter","onCustomersFilterSelect","permissionFilter","permissionsSelectOptions","permissionsSelectOptionGroups","onPermissionFilterChange","businessContactFilter","businessContactSelectOptions","onBusinessContactFilterChange","onClearFilters","users","downloadingDataSheet","downloadDataSheet","errorLoading","domProps","subtitle","usersContacts","parentPermissionsSorted","sortBy","sortAsc","onSort","onUserClick","pageIndex","pageCount","pageSize","paginationRoutes","onPageSizeChanged","noDataText","ref","currentContactId","columns","rows","customSorting","Permissions","hasRole","Roles","IsAdminUser","text","property","UsersSortBy","Name","isSortable","fixedOnMobile","Email","splice","AxId","contact","find","uc","contactId","map","user","properties","customers","customersText","email","permissions","permissionsText","businessContacts","responsibleUser","join","getContactId","isClickable","customer","isSmiCustomer","sort","sortUserPermissions","permission","a","b","aSortOrder","getUserPermissionSortOrder","bSortOrder","permissionType","parentIndexMatch","parentPermissions","findIndex","parentPermission","relatedIndexMatch","childPermissions","some","relatedPermission","row","$emit","column","isSorted_ByAsc","required","AdminUserEditorModal","Table","get","BaseService","adminPermissionsService","setLoadedDate","clearLoadedDate","setLoadingPromise","needToReLoad","commitClearPermissions","getPermissions","commitSetPermissions","commitSetLoadedDate","commitSetLoadingPromise","loadingPromiseForId","adminPermissionsModule","commitClearBusinessContacts","getAllBusinessContactsForUser","commitSetBusinessContacts","adminBusinessContactsModule","log","ui","userAxIds","loadingId","commitClearUsersContacts","commitClearLoadedDate","getUsersContacts","commitSetUsersContacts","adminUsersContactsModule","defaultSortBy","defaultPageSize","undefined","hasSearched","anyFilter","totalCount","value","mapParentPermissionToSelectOptions","i18n","t","optionsGroups","parentPermissionsForAllCustomers","push","options","flatMap","parentPermissionsForNonSmiCustomers","parentPermissionsForSmiCustomers","standardOptions","allBusinessContacts","azureAdId","adminUsers","userCustomers","sortParentPermissions","parentPermissionsSortedWithNames","parentPermissionWithName","isForSmiCustomersOnly","previousPageRoute","query","generateQuery","nextPageRoute","numberPageRoute","page","firstPageRoute","lastPageRoute","routeQuery","initialize","newPageSize","updateQuery","newTerm","$nextTick","$refs","adminFindUserModal","show","byAsc","val","customerIdsString","customerIds","split","customerIdString","Number","customerId","isNaN","PermissionType","businessContactIdsString","businessContact","showUser","$router","newPageIndex","clearSearch","all","loadUsers","loadCustomers","loadEditablePermissions","loadBusinessContacts","loadUsersContacts","noPermissions","downloadUserListDataAsExcel","errorMessage","Message","EventBus","Config","AddMessageEvent","immediate","deep","AdminUserList","CompanyChainCustomersTreeSelect","SearchBox","Pagination","SelectBox","placeholder","clearable","multiple","disabled","onInput","onSelect","nodes","nonResponsibleCompanyChainNodes","companyChain","companyChainHasFilteredCustomers","label","children","filterIsSmiCustomer","showIfSmiCustomer","responsibleCompanyChainNodes","isDefaultExpanded","concat","default","TreeSelect","AdminUsersService","put","permissionIds","status","downloadFile","adminUsersService","parameters","onParameterClick","editParameterId","onRowClick","scopedSlots","_u","fn","isCheckboxColumn","p","predicted","parameter","displayName","unitOfMeasurement","active","internal","restricted","enabledForAverageQualityData","editParameter","directives","rawName","expression","updating","canEdit","Array","isArray","_i","$event","$$a","$$el","$$c","checked","$$v","$$i","$set","slice","model","callback","customName","submitted","onRemoveCustomName","onAddCustomNameClick","proxy","hasChanges","preventDefault","onSubmit","apply","arguments","onReset","class","invalid","onCustomersSelect","onDisplayNameInput","onRemoveClick","Modal","parameterId","update","adminParametersService","itemIndex","force","getParameters","adminParametersModule","getParameter","updateParameter","commitSetItem","adminParameterModule","hasPermission","IsAllowedToEditAdminParameters","customNames","newCustomNames","allCustomNames","Helpers","areEqual","restrictedCustomerIds","hasCustomNamesChanges","every","existingCustomName","modal","showModal","duplicateCustomNameCustomers","originalCustomNames","customNameIndex","cn","newCustomNameIndex","newCustomNameId","newCustomName","aIndex","aCustomerId","bIndex","bCustomerId","errorUpdating","dispatchUpdateParameter","hideModal","AdminParameterCustomNameEditor","adminParameterEditorModal","AdminParameterList","AdminParameterEditorModal","SustainabilityService","productName","millId","reportType","range","fromYear","from","fromMonth","month","toYear","to","toMonth","millName","replace","reportTypeId","sustainabilityProducts","sustainabilityDataReportTypes","environmentalDataReportType","All","url","productMillsParams","sustainabilityDataReportTypesParams","s","environmentalDataReportTypeParam","completeUrl","String","padStart","formData","FormData","append","post","headers","sustainabilityService","businessContactsText","errorLastSignIn","lastSignIn","onPermissionIdsChange","onCustomerIdsChange","canUpdate","loadingUser","onPermissionChange","canBeUsed","isPermissionChecked","validate","authRequirements","valid","toggle","forEach","togglePermission","AdminUserPermissionEditor","onCustomersChange","adminUsersSpecific","date","hasPermissionChanges","hasCustomerChanges","c","responsibilities","loadSpecificUser","errorLoadingUser","loadingLastSignIn","dispatchGetUserLastSignIn","dispatchUpdateUserPermissions","dispatchUpdateUserCustomers","AdminUserPermissionsEditor","AdminUserCustomersEditor","AdminUsersModule","userIndex","commitClearUsers","findUsers","commitSetUsers","updateUserCustomers","commitSetUser","updateUserPermissions","getUserLastSignIn","commitSetUserLastSignIn","adminUsersModule","composing","newValue","trim","input","focus","UserCustomersModule","getCustomers","commitSetUserCustomers","commitClearUserCustomers","userCustomersModule","subscribers","filterUserAzureAdIds","subscribersSelectOptions","onFilterUserAzureAdIdsChange","filterSubscriptionTypes","subscriptionTypesSelectOptions","onFilterSubscriptionTypesChange","filterCustomerIds","onFilterCustomerIdsSelect","onCreateSubscription","subscriptions","onEditSubscription","onSubscriptionHistoryChanged","onPageIndexChanged","createOrUpdateSubscription","createNotUpdate","details","onCreated","onUpdated","getSubscribers","SubscriptionsSortBy","adminSubscribersModule","stopPropagation","onEditClick","subscription","subscriptionInfo","subscriber","userAzureAdId","lastSent","dateWithTimeFilter","dateFilter","subscriptionDetailsForHistory","UserSubscriptionSendOutType","SubscriptionLogType","subscriptionDetails","sendingCopyOfSendOut","reSendingSendOut","settingSendOutHandledStatus","onClose","subscriptionHistoryItems","historyItem","isReSendingSendOut","isSendingCopyOfSendOut","isSettingSendOutHandledStatus","onReSendSendOut","onSendCopyOfSendOut","onToggleSendOutHandledStatus","sendOutId","userFullName","errorReSendingSendOut","onConfirmReSendSendOut","onCloseReSendingSendOutModal","isHandled","errorSettingSendOutHandledStatus","onConfirmSettingSendOutHandledStatus","onCloseSettingSendOutHandledStatusModal","onSubmitSendCopyOfSendOut","errorSendingCopyOfSendOut","onConfirmSendCopyOfSendOut","onCloseSendingCopyOfSendOutModal","hasSubmittedSendingCopyOfSendOut","sendingCopyOfSendOutTo","isSendOut","sendOut","isExpanded","isSendOutFailure","isSendOutMarkedAsHandled","subscriptionType","SubscriptionType","QualityData","qualityDataFrequency","_f","onSendCopyClick","onReSendClick","onToggleHandledClick","logs","logIndex","success","recipient","SendOut","Original","ReSend","disableActions","SubscriptionHistorySortBy","Date","adminSubscriptionsHistory","subscriptionHistory","userProfile","subscriptionHistoryChanged","reSendingSendOutModal","sendOutHandledStatusModal","sendingCopyOfSendOutModal","dispatchReSendQualityDataSubscriptionSendOut","userSubscriptionId","userSubscriptionSendOutId","hide","dispatchSetQualityDataSubscriptionSendOutHandledStatus","dispatchSendCopyOfQualityDataSubscriptionSendOut","ConfirmModal","AdminSubscriptionHistoryItem","dateWithTime","Created","UserFullName","Type","LastSent","Status","created","createdDate","notApplicableText","enableForAllMyCustomers","products","enableForAllMyProducts","qualityData","frequency","failedSendOutsCount","isEditable","adminSubscriptionHistoryModal","SubscriptionActiveSwitch","AdminSubscriptionHistoryModal","currentUserAxId","onUsersFilterSelect","enableForSpecificCustomerIds","currentUserAzureAdId","onSubscriptionEditorQualityDataUpdate","errorInvalid","errorSaving","anyChanges","saving","isSubscriptionTypeQualityData","qualityDataInfo","onCancelClick","ids","CustomersRelevantForSubscriptionTypes","adminSubscriptionEditorQualityData","adminModeForUser","IsAllowedToEditAdminSubscriptions","isCustomersRelevant","newId","oldId","userAxId","selectedCustomer","loadUsersForAdmin","getUserByAzureAdId","subscriptionEditorQualityData","adminSubscriptionCustomers","IsAllowedToViewQualityData","dispatchMethod","listName","enableForAllMyPaperParameters","enableForAllMyTextileParameters","enableForSpecificProductNames","enableForSpecificPaperParameterIds","enableForSpecificTextileParameterIds","pfiRevolutions","createForUserAzureId","adminSubscriptions","dispatchCreate","dispatchUpdate","setEnableForSpecificCustomerIds","customersChanged","setSelectedUser","clearSelectedCustomerIds","CustomersTreeSelect","UsersTreeSelect","SelectMultipleChips","SubscriptionEditorQualityData","Sustainability","subscriptionsPluralization","$tc","n","allFilterSubscriptionTypes","userAzureAdIds","subscriptionTypes","adminSubscriptionEditorModal","AdminSubscriptionList","AdminSubscriptionEditorModal"],"mappings":"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","file":"js/admin.232812e3.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionEditorModal.vue?vue&type=style&index=0&id=d15e148e&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUsersPage.vue?vue&type=style&index=0&id=3b1d74ea&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DefaultLayout',[_c('Breadcrumbs',{attrs:{\"items\":_vm.breadcrumbs}}),_c('Messages'),_c('div',{staticClass:\"container-fluid mt-3\"},[(_vm.error)?[_c('div',{staticClass:\"c-alert c-alert--red mb-3\"},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminSustainabilityPage.error', [ _vm.$t('adminSustainabilityPage.errors.' + _vm.error.type, [_vm.errorText]) ])))])])]:_vm._e(),_c('h1',{staticClass:\"t-heading-3\"},[_vm._v(_vm._s(_vm.$t('adminSustainabilityPage.title')))]),_c('span',{staticClass:\"o-line\"}),_c('div',{staticClass:\"col-12 mb-3\"},[(_vm.loading)?_c('div',{staticClass:\"o-loader o-loader--absolute mt-6\"}):_vm._e(),_c('div',{staticClass:\"c-table c-table--no-divider mb-3\"},[_c('div',{staticClass:\"c-table__scroll-container\"},[_c('table',[_c('thead',[_c('tr',[_c('th',[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.year'))+\" \")]),_c('th',[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.carbonFootprints'))+\" \")]),_c('th',[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.waterFootprints'))+\" \")]),_c('th',[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.environmentalData'))+\" \")]),_c('th',[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.species'))+\" \")]),_c('th',[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.originOfWood'))+\" \")])])]),(_vm.statistics.length)?_c('tbody',_vm._l((_vm.yearlyMeasurements),function(yearlyMeasurements,index){return _c('tr',{key:index},[_c('td',[_vm._v(_vm._s(yearlyMeasurements.year))]),_c('td',[_vm._v(_vm._s(yearlyMeasurements.carbonFootprints))]),_c('td',[_vm._v(_vm._s(yearlyMeasurements.waterFootprints))]),_c('td',[_vm._v(_vm._s(yearlyMeasurements.environmentalData))]),_c('td',[_vm._v(_vm._s(yearlyMeasurements.species))]),_c('td',[_vm._v(_vm._s(yearlyMeasurements.originOfWood))])])}),0):_c('tbody',[_c('td',{attrs:{\"colspan\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.noMeasurements'))+\" \")])]),(_vm.data)?_c('tbody',[_c('tr',{staticStyle:{\"font-weight\":\"600\"}},[_c('td',[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.imported'))+\" \")]),_c('td',[_vm._v(_vm._s(_vm.data.carbonFootprint.imported))]),_c('td',[_vm._v(_vm._s(_vm.data.waterFootprint.imported))]),_c('td',[_vm._v(_vm._s(_vm.data.environmentalData.imported))]),_c('td',[_vm._v(_vm._s(_vm.data.species.imported))]),_c('td',[_vm._v(_vm._s(_vm.data.originOfWood.imported))])]),_c('tr',[_c('td',{attrs:{\"colspan\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.$t('adminSustainabilityPage.refresh'))+\" \")])])]):_vm._e()])])]),_c('div',{staticClass:\"d-align-self-end mb-1\"},[_c('form',{attrs:{\"enctype\":\"multipart/form-data\"}},[_c('label',{staticClass:\"o-button o-button--black\",attrs:{\"for\":\"file\"}},[_vm._v(_vm._s(_vm.$t('adminSustainabilityPage.importExcelFile')))]),_c('input',{staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"file\",\"type\":\"file\",\"accept\":\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\"disabled\":_vm.uploading},on:{\"change\":_vm.upload}})])]),(_vm.uploading)?_c('div',{staticClass:\"o-loader o-loader--absolute mt-6\"}):_vm._e()])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport sustainabilityService from '@/services/SustainabilityService';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { CommonStore } from '../common';\r\nimport { SustainabilityImportData } from '@/models/Sustainability/SustainabilityImportData';\r\nimport { SustainabilityImportDataError } from '@/models/Sustainability/SustainabilityImportDataError';\r\nimport { SustainabilityMeasurementStatistics } from '@/models/Sustainability/SustainabilityMeasurementStatistics';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminSustainabilityDataImport',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminSustainabilityDataImportModule extends VuexModule {\r\n public data: SustainabilityImportData | null = null;\r\n public error: SustainabilityImportDataError | null = null;\r\n public statistics: SustainabilityMeasurementStatistics | null = null;\r\n\r\n private common = new CommonStore(60); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading.isLoading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n @Mutation private commitClearData() {\r\n this.data = null;\r\n }\r\n\r\n @Mutation private commitClearError() {\r\n this.error = null;\r\n }\r\n\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n\r\n @Mutation private commitSetData(result: SustainabilityImportData) {\r\n this.data = result;\r\n }\r\n\r\n @Mutation private commitSetStatistics(\r\n result: SustainabilityMeasurementStatistics\r\n ) {\r\n this.statistics = result;\r\n }\r\n\r\n @Mutation private commitSetError(error: SustainabilityImportDataError) {\r\n this.error = error;\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action({ rawError: true })\r\n public async dispatchUpload(file: File): Promise {\r\n if (this.loading) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.commitClearData();\r\n this.commitClearError();\r\n this.commitSetLoading();\r\n\r\n await sustainabilityService\r\n .uploadSustainabilityData(file)\r\n .then((response) => {\r\n Consoler.debugLog(response);\r\n this.commitSetData(response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn(error);\r\n this.commitSetError(error);\r\n });\r\n\r\n this.commitClearLoading();\r\n }\r\n\r\n @Action\r\n public async dispatchLoad(): Promise {\r\n if (this.loading) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.commitClearData();\r\n this.commitClearError();\r\n this.commitSetLoading();\r\n\r\n await sustainabilityService\r\n .getMeasurementStatistics()\r\n .then((response) => {\r\n Consoler.debugLog(\r\n 'Load adminSustainabilityDataImport success',\r\n response\r\n );\r\n\r\n this.commitSetStatistics(response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminSustainabilityDataImport failed', error);\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitClearLoading();\r\n }\r\n}\r\n\r\nexport const adminSustainabilityDataImportModule = getModule(\r\n AdminSustainabilityDataImportModule\r\n);\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport DefaultLayout from '@/layouts/DefaultLayout.vue';\r\nimport Breadcrumbs from '@/components/general/Breadcrumbs.vue';\r\nimport Messages from '@/components/general/Messages.vue';\r\nimport {\r\n routeNameAdminRoot,\r\n routeNameAdminSustainability,\r\n} from '@/router/routes';\r\nimport { Breadcrumb } from '@/models/Breadcrumb';\r\nimport telemetryService, {\r\n RouteTrackingInfo,\r\n} from '@/services/TelemetryService';\r\nimport { getRouteTrackingInfo } from '@/router/functions';\r\nimport { adminSustainabilityDataImportModule } from '@/store/modules/adminSustainabilityDataImport';\r\nimport { SustainabilityImportData } from '@/models/Sustainability/SustainabilityImportData';\r\nimport { SustainabilityImportDataError } from '@/models/Sustainability/SustainabilityImportDataError';\r\nimport { YearlyMeasurements } from '@/models/Sustainability/SustainabilityMeasurementStatistics';\r\n\r\n@Component({\r\n components: {\r\n DefaultLayout,\r\n Breadcrumbs,\r\n Messages,\r\n },\r\n})\r\nexport default class AdminSustainabilityPage extends Vue {\r\n private routeTrackingInfo: RouteTrackingInfo = {};\r\n private data: SustainabilityImportData | null = null;\r\n private error: SustainabilityImportDataError | null = null;\r\n private yearlyMeasurements: YearlyMeasurements[] = [];\r\n private loading: boolean = false;\r\n private uploading: boolean = false;\r\n\r\n private get statistics(): YearlyMeasurements[] {\r\n return this.yearlyMeasurements;\r\n }\r\n\r\n private get errorText(): string {\r\n return this.error?.data?.length ?? 0 > 0 ? this.error!.data[0] : 'unknown';\r\n }\r\n\r\n private get breadcrumbs(): Breadcrumb[] {\r\n return [\r\n {\r\n routeName: routeNameAdminRoot,\r\n name: this.$t('breadcrumbs.' + routeNameAdminRoot).toString(),\r\n },\r\n {\r\n routeName: routeNameAdminSustainability,\r\n name: this.$t('breadcrumbs.' + routeNameAdminSustainability).toString(),\r\n },\r\n ];\r\n }\r\n\r\n private async upload(event: Event) {\r\n const el = event.target as HTMLInputElement;\r\n\r\n this.error = null;\r\n\r\n if (el?.files !== null && el.files.length > 0) {\r\n this.uploading = true;\r\n\r\n await adminSustainabilityDataImportModule.dispatchUpload(el.files[0]);\r\n\r\n this.data = adminSustainabilityDataImportModule.data;\r\n this.error = adminSustainabilityDataImportModule.error;\r\n this.uploading = false;\r\n }\r\n }\r\n\r\n private created(): void {\r\n this.routeTrackingInfo = getRouteTrackingInfo(this.$route);\r\n this.loadData().finally(() => {\r\n telemetryService.stopTrackPage(this.routeTrackingInfo);\r\n });\r\n }\r\n\r\n private async loadData(): Promise {\r\n this.loading = true;\r\n\r\n return adminSustainabilityDataImportModule\r\n .dispatchLoad()\r\n .then(() => {\r\n this.yearlyMeasurements =\r\n adminSustainabilityDataImportModule.statistics?.result ?? [];\r\n })\r\n .finally(() => {\r\n this.loading = false;\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSustainabilityPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSustainabilityPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminSustainabilityPage.vue?vue&type=template&id=00549cb4&\"\nimport script from \"./AdminSustainabilityPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminSustainabilityPage.vue?vue&type=script&lang=ts&\"\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 * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBox.vue?vue&type=style&index=0&id=1558b7f5&scoped=true&lang=scss&\"","import { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport adminUsersService from '@/services/AdminUsersService';\r\nimport { User } from '@/models/AdminUsers/User';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { CommonArrayStore } from '../commonArrayStore';\r\nimport { adminUsersModule } from './adminUsers';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminUsersSpecific',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminUsersSpecificModule extends VuexModule {\r\n private common = new CommonArrayStore(20); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get item() {\r\n return (axId: string) => {\r\n if (adminUsersModule.search?.results.items) {\r\n if (\r\n adminUsersModule.search?.results.items.filter((u) => u.axId === axId)\r\n .length > 0\r\n ) {\r\n return adminUsersModule.search?.results.items.filter(\r\n (u) => u.axId === axId\r\n )[0];\r\n }\r\n }\r\n return this.common.getDataFor(axId);\r\n };\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation private commitSetLoading(payload: {\r\n id: string;\r\n loadingPromise: Promise;\r\n clearData?: boolean;\r\n }) {\r\n this.common.setLoading(payload);\r\n }\r\n @Mutation private commitSetLoadingComplete(payload: {\r\n id: string;\r\n data: User;\r\n }) {\r\n this.common.setLoadingComplete(payload);\r\n }\r\n @Mutation private commitSetLoadingError(payload: {\r\n id: string;\r\n error?: any;\r\n clearData?: boolean;\r\n }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(payload: { axId: string }): Promise {\r\n // If recently loaded, return\r\n if (this.common.hasFreshDataFor(payload.axId)) {\r\n return Promise.resolve(this.item(payload.axId)!);\r\n }\r\n\r\n const currentlyLoadingPromise = this.common.isCurrentlyLoading(\r\n payload.axId\r\n );\r\n if (currentlyLoadingPromise) {\r\n Consoler.debugLog(\r\n 'Already loading, waiting for existing load to finish',\r\n 'adminUsersSpecific',\r\n payload\r\n );\r\n return currentlyLoadingPromise;\r\n }\r\n\r\n const loadingPromise = adminUsersService\r\n .findUser(payload.axId)\r\n .then((response) => {\r\n this.commitSetLoadingComplete({\r\n id: payload.axId,\r\n data: response,\r\n });\r\n Consoler.debugLog('Load adminUsersSpecific success', payload, response);\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminUsersSpecific failed', payload, error);\r\n this.commitSetLoadingError({ id: payload.axId, error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoading({\r\n id: payload.axId,\r\n loadingPromise,\r\n });\r\n\r\n return loadingPromise;\r\n }\r\n}\r\n\r\nexport const adminUsersSpecificModule = getModule(AdminUsersSpecificModule);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DefaultLayout',[_c('Breadcrumbs',{attrs:{\"items\":_vm.breadcrumbs}}),_c('Messages'),_c('div',{staticClass:\"container-fluid mt-3\"},[_c('div',{staticClass:\"d-flex flex-row justify-content-between flex-wrap align-items-center\"},[_c('h1',{staticClass:\"t-heading-3 pr-2\"},[_vm._v(_vm._s(_vm.$t('adminUsersPage.title')))]),_c('div',{staticClass:\"d-align-self-end\"},[_c('SearchBox',{attrs:{\"value\":_vm.term,\"placeholder\":_vm.$t(\n _vm.isAdminUser\n ? 'adminUsersPage.searchPlaceholderForAdminUser'\n : 'adminUsersPage.searchPlaceholderForCustomerUser'\n )},on:{\"submit\":_vm.onSearchSubmit}})],1)]),_c('span',{staticClass:\"o-line\"}),(_vm.responsibles.length || _vm.nonResponsibles.length)?_c('div',{staticClass:\"d-flex flex-wrap mb-3\"},[_c('CompanyChainCustomersTreeSelect',{staticClass:\"admin-customers-tree-select mr-sm-3 mb-1\",attrs:{\"value\":_vm.customerIdsFilter,\"responsibles\":_vm.responsibles,\"nonResponsibles\":_vm.nonResponsibles,\"clearable\":true,\"placeholder\":_vm.$t('adminUsersPage.customersPlaceholder')},on:{\"select\":_vm.onCustomersFilterSelect}}),_c('SelectBox',{staticClass:\"u-xs-full-width mr-sm-3 mb-1\",attrs:{\"value\":_vm.permissionFilter,\"options\":_vm.permissionsSelectOptions,\"optionGroups\":_vm.permissionsSelectOptionGroups},on:{\"input\":_vm.onPermissionFilterChange}}),(_vm.isAdminUser)?_c('SelectBox',{attrs:{\"value\":_vm.businessContactFilter,\"options\":_vm.businessContactSelectOptions,\"placeholder\":_vm.$t('adminUsersPage.permissions.any')},on:{\"input\":_vm.onBusinessContactFilterChange}}):_vm._e(),(_vm.anyFilter)?_c('button',{staticClass:\"o-button px-1\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClearFilters}},[_vm._v(\" \"+_vm._s(_vm.$t('adminUsersPage.clearFilters'))+\" \"),_c('i',{staticClass:\"material-icons\"},[_vm._v(\"clear\")])]):_vm._e(),(_vm.isAdminUser && _vm.users.length)?_c('button',{staticClass:\"o-button o-button--black mb-2 u-margin-left-auto\",attrs:{\"type\":\"button\",\"disabled\":_vm.downloadingDataSheet},on:{\"click\":_vm.downloadDataSheet}},[_vm._v(\" \"+_vm._s(_vm.$t('adminUsersPage.downloadData'))+\" \")]):_vm._e()],1):_vm._e(),(_vm.errorLoading)?_c('div',{staticClass:\"c-alert c-alert--red mb-2\"},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminUsersPage.errorLoading')))])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[(_vm.loading)?_c('div',{staticClass:\"u-position-relative u-min-height-300\"},[_c('span',{staticClass:\"o-loader o-loader--absolute\"})]):_vm._e(),(!_vm.errorLoading && !_vm.loading)?[(_vm.users.length)?[_c('h3',{staticClass:\"t-heading-5\",domProps:{\"innerHTML\":_vm._s(_vm.subtitle)}}),_c('AdminUserList',{staticClass:\"mb-3\",attrs:{\"users\":_vm.users,\"usersContacts\":_vm.usersContacts,\"parentPermissions\":_vm.parentPermissionsSorted,\"sortBy\":_vm.sortBy,\"sortAsc\":_vm.sortAsc},on:{\"sort\":_vm.onSort,\"userClick\":_vm.onUserClick}}),_c('Pagination',{attrs:{\"pageIndex\":_vm.pageIndex,\"pageCount\":_vm.pageCount,\"pageSize\":_vm.pageSize,\"routes\":_vm.paginationRoutes},on:{\"pageSizeChanged\":_vm.onPageSizeChanged}})]:_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.noDataText)}})]:_vm._e()],2)])]),_c('AdminUserEditorModal',{ref:\"adminFindUserModal\",attrs:{\"axId\":_vm.axId,\"contactId\":_vm.currentContactId,\"parentPermissions\":_vm.parentPermissionsSorted}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.users.length)?_c('Table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"usePagination\":false,\"customSorting\":_vm.customSorting},on:{\"rowClick\":_vm.onUserClick,\"sort\":_vm.onSort}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport AdminUserEditorModal from '@/components/AdminUserEditorModal.vue';\r\nimport Table, {\r\n SortableTableColumn,\r\n CustomTableSorting,\r\n} from '@/components/general/Table.vue';\r\nimport { User } from '@/models/AdminUsers/User';\r\nimport { TableColumn, TableRow } from './general/Table.vue';\r\nimport { UsersSortBy } from '@/models/AdminUsers/UsersSortBy';\r\nimport { Permissions } from '@/utils/Permissions';\r\nimport { Roles } from '@/models/UserProfile/Roles';\r\nimport { ParentPermission } from '@/models/AdminUsers/ParentPermission';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport { UserContact } from '@/models/AdminUsers/UserContact';\r\n\r\ninterface UserTableRow extends TableRow {\r\n user: User;\r\n}\r\n\r\n@Component({\r\n components: {\r\n AdminUserEditorModal,\r\n Table,\r\n },\r\n})\r\nexport default class AdminUserList extends Vue {\r\n @Prop({ required: true })\r\n public users!: User[];\r\n @Prop({ required: true })\r\n public usersContacts!: UserContact[];\r\n @Prop({ required: true }) private parentPermissions!: ParentPermission[];\r\n @Prop({ required: true })\r\n private sortBy!: UsersSortBy;\r\n @Prop({ required: true })\r\n private sortAsc!: boolean;\r\n\r\n private get customSorting(): CustomTableSorting {\r\n return {\r\n sortBy: this.sortBy,\r\n sortAsc: this.sortAsc,\r\n };\r\n }\r\n\r\n private get isAdminUser(): boolean {\r\n return Permissions.hasRole(Roles.IsAdminUser);\r\n }\r\n\r\n private get columns(): TableColumn[] {\r\n const columns = [\r\n {\r\n text: this.$t('adminUserList.name').toString(),\r\n property: UsersSortBy.Name,\r\n isSortable: true,\r\n fixedOnMobile: true,\r\n },\r\n {\r\n text: this.$t('adminUserList.email').toString(),\r\n property: UsersSortBy.Email,\r\n isSortable: true,\r\n },\r\n {\r\n text: this.$t('adminUserList.customers').toString(),\r\n property: 'customers',\r\n },\r\n {\r\n text: this.$t('adminUserList.permissions').toString(),\r\n property: 'permissions',\r\n },\r\n ];\r\n\r\n if (this.isAdminUser) {\r\n columns.splice(1, 0, {\r\n text: this.$t('adminUserList.axId').toString(),\r\n property: UsersSortBy.AxId,\r\n isSortable: true,\r\n });\r\n\r\n columns.splice(4, 0, {\r\n text: this.$t('adminUserList.contactId').toString(),\r\n property: 'contactId',\r\n });\r\n\r\n columns.splice(4, 0, {\r\n text: this.$t('adminUserList.businessContacts').toString(),\r\n property: 'businessContacts',\r\n });\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n private getContactId(axId: string): string {\r\n const contact = this.usersContacts.find((uc) => {\r\n return uc.axId === axId;\r\n });\r\n return contact ? contact.contactId : '-';\r\n }\r\n\r\n private get rows(): UserTableRow[] {\r\n return this.users.map((user) => {\r\n const properties: { [key: string]: string | number } = {\r\n name: user.name,\r\n customers: this.customersText(user),\r\n email: user.email,\r\n permissions: this.permissionsText(user),\r\n };\r\n\r\n if (this.isAdminUser) {\r\n properties['axId'] = user.axId;\r\n\r\n properties['businessContacts'] =\r\n user.businessContacts.length > 0\r\n ? user.businessContacts\r\n .map((responsibleUser) => responsibleUser.name)\r\n .join(', ')\r\n : '-';\r\n\r\n properties['contactId'] = this.getContactId(user.axId);\r\n }\r\n\r\n return {\r\n properties,\r\n user,\r\n isClickable: true,\r\n };\r\n });\r\n }\r\n\r\n private customersText(user: User): string {\r\n return user.customers\r\n .map(\r\n (customer) =>\r\n `${customer.name}${customer.isSmiCustomer ? ' (SMI)' : ''}`\r\n )\r\n .join(', ');\r\n }\r\n\r\n private permissionsText(user: User): string {\r\n return user.permissions.length > 0\r\n ? [...user.permissions]\r\n .sort(this.sortUserPermissions)\r\n .map((permission) =>\r\n this.$t(`permissionTypes.${permission}`).toString()\r\n )\r\n .join(', ')\r\n : this.$t('adminUserList.noPermissions').toString();\r\n }\r\n\r\n private sortUserPermissions(a: PermissionType, b: PermissionType): number {\r\n const aSortOrder = this.getUserPermissionSortOrder(a);\r\n const bSortOrder = this.getUserPermissionSortOrder(b);\r\n if (aSortOrder > bSortOrder) {\r\n return 1;\r\n } else if (aSortOrder < bSortOrder) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n private getUserPermissionSortOrder(permissionType: PermissionType) {\r\n const parentIndexMatch = this.parentPermissions.findIndex(\r\n (parentPermission) => parentPermission.type === permissionType\r\n );\r\n if (parentIndexMatch >= 0) {\r\n return parentIndexMatch * 10;\r\n }\r\n const relatedIndexMatch = this.parentPermissions.findIndex(\r\n (parentPermission) =>\r\n parentPermission.childPermissions.some(\r\n (relatedPermission) => relatedPermission.type === permissionType\r\n )\r\n );\r\n if (relatedIndexMatch >= 0) {\r\n return relatedIndexMatch * 10 + 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n private onUserClick(row: UserTableRow) {\r\n this.$emit('userClick', row.user.axId);\r\n }\r\n\r\n private onSort(column?: SortableTableColumn) {\r\n this.$emit('sort', column?.property, column?.isSorted_ByAsc);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminUserList.vue?vue&type=template&id=0a7d938a&\"\nimport script from \"./AdminUserList.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminUserList.vue?vue&type=script&lang=ts&\"\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 { ParentPermission } from '@/models/AdminUsers/ParentPermission';\r\nimport { BaseServiceDefinition } from './BaseService';\r\n\r\nclass AdminPermissionsService extends BaseServiceDefinition {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public getPermissions(): Promise {\r\n return this.get('/api/v1/admin/permissions')\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n}\r\n\r\nconst adminPermissionsService: AdminPermissionsService =\r\n new AdminPermissionsService();\r\n\r\nexport default adminPermissionsService;\r\n","import { CommonStore } from '@/store/common';\r\nimport { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport adminPermissionsService from '@/services/AdminPermissionsService';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { ParentPermission } from '@/models/AdminUsers/ParentPermission';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminPermissions',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminPermissionsModule extends VuexModule {\r\n public data: ParentPermission[] | null = null;\r\n\r\n private common = new CommonStore(30); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation public commitSetPermissions(payload: ParentPermission[]) {\r\n this.data = payload;\r\n }\r\n\r\n @Mutation public commitClearPermissions() {\r\n this.data = null;\r\n }\r\n\r\n // From common:\r\n @Mutation private commitSetLoadedDate() {\r\n this.common.setLoadedDate();\r\n }\r\n @Mutation private commitClearLoadedDate() {\r\n this.common.clearLoadedDate();\r\n }\r\n @Mutation private commitSetLoadingError(payload: { error: any }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n @Mutation private commitSetLoadingPromise(payload: {\r\n loadingPromise: Promise;\r\n loadingPromiseForId: any;\r\n }) {\r\n this.common.setLoadingPromise(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(): Promise {\r\n if (!this.common.needToReLoad()) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.common.isCurrentlyLoading()) {\r\n return this.common.loading.loadingPromise;\r\n }\r\n\r\n this.commitSetLoading();\r\n this.commitClearPermissions();\r\n\r\n const loadingPromise = adminPermissionsService\r\n .getPermissions()\r\n .then((response) => {\r\n this.commitSetPermissions(response);\r\n this.commitSetLoadedDate();\r\n this.commitClearLoading();\r\n Consoler.debugLog('Load adminPermissions success', response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminPermissions failed', error);\r\n this.commitSetLoadingError({ error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoadingPromise({ loadingPromise, loadingPromiseForId: null });\r\n\r\n return loadingPromise;\r\n }\r\n}\r\n\r\nexport const adminPermissionsModule = getModule(AdminPermissionsModule);\r\n","import { CommonStore } from '@/store/common';\r\nimport { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { UserBusinessContact } from '@/models/AdminUsers/UserBusinessContact';\r\nimport adminUsersService from '@/services/AdminUsersService';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminBusinessContacts',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminBusinessContactsModule extends VuexModule {\r\n public data: UserBusinessContact[] | null = null;\r\n\r\n private common = new CommonStore(30); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation public commitSetBusinessContacts(payload: UserBusinessContact[]) {\r\n this.data = payload;\r\n }\r\n\r\n @Mutation public commitClearBusinessContacts() {\r\n this.data = null;\r\n }\r\n\r\n // From common:\r\n @Mutation private commitSetLoadedDate() {\r\n this.common.setLoadedDate();\r\n }\r\n @Mutation private commitClearLoadedDate() {\r\n this.common.clearLoadedDate();\r\n }\r\n @Mutation private commitSetLoadingError(payload: { error: any }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n @Mutation private commitSetLoadingPromise(payload: {\r\n loadingPromise: Promise;\r\n loadingPromiseForId: any;\r\n }) {\r\n this.common.setLoadingPromise(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(): Promise {\r\n if (!this.common.needToReLoad()) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.common.isCurrentlyLoading()) {\r\n return this.common.loading.loadingPromise;\r\n }\r\n\r\n this.commitSetLoading();\r\n this.commitClearBusinessContacts();\r\n\r\n const loadingPromise = adminUsersService\r\n .getAllBusinessContactsForUser()\r\n .then((response) => {\r\n this.commitSetBusinessContacts(response);\r\n this.commitSetLoadedDate();\r\n this.commitClearLoading();\r\n Consoler.debugLog('Load adminBusinessContacts success', response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminBusinessContacts failed', error);\r\n this.commitSetLoadingError({ error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoadingPromise({ loadingPromise, loadingPromiseForId: null });\r\n\r\n return loadingPromise;\r\n }\r\n}\r\n\r\nexport const adminBusinessContactsModule = getModule(\r\n AdminBusinessContactsModule\r\n);\r\n","import { CommonStore } from '@/store/common';\r\nimport { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { UserContact } from '@/models/AdminUsers/UserContact';\r\nimport adminUsersService from '@/services/AdminUsersService';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminUsersContactsModule',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminUsersContactsModule extends VuexModule {\r\n public data: UserContact[] | null = null;\r\n\r\n private common = new CommonStore(30); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation public commitSetUsersContacts(payload: UserContact[]) {\r\n this.data = payload;\r\n Consoler.log(`Store updated with: ${this.data.map((ui) => ui.axId)}`);\r\n }\r\n\r\n @Mutation public commitClearUsersContacts() {\r\n this.data = null;\r\n }\r\n\r\n // From common:\r\n @Mutation private commitSetLoadedDate() {\r\n this.common.setLoadedDate();\r\n }\r\n @Mutation private commitClearLoadedDate() {\r\n this.common.clearLoadedDate();\r\n }\r\n @Mutation private commitSetLoadingError(payload: { error: any }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n @Mutation private commitSetLoadingPromise(payload: {\r\n loadingPromise: Promise;\r\n loadingPromiseForId: any;\r\n }) {\r\n this.common.setLoadingPromise(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(userAxIds: string[]): Promise {\r\n const loadingId = `${userAxIds.join(',')}`;\r\n\r\n if (\r\n !this.common.needToReLoad() &&\r\n this.loading.loadingPromiseForId === loadingId\r\n ) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.common.isCurrentlyLoading()) {\r\n return this.common.loading.loadingPromise;\r\n }\r\n\r\n this.commitSetLoading();\r\n this.commitClearUsersContacts();\r\n this.commitClearLoadedDate();\r\n\r\n const loadingPromise = adminUsersService\r\n .getUsersContacts(userAxIds)\r\n .then((response) => {\r\n this.commitSetUsersContacts(response);\r\n this.commitSetLoadedDate();\r\n this.commitClearLoading();\r\n Consoler.debugLog('Load adminUsersContacts success', response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminUsersContacts failed', error);\r\n this.commitSetLoadingError({ error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoadingPromise({\r\n loadingPromise,\r\n loadingPromiseForId: loadingId,\r\n });\r\n\r\n return loadingPromise;\r\n }\r\n}\r\n\r\nexport const adminUsersContactsModule = getModule(AdminUsersContactsModule);\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport DefaultLayout from '@/layouts/DefaultLayout.vue';\r\nimport Breadcrumbs from '@/components/general/Breadcrumbs.vue';\r\nimport Messages from '@/components/general/Messages.vue';\r\nimport Pagination, {\r\n PaginationRoutes,\r\n} from '@/components/general/Pagination.vue';\r\nimport AdminUserList from '@/components/AdminUserList.vue';\r\nimport CompanyChainCustomersTreeSelect from '@/components/CompanyChainCustomersTreeSelect.vue';\r\nimport SearchBox from '@/components/general/SearchBox.vue';\r\nimport SelectBox, {\r\n SelectOption,\r\n SelectOptionGroup,\r\n} from '@/components/general/SelectBox.vue';\r\nimport { adminUsersModule } from '@/store/modules/adminUsers';\r\nimport { Breadcrumb } from '@/models/Breadcrumb';\r\nimport { User } from '@/models/AdminUsers/User';\r\nimport { routeNameAdminRoot, routeNameAdminUsers } from '@/router/routes';\r\nimport { adminPermissionsModule } from '@/store/modules/adminPermissions';\r\nimport { adminBusinessContactsModule } from '@/store/modules/adminBusinessContacts';\r\nimport { adminUsersContactsModule } from '@/store/modules/adminUsersContacts';\r\nimport { UsersSortBy } from '@/models/AdminUsers/UsersSortBy';\r\nimport { CompanyChain } from '@/models/CompanyChain';\r\nimport { Dictionary } from 'vue-router/types/router';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport { Permissions } from '@/utils/Permissions';\r\nimport { Roles } from '@/models/UserProfile/Roles';\r\nimport telemetryService, {\r\n RouteTrackingInfo,\r\n} from '@/services/TelemetryService';\r\nimport { getRouteTrackingInfo } from '@/router/functions';\r\nimport { ParentPermission } from '@/models/AdminUsers/ParentPermission';\r\nimport i18n from '@/i18n/i18n';\r\nimport { userCustomersModule } from '@/store/modules/userCustomers';\r\nimport AdminUserEditorModal from '@/components/AdminUserEditorModal.vue';\r\nimport adminUsersService from '@/services/AdminUsersService';\r\nimport { EventBus } from '@/utils/EventBus';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { Message, MessageType } from '@/models/Message';\r\nimport { Config } from '@/utils/Config';\r\nimport { UserBusinessContact } from '@/models/AdminUsers/UserBusinessContact';\r\nimport { UserContact } from '@/models/AdminUsers/UserContact';\r\n\r\ninterface AdminUsersQuery\r\n extends Dictionary {\r\n term?: string;\r\n customers?: string;\r\n page?: string;\r\n pageSize?: string;\r\n}\r\n\r\n@Component({\r\n components: {\r\n DefaultLayout,\r\n Breadcrumbs,\r\n Messages,\r\n AdminUserList,\r\n CompanyChainCustomersTreeSelect,\r\n SearchBox,\r\n Pagination,\r\n SelectBox,\r\n AdminUserEditorModal,\r\n },\r\n})\r\nexport default class AdminUsersPage extends Vue {\r\n private readonly defaultPageSize: number = 10;\r\n private readonly defaultSortBy: UsersSortBy = UsersSortBy.Name;\r\n\r\n private routeTrackingInfo: RouteTrackingInfo = {};\r\n private loading: boolean = false;\r\n private errorLoading: boolean = false;\r\n private sortBy: UsersSortBy = this.defaultSortBy;\r\n private sortAsc: boolean = true;\r\n private pageIndex: number = 0;\r\n private pageSize: number = this.defaultPageSize;\r\n private term: string = '';\r\n private customerIdsFilter: number[] = [];\r\n private permissionFilter: PermissionType | 'none' | undefined = undefined;\r\n private businessContactFilter: string = '';\r\n private axId: string | null = null;\r\n private downloadingDataSheet: boolean = false;\r\n\r\n private get hasSearched(): boolean {\r\n return this.term.length > 0;\r\n }\r\n\r\n private get anyFilter(): boolean {\r\n return (\r\n this.customerIdsFilter.length > 0 ||\r\n this.permissionFilter !== undefined ||\r\n this.businessContactFilter.length > 0\r\n );\r\n }\r\n\r\n private get subtitle(): string {\r\n if (this.loading) {\r\n return '';\r\n }\r\n\r\n if (this.hasSearched) {\r\n return this.anyFilter\r\n ? this.$t('adminUsersPage.subtitle.withTermAndFiltered', [\r\n this.term,\r\n this.totalCount,\r\n ]).toString()\r\n : this.$t('adminUsersPage.subtitle.withTerm', [\r\n this.term,\r\n this.totalCount,\r\n ]).toString();\r\n } else {\r\n return this.anyFilter\r\n ? this.$t('adminUsersPage.subtitle.noTermAndFiltered', [\r\n this.totalCount,\r\n ]).toString()\r\n : this.$t('adminUsersPage.subtitle.noTerm', [\r\n this.totalCount,\r\n ]).toString();\r\n }\r\n }\r\n\r\n private get noDataText(): string {\r\n if (this.hasSearched) {\r\n return this.anyFilter\r\n ? this.$t('adminUsersPage.noData.withTermAndFiltered', [\r\n this.term,\r\n ]).toString()\r\n : this.$t('adminUsersPage.noData.withTerm', [this.term]).toString();\r\n } else {\r\n return this.anyFilter\r\n ? this.$t('adminUsersPage.noData.noTermAndFiltered').toString()\r\n : this.$t('adminUsersPage.noData.noTerm').toString();\r\n }\r\n }\r\n\r\n private get permissionsSelectOptions(): SelectOption[] {\r\n return [\r\n {\r\n value: undefined,\r\n text: this.$t('adminUsersPage.permissions.any').toString(),\r\n },\r\n {\r\n value: 'none',\r\n text: this.$t('adminUsersPage.permissions.none').toString(),\r\n },\r\n ];\r\n }\r\n private get permissionsSelectOptionGroups(): SelectOptionGroup[] {\r\n function mapParentPermissionToSelectOptions(parentPermission: {\r\n permission: ParentPermission;\r\n name: string;\r\n }): SelectOption[] {\r\n return [\r\n {\r\n value: parentPermission.permission.type,\r\n text: parentPermission.name,\r\n },\r\n ...parentPermission.permission.childPermissions.map(\r\n (relatedPermission) => ({\r\n value: relatedPermission.type,\r\n text: `\\u00a0\\u00a0${i18n\r\n .t(`permissionTypes.${relatedPermission.type}`)\r\n .toString()}`,\r\n })\r\n ),\r\n ];\r\n }\r\n\r\n const optionsGroups: SelectOptionGroup[] = [];\r\n\r\n if (this.parentPermissionsForAllCustomers.length > 0) {\r\n optionsGroups.push({\r\n text: this.$t('adminUsersPage.permissions.groups.all').toString(),\r\n options: this.parentPermissionsForAllCustomers.flatMap(\r\n (parentPermission) =>\r\n mapParentPermissionToSelectOptions(parentPermission)\r\n ),\r\n });\r\n }\r\n\r\n if (this.parentPermissionsForNonSmiCustomers.length > 0) {\r\n optionsGroups.push({\r\n text: this.$t('adminUsersPage.permissions.groups.nonSmi').toString(),\r\n options: this.parentPermissionsForNonSmiCustomers.flatMap(\r\n (parentPermission) =>\r\n mapParentPermissionToSelectOptions(parentPermission)\r\n ),\r\n });\r\n }\r\n\r\n if (this.parentPermissionsForSmiCustomers.length > 0) {\r\n optionsGroups.push({\r\n text: this.$t('adminUsersPage.permissions.groups.smi').toString(),\r\n options: this.parentPermissionsForSmiCustomers.flatMap(\r\n (parentPermission) =>\r\n mapParentPermissionToSelectOptions(parentPermission)\r\n ),\r\n });\r\n }\r\n\r\n return optionsGroups;\r\n }\r\n\r\n private get businessContactSelectOptions(): SelectOption[] {\r\n var standardOptions: SelectOption[] = [\r\n {\r\n value: '',\r\n text: this.$t('adminUsersPage.businessContacts.any').toString(),\r\n },\r\n ];\r\n\r\n var options: SelectOption[] = this.allBusinessContacts.map((contact) => ({\r\n value: contact.azureAdId,\r\n text: contact.name,\r\n }));\r\n\r\n standardOptions.push(...options);\r\n\r\n return standardOptions;\r\n }\r\n\r\n private get isAdminUser(): boolean {\r\n return Permissions.hasRole(Roles.IsAdminUser);\r\n }\r\n\r\n private get users(): User[] {\r\n return adminUsersModule.search?.results?.items ?? [];\r\n }\r\n\r\n private get responsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.responsibles\r\n : [];\r\n }\r\n\r\n private get nonResponsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.nonResponsibles\r\n : [];\r\n }\r\n\r\n private get usersContacts(): UserContact[] {\r\n return adminUsersContactsModule.data ?? [];\r\n }\r\n\r\n private get parentPermissions(): ParentPermission[] {\r\n return adminPermissionsModule.data ?? [];\r\n }\r\n\r\n private get allBusinessContacts(): UserBusinessContact[] {\r\n return adminBusinessContactsModule.data ?? [];\r\n }\r\n\r\n private get parentPermissionsSortedWithNames(): {\r\n permission: ParentPermission;\r\n name: string;\r\n }[] {\r\n return this.parentPermissions\r\n .map((parentPermission) => ({\r\n permission: parentPermission,\r\n name: this.$t(`permissionTypes.${parentPermission.type}`).toString(),\r\n }))\r\n .sort(this.sortParentPermissions);\r\n }\r\n\r\n private get parentPermissionsSorted(): ParentPermission[] {\r\n return this.parentPermissionsSortedWithNames.map(\r\n (parentPermissionWithName) => parentPermissionWithName.permission\r\n );\r\n }\r\n\r\n private get parentPermissionsForAllCustomers(): {\r\n permission: ParentPermission;\r\n name: string;\r\n }[] {\r\n return this.parentPermissionsSortedWithNames.filter(\r\n (parentPermission) =>\r\n parentPermission.permission.isForSmiCustomersOnly === undefined\r\n );\r\n }\r\n private get parentPermissionsForNonSmiCustomers(): {\r\n permission: ParentPermission;\r\n name: string;\r\n }[] {\r\n return this.parentPermissionsSortedWithNames.filter(\r\n (parentPermission) =>\r\n parentPermission.permission.isForSmiCustomersOnly === false\r\n );\r\n }\r\n private get parentPermissionsForSmiCustomers(): {\r\n permission: ParentPermission;\r\n name: string;\r\n }[] {\r\n return this.parentPermissionsSortedWithNames.filter(\r\n (parentPermission) =>\r\n parentPermission.permission.isForSmiCustomersOnly === true\r\n );\r\n }\r\n\r\n private get pageCount(): number {\r\n return adminUsersModule.search?.results?.pageCount ?? 0;\r\n }\r\n\r\n private get totalCount(): number {\r\n return adminUsersModule.search?.results?.totalCount ?? 0;\r\n }\r\n\r\n private get currentContactId(): string | null {\r\n const contact = this.usersContacts.find((uc) => {\r\n return this.axId === uc.axId;\r\n });\r\n\r\n return contact ? contact.contactId : null;\r\n }\r\n\r\n private get paginationRoutes(): PaginationRoutes {\r\n return {\r\n previousPageRoute: {\r\n name: routeNameAdminUsers,\r\n query: this.generateQuery(this.pageIndex - 1),\r\n },\r\n nextPageRoute: {\r\n name: routeNameAdminUsers,\r\n query: this.generateQuery(this.pageIndex + 1),\r\n },\r\n numberPageRoute: (page: number) => {\r\n return {\r\n name: routeNameAdminUsers,\r\n query: this.generateQuery(page - 1),\r\n };\r\n },\r\n firstPageRoute: {\r\n name: routeNameAdminUsers,\r\n query: this.generateQuery(0),\r\n },\r\n lastPageRoute: {\r\n name: routeNameAdminUsers,\r\n query: this.generateQuery(this.pageCount - 1),\r\n },\r\n };\r\n }\r\n\r\n private get breadcrumbs(): Breadcrumb[] {\r\n const items: Breadcrumb[] = [\r\n {\r\n routeName: routeNameAdminRoot,\r\n name: this.$t('breadcrumbs.' + routeNameAdminRoot).toString(),\r\n },\r\n {\r\n routeName: routeNameAdminUsers,\r\n name: this.$t('breadcrumbs.' + routeNameAdminUsers).toString(),\r\n },\r\n ];\r\n\r\n // Users route with a search term: Users -> \"term\"\r\n if (this.$route.query.term) {\r\n items.push({\r\n routeName: routeNameAdminUsers,\r\n routeQuery: { term: this.$route.query.term },\r\n name: `\"${this.$route.query.term}\"`,\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n @Watch('$route', { immediate: false, deep: true })\r\n private onRouteChange(): void {\r\n this.routeTrackingInfo = getRouteTrackingInfo(this.$route);\r\n this.initialize();\r\n this.loadData().finally(() => {\r\n telemetryService.stopTrackPage(this.routeTrackingInfo);\r\n });\r\n }\r\n\r\n private created(): void {\r\n this.routeTrackingInfo = getRouteTrackingInfo(this.$route);\r\n this.initialize();\r\n this.loadData().finally(() => {\r\n telemetryService.stopTrackPage(this.routeTrackingInfo);\r\n });\r\n }\r\n\r\n private sortParentPermissions(\r\n a: { permission: ParentPermission; name: string },\r\n b: { permission: ParentPermission; name: string }\r\n ): number {\r\n if (a.name > b.name) {\r\n return 1;\r\n } else if (a.name < b.name) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n private onPageSizeChanged(newPageSize: number): void {\r\n this.pageSize = newPageSize;\r\n this.pageIndex = 0;\r\n this.updateQuery();\r\n }\r\n\r\n private onSearchSubmit(newTerm: string) {\r\n this.term = newTerm;\r\n this.pageIndex = 0;\r\n this.updateQuery();\r\n }\r\n\r\n private onUserClick(axId: string) {\r\n this.axId = axId;\r\n this.$nextTick(() => {\r\n (this.$refs.adminFindUserModal as AdminUserEditorModal).show();\r\n });\r\n }\r\n\r\n private onSort(property?: UsersSortBy, byAsc?: boolean) {\r\n if (property) {\r\n this.sortBy = property;\r\n this.sortAsc = byAsc ?? true;\r\n } else {\r\n this.sortBy = this.defaultSortBy;\r\n this.sortAsc = true;\r\n }\r\n\r\n this.loadData();\r\n }\r\n\r\n private onCustomersFilterSelect(customers: number[]) {\r\n this.customerIdsFilter = customers;\r\n this.pageIndex = 0;\r\n this.updateQuery();\r\n }\r\n\r\n private onPermissionFilterChange(val: PermissionType | undefined) {\r\n this.permissionFilter = val;\r\n this.pageIndex = 0;\r\n this.updateQuery();\r\n }\r\n\r\n private onBusinessContactFilterChange(val: string) {\r\n this.businessContactFilter = val;\r\n this.pageIndex = 0;\r\n this.updateQuery();\r\n }\r\n\r\n private onClearFilters() {\r\n this.customerIdsFilter = [];\r\n this.permissionFilter = undefined;\r\n this.businessContactFilter = '';\r\n this.pageIndex = 0;\r\n this.updateQuery();\r\n }\r\n\r\n private initialize(): void {\r\n this.term = (this.$route.query.term as string) ?? '';\r\n\r\n const customerIdsString = this.$route.query.customers\r\n ? (this.$route.query.customers as string)\r\n : '';\r\n const customerIds = customerIdsString\r\n ? customerIdsString\r\n .split(',')\r\n .map((customerIdString) => Number(customerIdString))\r\n .filter((customerId) => !isNaN(customerId))\r\n : [];\r\n this.customerIdsFilter = customerIds;\r\n\r\n const permission = this.$route.query.permission\r\n ? (this.$route.query.permission as string)\r\n : '';\r\n if (permission === 'none') {\r\n this.permissionFilter = 'none';\r\n } else {\r\n const permissionType =\r\n permission in PermissionType\r\n ? (permission as PermissionType)\r\n : undefined;\r\n this.permissionFilter = permissionType;\r\n }\r\n\r\n const businessContactIdsString = this.$route.query.businessContact\r\n ? (this.$route.query.businessContact as string)\r\n : '';\r\n this.businessContactFilter = businessContactIdsString;\r\n\r\n const page = Number(this.$route.query.page as string);\r\n\r\n this.pageIndex = !isNaN(page) ? page - 1 : 0;\r\n\r\n let pageSize = Number(this.$route.query.pageSize as string);\r\n\r\n if (isNaN(pageSize)) {\r\n pageSize = this.defaultPageSize;\r\n }\r\n\r\n if (this.$route.query.showUser) {\r\n this.axId = this.$route.query.showUser.toString();\r\n this.$nextTick(() => {\r\n (this.$refs.adminFindUserModal as AdminUserEditorModal).show();\r\n });\r\n }\r\n\r\n this.pageSize = pageSize;\r\n }\r\n\r\n // Updates the query (if any changes) which then changes the $route and the @Watch is triggered\r\n private updateQuery(): boolean {\r\n const query = this.generateQuery();\r\n\r\n if (\r\n this.$route.query.term === query.term &&\r\n this.$route.query.customers === query.customers &&\r\n this.$route.query.permission === query.permission &&\r\n this.$route.query.page === query.page &&\r\n this.$route.query.pageSize === query.pageSize &&\r\n this.$route.query.showUser === query.showUser &&\r\n this.$route.query.businessContact === query.businessContact\r\n ) {\r\n return false;\r\n } else {\r\n this.$router.push({ query });\r\n\r\n return true;\r\n }\r\n }\r\n\r\n private generateQuery(\r\n newPageIndex?: number,\r\n clearSearch?: boolean\r\n ): AdminUsersQuery {\r\n const query: AdminUsersQuery = {};\r\n\r\n if (this.term && !clearSearch === true) {\r\n query.term = this.term;\r\n }\r\n\r\n if (this.customerIdsFilter.length > 0) {\r\n query.customers = this.customerIdsFilter.join(',');\r\n }\r\n\r\n if (this.permissionFilter !== undefined) {\r\n query.permission = this.permissionFilter;\r\n }\r\n\r\n if (this.businessContactFilter !== '') {\r\n query.businessContact = this.businessContactFilter;\r\n }\r\n\r\n if (this.pageSize !== this.defaultPageSize) {\r\n query.pageSize = this.pageSize.toString();\r\n }\r\n\r\n const pageIndex =\r\n newPageIndex !== undefined ? newPageIndex : this.pageIndex;\r\n\r\n if (pageIndex > 0) {\r\n query.page = (pageIndex + 1).toString();\r\n }\r\n\r\n return query;\r\n }\r\n\r\n private loadData(): Promise {\r\n this.errorLoading = false;\r\n this.loading = true;\r\n\r\n return Promise.all([\r\n this.loadUsers(),\r\n this.loadCustomers(),\r\n this.loadEditablePermissions(),\r\n this.loadBusinessContacts(),\r\n ])\r\n .then(() => {\r\n this.loadUsersContacts();\r\n })\r\n .catch(() => {\r\n this.errorLoading = true;\r\n })\r\n .finally(() => {\r\n this.loading = false;\r\n });\r\n }\r\n\r\n private loadUsers(): Promise {\r\n return adminUsersModule.dispatchLoad({\r\n sortBy: this.sortBy,\r\n sortAsc: this.sortAsc,\r\n pageIndex: this.pageIndex,\r\n pageSize: this.pageSize,\r\n term: this.term,\r\n customerIds: this.customerIdsFilter,\r\n permission:\r\n this.permissionFilter !== 'none' ? this.permissionFilter : undefined,\r\n noPermissions: this.permissionFilter === 'none',\r\n businessContact: this.businessContactFilter,\r\n });\r\n }\r\n\r\n private loadCustomers(): Promise {\r\n return userCustomersModule.dispatchLoad();\r\n }\r\n\r\n private loadEditablePermissions(): Promise {\r\n return adminPermissionsModule.dispatchLoad();\r\n }\r\n\r\n private loadBusinessContacts(): Promise {\r\n if (!this.isAdminUser) {\r\n return Promise.resolve();\r\n }\r\n return adminBusinessContactsModule.dispatchLoad();\r\n }\r\n\r\n private loadUsersContacts(): Promise {\r\n if (this.users.length == 0) {\r\n return Promise.resolve();\r\n }\r\n\r\n return adminUsersContactsModule.dispatchLoad(\r\n this.users.map((u) => {\r\n return u.axId;\r\n })\r\n );\r\n }\r\n\r\n private async downloadDataSheet() {\r\n if (!this.isAdminUser) {\r\n return;\r\n }\r\n\r\n this.downloadingDataSheet = true;\r\n\r\n await adminUsersService\r\n .downloadUserListDataAsExcel(\r\n this.sortBy,\r\n this.sortAsc,\r\n this.term,\r\n this.customerIdsFilter,\r\n this.permissionFilter !== 'none' ? this.permissionFilter : undefined,\r\n this.permissionFilter === 'none',\r\n this.businessContactFilter\r\n )\r\n .catch((error) => {\r\n Consoler.debugWarn('Error downloading data sheet', error);\r\n const errorMessage: Message = {\r\n text: this.$t('adminUsersPage.errorDownloadingDataSheet').toString(),\r\n type: MessageType.error,\r\n };\r\n EventBus.$emit(Config.AddMessageEvent, errorMessage);\r\n })\r\n .finally(() => {\r\n this.downloadingDataSheet = false;\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUsersPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUsersPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminUsersPage.vue?vue&type=template&id=3b1d74ea&scoped=true&\"\nimport script from \"./AdminUsersPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminUsersPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdminUsersPage.vue?vue&type=style&index=0&id=3b1d74ea&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 \"3b1d74ea\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParameterEditorModal.vue?vue&type=style&index=0&id=1f29b5be&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('TreeSelect',{staticClass:\"the-tree-select\",attrs:{\"value\":_vm.value,\"options\":_vm.options,\"placeholder\":_vm.placeholder,\"clearable\":_vm.clearable,\"multiple\":_vm.multiple,\"disabled\":_vm.disabled},on:{\"input\":_vm.onInput,\"select\":_vm.onSelect}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport TreeSelect, {\r\n TreeSelectNode,\r\n} from '@/components/general/TreeSelect.vue';\r\nimport { CompanyChain } from '@/models/CompanyChain';\r\n\r\n@Component({\r\n components: {\r\n TreeSelect,\r\n },\r\n})\r\nexport default class CompanyChainCustomersTreeSelect extends Vue {\r\n @Prop({ required: true }) private value!: number[];\r\n @Prop({ required: true }) private responsibles!: CompanyChain[];\r\n @Prop({ required: true })\r\n private nonResponsibles!: CompanyChain[];\r\n @Prop({ required: true }) private placeholder!: string;\r\n @Prop({ required: false, default: () => true })\r\n private multiple!: boolean;\r\n @Prop({ required: false, default: () => false })\r\n private clearable!: boolean;\r\n @Prop({ required: false, default: () => undefined })\r\n private filterIsSmiCustomer!: boolean | undefined;\r\n @Prop({ required: false, default: () => false })\r\n private showIfSmiCustomer!: boolean;\r\n @Prop({ required: false, default: () => false })\r\n private disabled!: boolean;\r\n\r\n private get options(): TreeSelectNode[] {\r\n let nodes: TreeSelectNode[] = [];\r\n\r\n const nonResponsibleCompanyChainNodes: TreeSelectNode[] =\r\n this.nonResponsibles\r\n .filter((companyChain) =>\r\n this.companyChainHasFilteredCustomers(companyChain)\r\n )\r\n .map((companyChain) => ({\r\n id: `nonResponsibles|companyChain|${companyChain.id}`,\r\n label: companyChain.name,\r\n children: companyChain.customers\r\n .filter(\r\n (customer) =>\r\n this.filterIsSmiCustomer === undefined ||\r\n customer.isSmiCustomer === this.filterIsSmiCustomer\r\n )\r\n .map((customer) => ({\r\n id: customer.id,\r\n label: `${customer.name}${\r\n this.showIfSmiCustomer && customer.isSmiCustomer ? ' (SMI)' : ''\r\n }`,\r\n })),\r\n }));\r\n\r\n const responsibleCompanyChainNodes: TreeSelectNode[] = this.responsibles\r\n .filter((companyChain) =>\r\n this.companyChainHasFilteredCustomers(companyChain)\r\n )\r\n .map((companyChain) => ({\r\n id: `responsibles|companyChain|${companyChain.id}`,\r\n label: companyChain.name,\r\n children: companyChain.customers\r\n .filter(\r\n (customer) =>\r\n this.filterIsSmiCustomer === undefined ||\r\n customer.isSmiCustomer === this.filterIsSmiCustomer\r\n )\r\n .map((customer) => ({\r\n id: customer.id,\r\n label: customer.name,\r\n })),\r\n }));\r\n\r\n if (responsibleCompanyChainNodes.length > 0) {\r\n nodes.push({\r\n id: 'responsibles',\r\n label: this.$t(\r\n 'companyChainCustomersTreeSelect.responsibles'\r\n ).toString(),\r\n children: responsibleCompanyChainNodes,\r\n isDefaultExpanded: true,\r\n });\r\n }\r\n\r\n if (nonResponsibleCompanyChainNodes.length > 0) {\r\n if (responsibleCompanyChainNodes.length > 0) {\r\n nodes.push({\r\n id: 'nonResponsibles',\r\n label: this.$t(\r\n 'companyChainCustomersTreeSelect.nonResponsibles'\r\n ).toString(),\r\n children: nonResponsibleCompanyChainNodes,\r\n });\r\n } else {\r\n nodes = nodes.concat(nonResponsibleCompanyChainNodes);\r\n }\r\n }\r\n\r\n return nodes;\r\n }\r\n\r\n private companyChainHasFilteredCustomers(\r\n companyChain: CompanyChain\r\n ): boolean {\r\n return companyChain.customers.some(\r\n (customer) =>\r\n this.filterIsSmiCustomer === undefined ||\r\n customer.isSmiCustomer === this.filterIsSmiCustomer\r\n );\r\n }\r\n\r\n private onInput(customers: number[]) {\r\n this.$emit('input', customers);\r\n }\r\n\r\n private onSelect(customers: number[]) {\r\n this.$emit('select', customers);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompanyChainCustomersTreeSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompanyChainCustomersTreeSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CompanyChainCustomersTreeSelect.vue?vue&type=template&id=5bcb6a06&scoped=true&\"\nimport script from \"./CompanyChainCustomersTreeSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./CompanyChainCustomersTreeSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CompanyChainCustomersTreeSelect.vue?vue&type=style&index=0&id=5bcb6a06&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 \"5bcb6a06\",\n null\n \n)\n\nexport default component.exports","import { arrayParamsSerializer, BaseServiceDefinition } from './BaseService';\r\nimport { User } from '@/models/AdminUsers/User';\r\nimport { PaginatedResult } from '@/models/PaginatedResult{T}';\r\nimport { UsersSortBy } from '@/models/AdminUsers/UsersSortBy';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport { AxiosError, AxiosResponse } from 'axios';\r\nimport { fileNameDateFilter } from '@/filters/fileNameDate';\r\nimport moment from 'moment';\r\nimport { UserBusinessContact } from '@/models/AdminUsers/UserBusinessContact';\r\n\r\nclass AdminUsersService extends BaseServiceDefinition {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public findUsers(\r\n sortBy: UsersSortBy,\r\n sortAsc: boolean,\r\n pageIndex: number,\r\n pageSize?: number,\r\n term?: string,\r\n customerIds?: number[],\r\n permission?: PermissionType,\r\n noPermissions?: boolean,\r\n businessContact?: string,\r\n all?: boolean\r\n ): Promise> {\r\n return this.get(\r\n '/api/v1/admin/users/find',\r\n {\r\n sortBy,\r\n sortAsc,\r\n pageIndex,\r\n pageSize,\r\n term,\r\n customerIds,\r\n permission,\r\n noPermissions,\r\n businessContact,\r\n all,\r\n },\r\n arrayParamsSerializer\r\n )\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public updateUserCustomers(\r\n azureAdId: string,\r\n customerIds: Array\r\n ): Promise {\r\n return this.put(`/api/v1/admin/users/${azureAdId}/customers`, customerIds)\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public updateUserPermissions(\r\n azureAdId: string,\r\n permissionIds: Array\r\n ): Promise {\r\n return this.put(\r\n `/api/v1/admin/users/${azureAdId}/permissions`,\r\n permissionIds\r\n )\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getUserLastSignIn(azureAdId: string): Promise {\r\n try {\r\n const response: AxiosResponse = await this.get(\r\n `/api/v1/admin/users/${azureAdId}/lastSignIn`\r\n );\r\n\r\n return response.data;\r\n } catch (error) {\r\n if ((error as AxiosError)?.response?.status === 404) {\r\n return null;\r\n }\r\n\r\n throw error;\r\n }\r\n }\r\n\r\n public async findUser(axId: string): Promise {\r\n return this.get('/api/v1/admin/users/find/specific', { axId })\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async downloadUserListDataAsExcel(\r\n sortBy: UsersSortBy,\r\n sortAsc: boolean,\r\n term?: string,\r\n customerIds?: number[],\r\n permission?: PermissionType,\r\n noPermissions?: boolean,\r\n businessContact?: string\r\n ): Promise {\r\n await this.downloadFile(\r\n `/api/v1/admin/users/excel`,\r\n `AdminUsers_List_${fileNameDateFilter(moment())}.xlsx`,\r\n {\r\n sortBy,\r\n sortAsc,\r\n term,\r\n customerIds,\r\n permission,\r\n noPermissions,\r\n businessContact,\r\n },\r\n arrayParamsSerializer\r\n );\r\n }\r\n\r\n public async getAllBusinessContactsForUser(): Promise {\r\n return this.get('/api/v1/admin/users/businessContacts')\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getUsersContacts(userAxIds: string[]) {\r\n return this.get(\r\n '/api/v1/admin/users/usersContacts',\r\n { userAxIds: userAxIds },\r\n arrayParamsSerializer\r\n )\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n}\r\n\r\nconst adminUsersService: AdminUsersService = new AdminUsersService();\r\n\r\nexport default adminUsersService;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DefaultLayout',[_c('Breadcrumbs',{attrs:{\"items\":_vm.breadcrumbs}}),_c('Messages'),_c('div',{staticClass:\"container-fluid mt-3\"},[_c('div',{staticClass:\"d-flex flex-row justify-content-between flex-wrap align-items-center\"},[_c('h1',{staticClass:\"t-heading-3 pr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParametersPage.title'))+\" \")])]),_c('span',{staticClass:\"o-line\"}),(_vm.errorLoading)?_c('div',{staticClass:\"c-alert c-alert--red mb-2\"},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminParametersPage.errorLoading')))])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[(_vm.loading)?_c('div',{staticClass:\"u-position-relative u-min-height-300\"},[_c('span',{staticClass:\"o-loader o-loader--absolute\"})]):_vm._e(),(!_vm.errorLoading && !_vm.loading)?[(_vm.parameters.length)?[_c('AdminParameterList',{staticClass:\"mb-3\",attrs:{\"parameters\":_vm.parameters},on:{\"parameterClick\":_vm.onParameterClick}})]:_c('div',[_vm._v(_vm._s(_vm.$t('adminParametersPage.noData')))])]:_vm._e()],2)])]),_c('AdminParameterEditorModal',{ref:\"adminParameterEditorModal\",attrs:{\"parameterId\":_vm.editParameterId}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.parameters.length)?_c('Table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"usePagination\":false},on:{\"rowClick\":_vm.onRowClick},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nvar column = ref.column;\nreturn [(_vm.isCheckboxColumn(column))?[(row.properties[column.property] === 1)?_c('i',{staticClass:\"material-icons u-color-lime-green\"},[_vm._v(\"done\")]):_c('span',[_vm._v(\" \")])]:[_vm._v(\" \"+_vm._s(row.properties[column.property])+\" \")]]}}],null,false,2563303819)}):_vm._e(),(_vm.anyPredictedParameters)?_c('div',{staticClass:\"t-body-regular-small mt-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterList.predicted'))+\" \")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport AdminUserEditorModal from '@/components/AdminUserEditorModal.vue';\r\nimport Table from '@/components/general/Table.vue';\r\nimport { TableColumn, TableRow } from './general/Table.vue';\r\nimport { Parameter } from '@/models/AdminParameters/Parameter';\r\n\r\ninterface ParameterTableRow extends TableRow {\r\n parameter: Parameter;\r\n}\r\n\r\n@Component({\r\n components: {\r\n AdminUserEditorModal,\r\n Table,\r\n },\r\n})\r\nexport default class AdminParameterList extends Vue {\r\n @Prop({ required: true })\r\n public parameters!: Parameter[];\r\n\r\n private get anyPredictedParameters(): boolean {\r\n return this.parameters.some((p) => p.predicted);\r\n }\r\n\r\n private get columns(): TableColumn[] {\r\n const columns = [\r\n {\r\n text: this.$t('adminParameterList.displayName').toString(),\r\n property: 'displayName',\r\n fixedOnMobile: true,\r\n },\r\n {\r\n text: this.$t('adminParameterList.unitOfMeasurement').toString(),\r\n property: 'unitOfMeasurement',\r\n },\r\n {\r\n text: this.$t('adminParameterList.active').toString(),\r\n property: 'active',\r\n },\r\n {\r\n text: this.$t('adminParameterList.internal').toString(),\r\n property: 'internal',\r\n },\r\n {\r\n text: this.$t('adminParameterList.restricted').toString(),\r\n property: 'restricted',\r\n },\r\n {\r\n text: this.$t(\r\n 'adminParameterList.enabledForAverageQualityData'\r\n ).toString(),\r\n property: 'enabledForAverageQualityData',\r\n },\r\n ];\r\n\r\n return columns;\r\n }\r\n\r\n private get rows(): ParameterTableRow[] {\r\n return this.parameters.map((parameter) => {\r\n const properties: { [key: string]: string | number } = {\r\n displayName: parameter.displayName + (parameter.predicted ? '*' : ''),\r\n unitOfMeasurement: parameter.unitOfMeasurement,\r\n active: parameter.active ? 1 : 0,\r\n internal: parameter.internal ? 1 : 0,\r\n restricted: parameter.restricted ? 1 : 0,\r\n enabledForAverageQualityData: parameter.enabledForAverageQualityData\r\n ? 1\r\n : 0,\r\n };\r\n\r\n return {\r\n properties,\r\n parameter,\r\n isClickable: true,\r\n };\r\n });\r\n }\r\n\r\n private isCheckboxColumn(column: TableColumn): boolean {\r\n return [\r\n 'active',\r\n 'internal',\r\n 'restricted',\r\n 'enabledForAverageQualityData',\r\n ].some((p) => p === column.property);\r\n }\r\n\r\n private onRowClick(row: ParameterTableRow) {\r\n this.$emit('parameterClick', row.parameter.id);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParameterList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParameterList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminParameterList.vue?vue&type=template&id=cb4b3de6&\"\nimport script from \"./AdminParameterList.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminParameterList.vue?vue&type=script&lang=ts&\"\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{ref:\"modal\",attrs:{\"id\":\"adminParameterEditorModal\",\"title\":_vm.parameter\n ? _vm.$t('adminParameterEditorModal.title', [\n _vm.parameter.displayName,\n _vm.parameter.unitOfMeasurement ])\n : '',\"isLarge\":true,\"showFooter\":true,\"closeableByOutsideClickAndEscKey\":false},scopedSlots:_vm._u([(_vm.parameter && _vm.editParameter)?{key:\"body\",fn:function(){return [_c('div',{staticClass:\"c-form c-form--validated\"},[_c('div',{staticClass:\"d-flex align-items-center justify-content-between\"},[_c('h3',{staticClass:\"t-heading-5 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.active'))+\" \")]),_c('label',{staticClass:\"o-switch o-switch--large\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editParameter.active),expression:\"editParameter.active\"}],staticClass:\"o-switch__input\",attrs:{\"type\":\"checkbox\",\"disabled\":_vm.updating || !_vm.canEdit},domProps:{\"checked\":Array.isArray(_vm.editParameter.active)?_vm._i(_vm.editParameter.active,null)>-1:(_vm.editParameter.active)},on:{\"change\":function($event){var $$a=_vm.editParameter.active,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.editParameter, \"active\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.editParameter, \"active\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.editParameter, \"active\", $$c)}}}}),_c('span',{staticClass:\"o-switch__toggle\"})])]),(_vm.editParameter.active)?[_c('div',{staticClass:\"o-line o-line--black-20 o-line--thin mb-3\"}),_c('div',{staticClass:\"d-flex align-items-center justify-content-between\"},[_c('h3',{staticClass:\"t-heading-5 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.internal'))+\" \")]),_c('label',{staticClass:\"o-switch o-switch--large\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editParameter.internal),expression:\"editParameter.internal\"}],staticClass:\"o-switch__input\",attrs:{\"type\":\"checkbox\",\"disabled\":_vm.updating || !_vm.canEdit},domProps:{\"checked\":Array.isArray(_vm.editParameter.internal)?_vm._i(_vm.editParameter.internal,null)>-1:(_vm.editParameter.internal)},on:{\"change\":function($event){var $$a=_vm.editParameter.internal,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.editParameter, \"internal\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.editParameter, \"internal\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.editParameter, \"internal\", $$c)}}}}),_c('span',{staticClass:\"o-switch__toggle\"})])]),(!_vm.editParameter.internal)?[_c('div',{staticClass:\"o-line o-line--black-20 o-line--thin mb-3\"}),_c('div',{staticClass:\"d-flex align-items-center justify-content-between\"},[_c('h3',{staticClass:\"t-heading-5 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.restricted.title'))+\" \")]),_c('label',{staticClass:\"o-switch o-switch--large\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editParameter.restricted),expression:\"editParameter.restricted\"}],staticClass:\"o-switch__input\",attrs:{\"type\":\"checkbox\",\"disabled\":_vm.updating || !_vm.canEdit},domProps:{\"checked\":Array.isArray(_vm.editParameter.restricted)?_vm._i(_vm.editParameter.restricted,null)>-1:(_vm.editParameter.restricted)},on:{\"change\":function($event){var $$a=_vm.editParameter.restricted,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.editParameter, \"restricted\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.editParameter, \"restricted\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.editParameter, \"restricted\", $$c)}}}}),_c('span',{staticClass:\"o-switch__toggle\"})])]),(_vm.editParameter.restricted)?_c('div',{staticClass:\"mt-2\"},[_c('p',{staticClass:\"t-body-regular-small-bold mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.restricted.label'))+\" \")]),(_vm.responsibles.length || _vm.nonResponsibles.length)?_c('CompanyChainCustomersTreeSelect',{staticClass:\"customers-tree-select tree-select--light-grey mb-1\",attrs:{\"responsibles\":_vm.responsibles,\"nonResponsibles\":_vm.nonResponsibles,\"clearable\":true,\"disabled\":_vm.updating || !_vm.canEdit,\"placeholder\":_vm.$t('adminParameterEditorModal.restricted.allCustomers')},model:{value:(_vm.editParameter.restrictedCustomerIds),callback:function ($$v) {_vm.$set(_vm.editParameter, \"restrictedCustomerIds\", $$v)},expression:\"editParameter.restrictedCustomerIds\"}}):_vm._e()],1):_vm._e(),(!_vm.parameter.predicted)?[_c('div',{staticClass:\"o-line o-line--black-20 o-line--thin mb-3\"}),_c('div',{staticClass:\"d-flex align-items-center justify-content-between\"},[_c('h3',{staticClass:\"t-heading-5 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t( 'adminParameterEditorModal.enabledForAverageQualityData.title' ))+\" \")]),_c('label',{staticClass:\"o-switch o-switch--large\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editParameter.enabledForAverageQualityData),expression:\"editParameter.enabledForAverageQualityData\"}],staticClass:\"o-switch__input\",attrs:{\"type\":\"checkbox\",\"disabled\":_vm.updating || !_vm.canEdit},domProps:{\"checked\":Array.isArray(_vm.editParameter.enabledForAverageQualityData)?_vm._i(_vm.editParameter.enabledForAverageQualityData,null)>-1:(_vm.editParameter.enabledForAverageQualityData)},on:{\"change\":function($event){var $$a=_vm.editParameter.enabledForAverageQualityData,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.editParameter, \"enabledForAverageQualityData\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.editParameter, \"enabledForAverageQualityData\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.editParameter, \"enabledForAverageQualityData\", $$c)}}}}),_c('span',{staticClass:\"o-switch__toggle\"})])])]:_vm._e(),_c('div',[_c('div',{staticClass:\"o-line o-line--black-20 o-line--thin mb-3\"}),_c('h3',{staticClass:\"t-heading-5\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.customNames.title'))+\" \")]),_vm._l((_vm.allCustomNames),function(customName,index){return _c('AdminParameterCustomNameEditor',{key:index,staticClass:\"mb-1\",attrs:{\"displayName\":customName.displayName,\"customerIds\":customName.customerIds,\"submitted\":_vm.submitted,\"disabled\":_vm.updating || !_vm.canEdit},on:{\"customersChanged\":function (customerIds) { return (customName.customerIds = customerIds); },\"displayNameChanged\":function (displayName) { return (customName.displayName = displayName); },\"remove\":function($event){return _vm.onRemoveCustomName(customName)}}})}),_c('div',[_c('button',{staticClass:\"o-round-button o-round-button--mini o-round-button--light-grey px-1\",attrs:{\"type\":\"button\",\"title\":_vm.$t('adminParameterEditorModal.customNames.add'),\"disabled\":_vm.updating || !_vm.canEdit},on:{\"click\":_vm.onAddCustomNameClick}},[_c('i',{staticClass:\"material-icons\"},[_vm._v(\"add\")])])]),(_vm.duplicateCustomNameCustomers)?_c('p',{staticClass:\"u-color-red mt-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.duplicateCustomNameCustomers'))+\" \")]):_vm._e()],2)]:_vm._e()]:_vm._e()],2)]},proxy:true}:null,{key:\"footer\",fn:function(){return [(_vm.errorUpdating)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"adminParameterEditorModal-errorAlert\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminParameterEditorModal.errorUpdating')))]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"adminParameterEditorModal-errorAlert\"}})]):_vm._e(),(_vm.errorLoading)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"adminParameterEditorModal-errorAlert\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminParameterEditorModal.errorLoading')))]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"adminParameterEditorModal-errorAlert\"}})]):_vm._e(),(_vm.loading)?_c('div',{staticClass:\"d-flex align-items-center justify-content-center u-min-height-300\"},[_c('span',{staticClass:\"o-loader\"},[_vm._v(_vm._s(_vm.$t('adminParameterEditorModal.loading')))])]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canEdit && !_vm.loading),expression:\"canEdit && !loading\"}]},[_c('div',{staticClass:\"o-line o-line--black-20 o-line--thin mb-3\"}),_c('button',{staticClass:\"o-button o-button--lime-green mr-2\",attrs:{\"disabled\":!_vm.hasChanges || _vm.updating},on:{\"click\":function($event){$event.preventDefault();return _vm.onSubmit.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.okButton'))+\" \")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasChanges),expression:\"hasChanges\"}],staticClass:\"o-button o-button--white mr-2\",attrs:{\"disabled\":_vm.updating},on:{\"click\":function($event){$event.preventDefault();return _vm.onReset.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterEditorModal.resetButton'))+\" \")])])]},proxy:true}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-fill\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('p',{staticClass:\"t-body-regular-small-bold mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterCustomNameEditor.customers.label'))+\" \")]),(_vm.responsibles.length || _vm.nonResponsibles.length)?_c('CompanyChainCustomersTreeSelect',{staticClass:\"customers-tree-select tree-select--light-grey mb-1\",class:{ invalid: _vm.submitted && _vm.customerIds.length === 0 },attrs:{\"value\":_vm.customerIds,\"responsibles\":_vm.responsibles,\"nonResponsibles\":_vm.nonResponsibles,\"clearable\":true,\"disabled\":_vm.disabled,\"placeholder\":_vm.$t('adminParameterCustomNameEditor.customers.placeholder')},on:{\"select\":_vm.onCustomersSelect}}):_vm._e()],1),_c('div',{staticClass:\"col-6\"},[_c('p',{staticClass:\"t-body-regular-small-bold mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminParameterCustomNameEditor.displayName.label'))+\" \")]),_c('input',{staticClass:\"o-text-input o-text-input--light-grey u-full-width\",class:{ invalid: _vm.submitted && !_vm.displayName },attrs:{\"type\":\"text\",\"maxlength\":\"100\",\"disabled\":_vm.disabled},domProps:{\"value\":_vm.displayName},on:{\"input\":_vm.onDisplayNameInput}})])])]),_c('div',{staticClass:\"ml-2 mt-4\"},[_c('button',{staticClass:\"o-round-button o-round-button--light-grey o-round-button--mini px-1\",attrs:{\"type\":\"button\",\"title\":_vm.$t('adminParameterCustomNameEditor.remove'),\"disabled\":_vm.disabled},on:{\"click\":_vm.onRemoveClick}},[_c('i',{staticClass:\"material-icons\"},[_vm._v(\"clear\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport Modal from '@/components/general/Modal.vue';\r\nimport CompanyChainCustomersTreeSelect from './CompanyChainCustomersTreeSelect.vue';\r\nimport { userCustomersModule } from '@/store/modules/userCustomers';\r\nimport { CompanyChain } from '@/models/CompanyChain';\r\n\r\n@Component({\r\n components: {\r\n Modal,\r\n CompanyChainCustomersTreeSelect,\r\n },\r\n})\r\nexport default class AdminParameterCustomNameEditor extends Vue {\r\n @Prop({ required: true }) private customerIds!: number[];\r\n @Prop({ required: true }) private displayName!: string;\r\n @Prop({ required: false, default: () => false }) private isNew!: boolean;\r\n @Prop({ required: false, default: () => false }) private disabled!: boolean;\r\n @Prop({ required: false, default: () => false }) private submitted!: boolean;\r\n\r\n private get responsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.responsibles\r\n : [];\r\n }\r\n\r\n private get nonResponsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.nonResponsibles\r\n : [];\r\n }\r\n\r\n private onCustomersSelect(customerIds: number[]): void {\r\n this.$emit('customersChanged', customerIds);\r\n }\r\n\r\n private onDisplayNameInput(event: InputEvent): void {\r\n this.$emit('displayNameChanged', (event.target as HTMLInputElement).value);\r\n }\r\n\r\n private onRemoveClick(): void {\r\n this.$emit('remove');\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParameterCustomNameEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParameterCustomNameEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminParameterCustomNameEditor.vue?vue&type=template&id=4e0e29e8&\"\nimport script from \"./AdminParameterCustomNameEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminParameterCustomNameEditor.vue?vue&type=script&lang=ts&\"\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 { Parameter } from '@/models/AdminParameters/Parameter';\r\nimport { ParameterDetails } from '@/models/AdminParameters/ParameterDetails';\r\nimport { UpdateParameter } from '@/models/AdminParameters/UpdateParameter';\r\nimport { ParameterId } from '@/models/ParameterId';\r\nimport { BaseServiceDefinition } from './BaseService';\r\n\r\nclass AdminParametersService extends BaseServiceDefinition {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public getParameters(): Promise {\r\n return this.get('/api/v1/admin/parameters')\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public getParameter(parameterId: ParameterId): Promise {\r\n return this.get(`/api/v1/admin/parameters/${parameterId}`)\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public updateParameter(\r\n parameterId: ParameterId,\r\n update: UpdateParameter\r\n ): Promise {\r\n return this.put(`/api/v1/admin/parameters/${parameterId}`, update)\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n}\r\n\r\nconst adminParametersService: AdminParametersService =\r\n new AdminParametersService();\r\n\r\nexport default adminParametersService;\r\n","import { CommonStore } from '@/store/common';\r\nimport { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport adminParametersService from '@/services/AdminParametersService';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { Parameter } from '@/models/AdminParameters/Parameter';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminParameters',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminParametersModule extends VuexModule {\r\n public data: Parameter[] | null = null;\r\n\r\n private common = new CommonStore(30); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation public commitSetData(payload: Parameter[]) {\r\n this.data = payload;\r\n }\r\n\r\n @Mutation public commitClearData() {\r\n this.data = null;\r\n }\r\n\r\n @Mutation public commitSetItem(item: Parameter) {\r\n if (this.data === null) {\r\n Consoler.debugWarn(\r\n 'commitSetItem: Could not update q-data parameter since not loaded.'\r\n );\r\n return;\r\n }\r\n\r\n const itemIndex = this.data.findIndex((p) => p.id === item.id);\r\n if (itemIndex < 0) {\r\n Consoler.debugWarn(\r\n 'commitSetItem: Could not update q-data parameter since not found.',\r\n item,\r\n this.data\r\n );\r\n return;\r\n }\r\n\r\n this.data.splice(itemIndex, 1, item);\r\n }\r\n\r\n // From common:\r\n @Mutation private commitSetLoadedDate() {\r\n this.common.setLoadedDate();\r\n }\r\n @Mutation private commitClearLoadedDate() {\r\n this.common.clearLoadedDate();\r\n }\r\n @Mutation private commitSetLoadingError(payload: { error: any }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n @Mutation private commitSetLoadingPromise(payload: {\r\n loadingPromise: Promise;\r\n loadingPromiseForId: any;\r\n }) {\r\n this.common.setLoadingPromise(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(data?: { force?: boolean }): Promise {\r\n if ((!data || (data && !data.force)) && !this.common.needToReLoad()) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.common.isCurrentlyLoading()) {\r\n return this.common.loading.loadingPromise;\r\n }\r\n\r\n this.commitSetLoading();\r\n this.commitClearData();\r\n\r\n const loadingPromise = adminParametersService\r\n .getParameters()\r\n .then((response) => {\r\n this.commitSetData(response);\r\n this.commitSetLoadedDate();\r\n this.commitClearLoading();\r\n Consoler.debugLog('Load adminParameters success', response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminParameters failed', error);\r\n this.commitSetLoadingError({ error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoadingPromise({ loadingPromise, loadingPromiseForId: null });\r\n\r\n return loadingPromise;\r\n }\r\n}\r\n\r\nexport const adminParametersModule = getModule(AdminParametersModule);\r\n","import { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { CommonArrayStore } from '../commonArrayStore';\r\nimport { ParameterDetails } from '@/models/AdminParameters/ParameterDetails';\r\nimport adminParameterService from '@/services/AdminParametersService';\r\nimport { UpdateParameter } from '@/models/AdminParameters/UpdateParameter';\r\nimport { adminParametersModule } from './adminParameters';\r\nimport { ParameterId } from '@/models/ParameterId';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminParameter',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminParameterModule extends VuexModule {\r\n private common = new CommonArrayStore(20); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get item() {\r\n return (parameterId: ParameterId) => {\r\n return this.common.getDataFor(parameterId);\r\n };\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation private commitSetLoading(payload: {\r\n id: ParameterId;\r\n loadingPromise: Promise;\r\n clearData?: boolean;\r\n }) {\r\n this.common.setLoading(payload);\r\n }\r\n @Mutation private commitSetLoadingComplete(payload: {\r\n id: ParameterId;\r\n data: ParameterDetails;\r\n }) {\r\n this.common.setLoadingComplete(payload);\r\n }\r\n @Mutation private commitSetLoadingError(payload: {\r\n id: ParameterId;\r\n error?: any;\r\n clearData?: boolean;\r\n }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(payload: {\r\n parameterId: ParameterId;\r\n }): Promise {\r\n // If recently loaded, return\r\n if (this.common.hasFreshDataFor(payload.parameterId)) {\r\n return Promise.resolve(this.item(payload.parameterId)!);\r\n }\r\n\r\n const currentlyLoadingPromise = this.common.isCurrentlyLoading(\r\n payload.parameterId\r\n );\r\n if (currentlyLoadingPromise) {\r\n Consoler.debugLog(\r\n 'Already loading, waiting for existing load to finish',\r\n 'adminParameter',\r\n payload\r\n );\r\n return currentlyLoadingPromise;\r\n }\r\n\r\n const loadingPromise = adminParameterService\r\n .getParameter(payload.parameterId)\r\n .then((response) => {\r\n this.commitSetLoadingComplete({\r\n id: payload.parameterId,\r\n data: response,\r\n });\r\n Consoler.debugLog('Load adminParameter success', payload, response);\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminParameter failed', payload, error);\r\n this.commitSetLoadingError({ id: payload.parameterId, error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoading({\r\n id: payload.parameterId,\r\n loadingPromise,\r\n });\r\n\r\n return loadingPromise;\r\n }\r\n\r\n @Action\r\n public async dispatchUpdateParameter(payload: {\r\n parameterId: ParameterId;\r\n update: UpdateParameter;\r\n }): Promise {\r\n if (this.item(payload.parameterId) === null) {\r\n return Promise.reject('The q-data parameter needs to be loaded');\r\n }\r\n\r\n return adminParameterService\r\n .updateParameter(payload.parameterId, payload.update)\r\n .then((response) => {\r\n this.commitSetLoadingComplete({\r\n id: payload.parameterId,\r\n data: response,\r\n });\r\n\r\n adminParametersModule.commitSetItem(response);\r\n\r\n Consoler.debugLog('Update adminParameter success.');\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Update adminParameter failed', error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n}\r\n\r\nexport const adminParameterModule = getModule(AdminParameterModule);\r\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport Modal from '@/components/general/Modal.vue';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport { Permissions } from '@/utils/Permissions';\r\nimport CompanyChainCustomersTreeSelect from './CompanyChainCustomersTreeSelect.vue';\r\nimport AdminParameterCustomNameEditor from './AdminParameterCustomNameEditor.vue';\r\nimport { adminParameterModule } from '@/store/modules/adminParameter';\r\nimport { ParameterDetails } from '@/models/AdminParameters/ParameterDetails';\r\nimport { UpdateParameter } from '@/models/AdminParameters/UpdateParameter';\r\nimport { Helpers } from '@/utils/Helpers';\r\nimport { userCustomersModule } from '@/store/modules/userCustomers';\r\nimport { CompanyChain } from '@/models/CompanyChain';\r\nimport { ParameterCustomName } from '@/models/AdminParameters/ParameterCustomName';\r\nimport { CreateParameterCustomName } from '@/models/AdminParameters/CreateParameterCustomName';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { ParameterId } from '@/models/ParameterId';\r\n\r\n@Component({\r\n components: {\r\n Modal,\r\n CompanyChainCustomersTreeSelect,\r\n AdminParameterCustomNameEditor,\r\n },\r\n})\r\nexport default class AdminParameterEditorModal extends Vue {\r\n @Prop({ required: true }) private parameterId!: ParameterId;\r\n\r\n private editParameter: UpdateParameter | null = null;\r\n\r\n private submitted: boolean = false;\r\n private duplicateCustomNameCustomers: boolean = false;\r\n\r\n private updating: boolean = false;\r\n private errorUpdating: boolean = false;\r\n\r\n private loading: boolean = false;\r\n private errorLoading: boolean = false;\r\n\r\n private get parameter(): ParameterDetails | null {\r\n return adminParameterModule.item(this.parameterId);\r\n }\r\n\r\n private get responsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.responsibles\r\n : [];\r\n }\r\n\r\n private get nonResponsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.nonResponsibles\r\n : [];\r\n }\r\n\r\n private get canEdit(): boolean {\r\n return Permissions.hasPermission(\r\n PermissionType.IsAllowedToEditAdminParameters\r\n );\r\n }\r\n\r\n private get allCustomNames(): CreateParameterCustomName[] {\r\n if (this.editParameter === null) {\r\n return [];\r\n }\r\n return [\r\n ...this.editParameter.customNames,\r\n ...this.editParameter.newCustomNames,\r\n ];\r\n }\r\n\r\n private get allCustomNameCustomerIds(): number[] {\r\n return this.allCustomNames.flatMap((customName) => customName.customerIds);\r\n }\r\n\r\n private get hasChanges(): boolean {\r\n if (this.parameter === null || this.editParameter === null) {\r\n return false;\r\n }\r\n\r\n return (\r\n this.parameter.active !== this.editParameter.active ||\r\n this.parameter.internal !== this.editParameter.internal ||\r\n this.parameter.restricted !== this.editParameter.restricted ||\r\n this.parameter.enabledForAverageQualityData !==\r\n this.editParameter.enabledForAverageQualityData ||\r\n !Helpers.areEqual(\r\n this.parameter.restrictedCustomerIds,\r\n this.editParameter.restrictedCustomerIds\r\n ) ||\r\n this.hasCustomNamesChanges ||\r\n this.editParameter.newCustomNames.length > 0\r\n );\r\n }\r\n\r\n private get hasCustomNamesChanges(): boolean {\r\n if (this.parameter === null || this.editParameter === null) {\r\n return false;\r\n }\r\n\r\n return (\r\n this.parameter.customNames.length !==\r\n this.editParameter.customNames.length ||\r\n !this.editParameter.customNames.every((customName) =>\r\n this.parameter?.customNames.some(\r\n (existingCustomName) =>\r\n existingCustomName.id === customName.id &&\r\n existingCustomName.displayName === customName.displayName &&\r\n Helpers.areEqual(\r\n existingCustomName.customerIds,\r\n customName.customerIds\r\n )\r\n )\r\n )\r\n );\r\n }\r\n\r\n public show(): void {\r\n this.loadData();\r\n\r\n const modal = this.$refs.modal as Modal;\r\n\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n modal.showModal();\r\n }\r\n\r\n private loadData() {\r\n this.errorLoading = false;\r\n this.loading = true;\r\n\r\n Promise.all([\r\n adminParameterModule.dispatchLoad({\r\n parameterId: this.parameterId,\r\n }),\r\n userCustomersModule.dispatchLoad(),\r\n ])\r\n .catch(() => {\r\n this.errorLoading = true;\r\n })\r\n .finally(() => {\r\n this.initialize();\r\n this.loading = false;\r\n });\r\n }\r\n\r\n private initialize(): void {\r\n this.submitted = false;\r\n this.duplicateCustomNameCustomers = false;\r\n\r\n if (this.parameter === null) {\r\n this.editParameter = null;\r\n } else {\r\n this.editParameter = {\r\n active: this.parameter.active,\r\n internal: this.parameter.internal,\r\n restricted: this.parameter.restricted,\r\n enabledForAverageQualityData:\r\n this.parameter.enabledForAverageQualityData,\r\n restrictedCustomerIds: [...this.parameter.restrictedCustomerIds],\r\n customNames: this.originalCustomNames,\r\n newCustomNames: [],\r\n };\r\n }\r\n }\r\n\r\n private get originalCustomNames(): ParameterCustomName[] {\r\n if (this.parameter === null) {\r\n return [];\r\n }\r\n\r\n return this.parameter.customNames.map((customName) => ({\r\n id: customName.id,\r\n displayName: customName.displayName,\r\n customerIds: [...customName.customerIds],\r\n }));\r\n }\r\n\r\n private onRemoveCustomName(customName: ParameterCustomName): void {\r\n if (this.editParameter === null) {\r\n return;\r\n }\r\n\r\n const customNameIndex = this.editParameter.customNames.findIndex(\r\n (cn) => cn.id === customName.id\r\n );\r\n if (customNameIndex >= 0) {\r\n this.editParameter.customNames.splice(customNameIndex, 1);\r\n } else {\r\n const newCustomNameIndex = this.editParameter.newCustomNames.findIndex(\r\n (cn) => cn.id === customName.id\r\n );\r\n if (newCustomNameIndex >= 0) {\r\n this.editParameter.newCustomNames.splice(newCustomNameIndex, 1);\r\n }\r\n }\r\n }\r\n\r\n private onAddCustomNameClick(): void {\r\n if (this.editParameter === null) {\r\n return;\r\n }\r\n\r\n let newCustomNameId = -1;\r\n while (\r\n this.editParameter.newCustomNames.some(\r\n (newCustomName) => newCustomName.id === newCustomNameId\r\n )\r\n ) {\r\n newCustomNameId -= 1;\r\n }\r\n\r\n this.editParameter.newCustomNames.push({\r\n displayName: '',\r\n customerIds: [],\r\n id: newCustomNameId,\r\n });\r\n }\r\n\r\n private async onSubmit(): Promise {\r\n if (this.editParameter === null || !this.hasChanges) {\r\n return;\r\n }\r\n\r\n this.submitted = true;\r\n this.duplicateCustomNameCustomers = false;\r\n\r\n if (\r\n this.editParameter.active &&\r\n !this.editParameter.internal &&\r\n this.allCustomNames.some(\r\n (customName) =>\r\n customName.displayName === '' || customName.customerIds.length === 0\r\n )\r\n ) {\r\n return;\r\n } else if (\r\n this.editParameter.active &&\r\n !this.editParameter.internal &&\r\n this.allCustomNames.some((a, aIndex) =>\r\n a.customerIds.some((aCustomerId) =>\r\n this.editParameter?.customNames\r\n .flatMap((b, bIndex) => (aIndex !== bIndex ? b.customerIds : []))\r\n .some((bCustomerId) => aCustomerId === bCustomerId)\r\n )\r\n )\r\n ) {\r\n this.duplicateCustomNameCustomers = true;\r\n return;\r\n }\r\n\r\n this.editParameter = {\r\n active: this.editParameter.active,\r\n internal: this.editParameter.active\r\n ? this.editParameter.internal\r\n : this.parameter?.internal ?? false, // use original value since option not visible (when active is unchecked)\r\n restricted: !this.editParameter.active\r\n ? this.parameter?.restricted ?? false // use original value since option not visible (when active is unchecked)\r\n : !this.editParameter.internal && this.editParameter.restricted,\r\n enabledForAverageQualityData: !this.editParameter.active\r\n ? this.parameter?.enabledForAverageQualityData ?? false // use original value since option not visible (when active is unchecked)\r\n : !this.editParameter.internal &&\r\n !this.parameter?.predicted &&\r\n this.editParameter.enabledForAverageQualityData,\r\n restrictedCustomerIds: !this.editParameter.active\r\n ? this.parameter?.restrictedCustomerIds ?? [] // use original value since option not visible (when active is unchecked)\r\n : !this.editParameter.internal && this.editParameter.restricted\r\n ? this.editParameter.restrictedCustomerIds\r\n : [],\r\n customNames: !this.editParameter.active\r\n ? this.parameter?.customNames ?? [] // use original value since option not visible (when active is unchecked)\r\n : !this.editParameter.internal\r\n ? this.editParameter.customNames\r\n : [],\r\n newCustomNames: !this.editParameter.active\r\n ? [] // use original value since option not visible (when active is unchecked)\r\n : !this.editParameter.internal\r\n ? this.editParameter.newCustomNames\r\n : [],\r\n };\r\n\r\n Consoler.debugLog(\r\n 'The q-data parameter model for update',\r\n this.editParameter\r\n );\r\n\r\n this.updating = true;\r\n this.errorUpdating = false;\r\n\r\n adminParameterModule\r\n .dispatchUpdateParameter({\r\n parameterId: this.parameterId,\r\n update: this.editParameter,\r\n })\r\n .then(() => {\r\n const modal = this.$refs.modal as Modal;\r\n if (!modal) {\r\n return;\r\n }\r\n modal.hideModal();\r\n })\r\n .catch(() => {\r\n this.errorUpdating = true;\r\n })\r\n .finally(() => {\r\n this.updating = false;\r\n });\r\n }\r\n\r\n private onReset(): void {\r\n this.initialize();\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParameterEditorModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParameterEditorModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminParameterEditorModal.vue?vue&type=template&id=1f29b5be&scoped=true&\"\nimport script from \"./AdminParameterEditorModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminParameterEditorModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdminParameterEditorModal.vue?vue&type=style&index=0&id=1f29b5be&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 \"1f29b5be\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport DefaultLayout from '@/layouts/DefaultLayout.vue';\r\nimport Breadcrumbs from '@/components/general/Breadcrumbs.vue';\r\nimport Messages from '@/components/general/Messages.vue';\r\nimport AdminParameterList from '@/components/AdminParameterList.vue';\r\nimport AdminParameterEditorModal from '@/components/AdminParameterEditorModal.vue';\r\nimport { adminParametersModule } from '@/store/modules/adminParameters';\r\nimport { Breadcrumb } from '@/models/Breadcrumb';\r\nimport { routeNameAdminParameters, routeNameAdminRoot } from '@/router/routes';\r\nimport telemetryService, {\r\n RouteTrackingInfo,\r\n} from '@/services/TelemetryService';\r\nimport { getRouteTrackingInfo } from '@/router/functions';\r\nimport { Parameter } from '@/models/AdminParameters/Parameter';\r\nimport { ParameterId } from '@/models/ParameterId';\r\n\r\n@Component({\r\n components: {\r\n DefaultLayout,\r\n Breadcrumbs,\r\n Messages,\r\n AdminParameterList,\r\n AdminParameterEditorModal,\r\n },\r\n})\r\nexport default class AdminParametersPage extends Vue {\r\n private routeTrackingInfo: RouteTrackingInfo = {};\r\n private loading: boolean = false;\r\n private errorLoading: boolean = false;\r\n private editParameterId: ParameterId | null = null;\r\n\r\n private get parameters(): Parameter[] {\r\n return adminParametersModule.data ?? [];\r\n }\r\n\r\n private get breadcrumbs(): Breadcrumb[] {\r\n const items: Breadcrumb[] = [\r\n {\r\n routeName: routeNameAdminRoot,\r\n name: this.$t('breadcrumbs.' + routeNameAdminRoot).toString(),\r\n },\r\n {\r\n routeName: routeNameAdminParameters,\r\n name: this.$t('breadcrumbs.' + routeNameAdminParameters).toString(),\r\n },\r\n ];\r\n\r\n return items;\r\n }\r\n\r\n @Watch('$route', { immediate: false, deep: true })\r\n private onRouteChange(): void {\r\n this.routeTrackingInfo = getRouteTrackingInfo(this.$route);\r\n this.loadData().finally(() => {\r\n telemetryService.stopTrackPage(this.routeTrackingInfo);\r\n });\r\n }\r\n\r\n private created(): void {\r\n this.routeTrackingInfo = getRouteTrackingInfo(this.$route);\r\n this.loadData().finally(() => {\r\n telemetryService.stopTrackPage(this.routeTrackingInfo);\r\n });\r\n }\r\n\r\n private onParameterClick(id: ParameterId) {\r\n this.editParameterId = id;\r\n this.$nextTick(() => {\r\n (\r\n this.$refs.adminParameterEditorModal as AdminParameterEditorModal\r\n ).show();\r\n });\r\n }\r\n\r\n private loadData(force?: boolean): Promise {\r\n this.errorLoading = false;\r\n this.loading = true;\r\n\r\n return adminParametersModule\r\n .dispatchLoad({ force })\r\n .then(() => undefined)\r\n .catch(() => {\r\n this.errorLoading = true;\r\n })\r\n .finally(() => {\r\n this.loading = false;\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParametersPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminParametersPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminParametersPage.vue?vue&type=template&id=0bf5f086&\"\nimport script from \"./AdminParametersPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminParametersPage.vue?vue&type=script&lang=ts&\"\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 { BaseServiceDefinition } from './BaseService';\r\nimport { EnvironmentalData } from '@/models/Sustainability/EnvironmentalData/EnvironmentalData';\r\nimport { CarbonFootprints } from '@/models/Sustainability/CarbonFootprints/CarbonFootprints';\r\nimport { OriginOfWood } from '@/models/Sustainability/OriginOfWood/OriginOfWood';\r\nimport { SustainabilityProduct } from '@/models/Sustainability/SustainabilityProduct';\r\nimport { CertifiedVolumes } from '@/models/Sustainability/CertifiedVolumes/CertifiedVolumes';\r\nimport { MonthRange } from '@/models/MonthRange';\r\nimport { WaterFootprint } from '@/models/Sustainability/WaterFootprints/WaterFootprint';\r\nimport { SustainabilityImportData } from '@/models/Sustainability/SustainabilityImportData';\r\nimport { EnvironmentalDataReportType } from '@/models/Sustainability/EnvironmentalData/EnvironmentalDataReportType';\r\nimport { SustainabilityDataReportType } from '@/models/Sustainability/SustainabilityDataReportType';\r\nimport { SustainabilityMeasurementStatistics } from '@/models/Sustainability/SustainabilityMeasurementStatistics';\r\n\r\nclass SustainabilityService extends BaseServiceDefinition {\r\n constructor() {\r\n super();\r\n }\r\n\r\n public async getProducts(): Promise {\r\n return this.get('/api/v1/sustainability/products')\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getCustomerProducts(): Promise {\r\n return this.get('/api/v1/sustainability/customerProducts')\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getEnvironmentalData(\r\n productName: string,\r\n millId: number,\r\n year: number,\r\n reportType?: EnvironmentalDataReportType\r\n ): Promise {\r\n return this.get(\r\n `/api/v1/sustainability/environmentalData/${year}/${millId}/${productName}`,\r\n { reportType: reportType }\r\n )\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getCarbonFootprints(\r\n productName: string,\r\n millId: number,\r\n year: number\r\n ): Promise {\r\n return this.get(\r\n `/api/v1/sustainability/carbonFootprints/${year}/${millId}/${productName}`\r\n )\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getOriginOfWood(\r\n productName: string,\r\n millId: number,\r\n year: number\r\n ): Promise {\r\n return this.get(\r\n `/api/v1/sustainability/originOfWood/${year}/${millId}/${productName}`\r\n )\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getWaterFootprint(\r\n year: number,\r\n millId: number,\r\n productName: string\r\n ): Promise {\r\n return this.get(\r\n `/api/v1/sustainability/waterfootprints/${year}/${millId}/${productName}`\r\n )\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async getCertifiedVolumes(\r\n range: MonthRange\r\n ): Promise {\r\n return this.get('/api/v1/sustainability/certifiedVolumes', {\r\n fromYear: range.from.year,\r\n fromMonth: range.from.month + 1,\r\n toYear: range.to.year,\r\n toMonth: range.to.month + 1,\r\n })\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n public async downloadEnvironmentalData(\r\n productName: string,\r\n millId: number,\r\n year: number,\r\n millName: string,\r\n reportType?: EnvironmentalDataReportType\r\n ): Promise {\r\n await this.downloadFile(\r\n `/api/v1/sustainability/environmentalData/${year}/${millId}/${productName}/excel`,\r\n `EnvironmentalData_${productName}_${millName}_${year}${\r\n reportType ? `_${reportType.replace(' ', '')}` : ''\r\n }.xlsx`,\r\n { reportTypeId: reportType }\r\n );\r\n }\r\n\r\n public async downloadSustainabilityDataReport(\r\n sustainabilityProducts: SustainabilityProduct[],\r\n sustainabilityDataReportTypes: SustainabilityDataReportType[],\r\n year: number,\r\n environmentalDataReportType: EnvironmentalDataReportType = EnvironmentalDataReportType.All,\r\n includeCertifiedVolumes: boolean = false\r\n ): Promise {\r\n const url = `/api/v1/sustainability/report/${year}/excel?`;\r\n const productMillsParams = sustainabilityProducts\r\n .map((p) => {\r\n return `&productNames=${p.productName}&millIds=${p.millId}`;\r\n })\r\n .join('');\r\n\r\n const sustainabilityDataReportTypesParams = sustainabilityDataReportTypes\r\n .map((s) => {\r\n return `&sustainabilityDataReportTypes=${s}`;\r\n })\r\n .join('');\r\n\r\n const environmentalDataReportTypeParam = (): string => {\r\n return `&environmentalDataReportType=${environmentalDataReportType}`;\r\n };\r\n\r\n const completeUrl = ''.concat(\r\n url,\r\n productMillsParams,\r\n sustainabilityDataReportTypesParams,\r\n environmentalDataReportTypeParam()\r\n );\r\n\r\n await this.downloadFile(completeUrl, `sustainability-report-${year}.xlsx`);\r\n }\r\n\r\n public async downloadCarbonFootprints(\r\n productName: string,\r\n millId: number,\r\n year: number,\r\n millName: string\r\n ): Promise {\r\n await this.downloadFile(\r\n `/api/v1/sustainability/carbonFootprints/${year}/${millId}/${productName}/excel`,\r\n `CarbonFootprints_${productName}_${millName}_${year}.xlsx`\r\n );\r\n }\r\n\r\n public async downloadWaterFootprint(\r\n year: number,\r\n millId: number,\r\n millName: string,\r\n productName: string\r\n ): Promise {\r\n await this.downloadFile(\r\n `/api/v1/sustainability/waterFootprints/${year}/${millId}/${productName}/excel?millName=${millName}`,\r\n `WaterFootprint_${millName}_${year}.xlsx`\r\n );\r\n }\r\n\r\n public async downloadOriginOfWood(\r\n productName: string,\r\n millId: number,\r\n year: number,\r\n millName: string\r\n ): Promise {\r\n await this.downloadFile(\r\n `/api/v1/sustainability/originOfWood/${year}/${millId}/${productName}/excel`,\r\n `RawMaterialOrigins_${productName}_${millName}_${year}.xlsx`\r\n );\r\n }\r\n\r\n public async downloadCertifiedVolumes(range: MonthRange): Promise {\r\n await this.downloadFile(\r\n `/api/v1/sustainability/certifiedVolumes/excel`,\r\n `CertifiedVolumes_${range.from.year}${String(\r\n range.from.month + 1\r\n ).padStart(2, '0')}-${range.to.year}${String(range.to.month + 1).padStart(\r\n 2,\r\n '0'\r\n )}.xlsx`,\r\n {\r\n fromYear: range.from.year,\r\n fromMonth: range.from.month + 1,\r\n toYear: range.to.year,\r\n toMonth: range.to.month + 1,\r\n }\r\n );\r\n }\r\n\r\n public async uploadSustainabilityData(\r\n file: File\r\n ): Promise {\r\n const formData = new FormData();\r\n\r\n formData.append('file', file);\r\n\r\n return this.post('/api/v1/sustainability/import', formData, {\r\n headers: { 'Content-Type': 'multipart/form-data' },\r\n })\r\n .then((response) => {\r\n return Promise.resolve(response.data);\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error.response.data);\r\n });\r\n }\r\n\r\n public async getMeasurementStatistics(): Promise {\r\n return this.get('/api/v1/sustainability/statistics')\r\n .then((response) => {\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n return Promise.reject(error);\r\n });\r\n }\r\n}\r\n\r\nconst sustainabilityService: SustainabilityService =\r\n new SustainabilityService();\r\n\r\nexport default sustainabilityService;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{ref:\"modal\",attrs:{\"id\":\"adminUserEditorModal\",\"title\":_vm.user ? _vm.user.name : '',\"showFooter\":true,\"closeableByOutsideClickAndEscKey\":false},scopedSlots:_vm._u([(_vm.user)?{key:\"body\",fn:function(){return [_c('div',{staticClass:\"mb-3\"},[_c('table',{staticClass:\"keyvalue w-100\"},[(_vm.isAdminUser)?_c('tr',[_c('th',{staticClass:\"w-25\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserEditorModal.metadata.axId'))+\": \")]),_c('td',[_vm._v(_vm._s(_vm.user.axId))])]):_vm._e(),(_vm.isAdminUser)?_c('tr',[_c('th',{staticClass:\"w-25\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserEditorModal.metadata.contactId'))+\": \")]),_c('td',[_vm._v(_vm._s(_vm.contactId ? _vm.contactId : '-'))])]):_vm._e(),_c('tr',[_c('th',{staticClass:\"w-25\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserEditorModal.metadata.email'))+\": \")]),_c('td',[_vm._v(_vm._s(_vm.user.email))])]),(_vm.isAdminUser)?_c('tr',[_c('th',{staticClass:\"w-25\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserEditorModal.metadata.businessContacts'))+\": \")]),_c('td',[_vm._v(_vm._s(_vm.businessContactsText))])]):_vm._e(),(_vm.loadingLastSignIn)?_c('tr',[_c('td',{attrs:{\"colspan\":\"2\"}},[_c('span',{staticClass:\"o-loader o-loader--medium\"})])]):(!_vm.errorLastSignIn)?_c('tr',[_c('th',{staticClass:\"w-25\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserEditorModal.metadata.lastSignIn'))+\": \")]),_c('td',[_vm._v(_vm._s(_vm.lastSignIn))])]):_vm._e()])]),_c('AdminUserPermissionsEditor',{attrs:{\"permissions\":_vm.parentPermissions,\"permissionIds\":_vm.permissionIds},on:{\"permissionIdsChange\":_vm.onPermissionIdsChange}}),_c('AdminUserCustomersEditor',{attrs:{\"customerIds\":_vm.customerIds},on:{\"customerIdsChange\":_vm.onCustomerIdsChange}})]},proxy:true}:null,{key:\"footer\",fn:function(){return [(_vm.errorUpdating)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"adminUserEditorModal-errorAlert\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminUserEditorModal.errorUpdating')))]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"adminUserEditorModal-errorAlert\"}})]):_vm._e(),(_vm.errorLastSignIn)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"adminUserEditorModal-errorAlert\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminUserEditorModal.errorLoadingLastSignIn')))]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"adminUserEditorModal-errorAlert\"}})]):_vm._e(),(_vm.errorLoadingUser)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"adminUserEditorModal-errorAlert\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminUserEditorModal.errorLoadingUser')))]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"adminUserEditorModal-errorAlert\"}})]):_vm._e(),(_vm.loadingUser)?_c('div',{staticClass:\"d-flex align-items-center justify-content-center u-min-height-300\"},[_c('span',{staticClass:\"o-loader\"},[_vm._v(_vm._s(_vm.$t('adminUserEditorModal.loadingUser')))])]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canUpdate && !_vm.loadingUser),expression:\"canUpdate && !loadingUser\"}]},[_c('button',{staticClass:\"o-button o-button--lime-green mr-2\",attrs:{\"disabled\":!_vm.hasChanges || _vm.updating},on:{\"click\":function($event){$event.preventDefault();return _vm.onSubmit.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserEditorModal.okButton'))+\" \")]),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasChanges),expression:\"hasChanges\"}],staticClass:\"o-button o-button--white mr-2\",attrs:{\"disabled\":_vm.updating},on:{\"click\":function($event){$event.preventDefault();return _vm.onReset.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserEditorModal.resetButton'))+\" \")])])]},proxy:true}],null,true)})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasPermission)?_c('div',[_c('h3',{staticClass:\"t-heading-5 mb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserPermissionsEditor.title'))+\" \")]),_c('div',{staticClass:\"mb-3\"},[_c('h4',{staticClass:\"t-heading-6 u-thin\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserPermissionsEditor.general'))+\": \")]),_vm._l((_vm.generalPermissions),function(permission,index){return _c('AdminUserPermissionEditor',{key:(\"general|\" + index),attrs:{\"permission\":permission,\"permissionIds\":_vm.permissionIds},on:{\"permissionChange\":_vm.onPermissionChange}})})],2),_c('div',{staticClass:\"mb-3\"},[_c('h4',{staticClass:\"t-heading-6 u-thin\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserPermissionsEditor.nonSmi'))+\": \")]),_vm._l((_vm.nonSmiPermissions),function(permission,index){return _c('AdminUserPermissionEditor',{key:(\"nonSmi|\" + index),attrs:{\"permission\":permission,\"permissionIds\":_vm.permissionIds},on:{\"permissionChange\":_vm.onPermissionChange}})})],2),_c('div',{staticClass:\"mb-3\"},[_c('h4',{staticClass:\"t-heading-6 u-thin\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserPermissionsEditor.smi'))+\": \")]),_vm._l((_vm.smiPermissions),function(permission,index){return _c('AdminUserPermissionEditor',{key:(\"smi|\" + index),attrs:{\"permission\":permission,\"permissionIds\":_vm.permissionIds},on:{\"permissionChange\":_vm.onPermissionChange}})})],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('label',{staticClass:\"o-checkbox mb-1\"},[_c('input',{attrs:{\"disabled\":!_vm.permission.canBeUsed,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isPermissionChecked(_vm.permission)},on:{\"change\":function($event){return _vm.onPermissionChange(_vm.permission)}}}),_c('span',{staticClass:\"checkmark\"}),_vm._v(\" \"+_vm._s(_vm.$t((\"permissionTypes.\" + (_vm.permission.type))))+\" \")]),(_vm.permission.childPermissions.length)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isPermissionChecked(_vm.permission)),expression:\"isPermissionChecked(permission)\"}],staticClass:\"ml-3\"},_vm._l((_vm.permission.childPermissions),function(permission,index){return _c('div',{key:index},[_c('label',{staticClass:\"o-checkbox mb-1\"},[_c('input',{attrs:{\"disabled\":!permission.canBeUsed,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isPermissionChecked(permission)},on:{\"change\":function($event){return _vm.onPermissionChange(permission)}}}),_c('span',{staticClass:\"checkmark\"}),_vm._v(\" \"+_vm._s(_vm.$t((\"permissionTypes.\" + (permission.type))))+\" \")])])}),0):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport { ParentPermission } from '@/models/AdminUsers/ParentPermission';\r\nimport { Permission } from '@/models/AdminUsers/Permission';\r\n\r\n@Component\r\nexport default class AdminUserPermissionEditor extends Vue {\r\n @Prop({ required: true }) private permission!: ParentPermission;\r\n @Prop({ required: true }) private permissionIds!: PermissionType[];\r\n\r\n private isPermissionChecked(permission: Permission): boolean {\r\n return this.permissionIds.some((id) => id === permission.type);\r\n }\r\n\r\n private onPermissionChange(permission: Permission) {\r\n this.$emit(\r\n 'permissionChange',\r\n permission,\r\n !this.isPermissionChecked(permission)\r\n );\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserPermissionEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserPermissionEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminUserPermissionEditor.vue?vue&type=template&id=294384b4&\"\nimport script from \"./AdminUserPermissionEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminUserPermissionEditor.vue?vue&type=script&lang=ts&\"\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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ParentPermission } from '@/models/AdminUsers/ParentPermission';\r\nimport { Permission } from '@/models/AdminUsers/Permission';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport AdminUserPermissionEditor from './AdminUserPermissionEditor.vue';\r\nimport { authRequirementsForAdminUserPermissions } from '@/router/authRequirements';\r\nimport { Permissions } from '@/utils/Permissions';\r\n\r\n@Component({\r\n components: {\r\n AdminUserPermissionEditor,\r\n },\r\n})\r\nexport default class AdminUserPermissionsEditor extends Vue {\r\n @Prop({ required: true }) private permissions!: ParentPermission[];\r\n @Prop({ required: true }) private permissionIds!: PermissionType[];\r\n\r\n private get hasPermission(): boolean {\r\n return Permissions.validate(authRequirementsForAdminUserPermissions).valid;\r\n }\r\n\r\n private get generalPermissions(): ParentPermission[] {\r\n return this.permissions.filter(\r\n (p) => p.isForSmiCustomersOnly === undefined\r\n );\r\n }\r\n\r\n private get nonSmiPermissions(): ParentPermission[] {\r\n return this.permissions.filter((p) => p.isForSmiCustomersOnly === false);\r\n }\r\n\r\n private get smiPermissions(): ParentPermission[] {\r\n return this.permissions.filter((p) => p.isForSmiCustomersOnly === true);\r\n }\r\n\r\n private togglePermission(\r\n permission: Permission,\r\n toggle: boolean\r\n ): PermissionType[] {\r\n const permissionIds = [...this.permissionIds];\r\n\r\n let index = permissionIds.findIndex((p) => p === permission.type);\r\n\r\n if (index === -1) {\r\n if (toggle) {\r\n permissionIds.push(permission.type);\r\n }\r\n\r\n return permissionIds;\r\n }\r\n\r\n permissionIds.splice(index, 1);\r\n\r\n ((permission as ParentPermission)?.childPermissions ?? []).forEach((p) => {\r\n index = permissionIds.findIndex((id) => id === p.type);\r\n\r\n if (index === -1) {\r\n return;\r\n }\r\n\r\n permissionIds.splice(index, 1);\r\n });\r\n\r\n return permissionIds;\r\n }\r\n\r\n private onPermissionChange(permission: Permission, toggle: boolean): void {\r\n this.onPermissionIdsChange(this.togglePermission(permission, toggle));\r\n }\r\n\r\n private onPermissionIdsChange(permissionIds: PermissionType[]): void {\r\n this.$emit('permissionIdsChange', permissionIds);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserPermissionsEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserPermissionsEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminUserPermissionsEditor.vue?vue&type=template&id=0f8b7284&\"\nimport script from \"./AdminUserPermissionsEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminUserPermissionsEditor.vue?vue&type=script&lang=ts&\"\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasPermission)?_c('div',[_c('h3',{staticClass:\"t-heading-5\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminUserCustomersEditor.title'))+\" \")]),_c('CompanyChainCustomersTreeSelect',{staticClass:\"tree-select--light-grey\",attrs:{\"value\":_vm.customerIds,\"responsibles\":_vm.responsibles,\"nonResponsibles\":_vm.nonResponsibles,\"showIfSmiCustomer\":true,\"placeholder\":_vm.$t('adminUserCustomersEditor.placeholder')},on:{\"input\":_vm.onCustomersChange}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { CompanyChain } from '@/models/CompanyChain';\r\nimport { userCustomersModule } from '@/store/modules/userCustomers';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport CompanyChainCustomersTreeSelect from './CompanyChainCustomersTreeSelect.vue';\r\nimport { authRequirementsForAdminUserCustomers } from '@/router/authRequirements';\r\nimport { Permissions } from '@/utils/Permissions';\r\n\r\n@Component({\r\n components: {\r\n CompanyChainCustomersTreeSelect,\r\n },\r\n})\r\nexport default class AdminUserCustomersEditor extends Vue {\r\n @Prop({ required: true }) private customerIds!: number[];\r\n\r\n private get hasPermission(): boolean {\r\n return Permissions.validate(authRequirementsForAdminUserCustomers).valid;\r\n }\r\n\r\n private get responsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers?.responsibles ?? [];\r\n }\r\n\r\n private get nonResponsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers?.nonResponsibles ?? [];\r\n }\r\n\r\n private onCustomersChange(customerIds: number[]): void {\r\n this.onCustomerIdsChange(customerIds);\r\n }\r\n\r\n private onCustomerIdsChange(customerIds: number[]): void {\r\n this.$emit('customerIdsChange', customerIds);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserCustomersEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserCustomersEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminUserCustomersEditor.vue?vue&type=template&id=512689b8&\"\nimport script from \"./AdminUserCustomersEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminUserCustomersEditor.vue?vue&type=script&lang=ts&\"\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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport Modal from '@/components/general/Modal.vue';\r\nimport { User } from '@/models/AdminUsers/User';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport { adminUsersModule } from '@/store/modules/adminUsers';\r\nimport { ParentPermission } from '@/models/AdminUsers/ParentPermission';\r\nimport { dateFilter } from '@/filters/date';\r\nimport { Roles } from '@/models/UserProfile/Roles';\r\nimport { Permissions } from '@/utils/Permissions';\r\nimport { adminUsersSpecificModule } from '@/store/modules/adminUsersSpecific';\r\nimport AdminUserPermissionsEditor from './AdminUserPermissionsEditor.vue';\r\nimport AdminUserCustomersEditor from './AdminUserCustomersEditor.vue';\r\nimport {\r\n authRequirementsForAdminUserPermissions,\r\n authRequirementsForAdminUserCustomers,\r\n} from '@/router/authRequirements';\r\nimport { Helpers } from '@/utils/Helpers';\r\n\r\n@Component({\r\n components: {\r\n Modal,\r\n AdminUserPermissionsEditor,\r\n AdminUserCustomersEditor,\r\n },\r\n})\r\nexport default class AdminUserEditorModal extends Vue {\r\n @Prop({ required: true }) private axId!: string;\r\n @Prop({ required: true }) private parentPermissions!: ParentPermission[];\r\n @Prop({ required: false }) private contactId?: string | null;\r\n\r\n private permissionIds: PermissionType[] = [];\r\n private customerIds: number[] = [];\r\n\r\n private updating: boolean = false;\r\n private errorUpdating: boolean = false;\r\n\r\n private loadingLastSignIn: boolean = false;\r\n private errorLastSignIn: boolean = false;\r\n\r\n private loadingUser: boolean = false;\r\n private errorLoadingUser: boolean = false;\r\n\r\n private get user(): User | null {\r\n return adminUsersSpecificModule.item(this.axId);\r\n }\r\n\r\n private get lastSignIn(): string {\r\n const lastSignIn = this.user?.lastSignIn;\r\n\r\n if (lastSignIn) {\r\n return dateFilter(lastSignIn.toString());\r\n }\r\n\r\n return '-';\r\n }\r\n\r\n private get isAdminUser(): boolean {\r\n return Permissions.hasRole(Roles.IsAdminUser);\r\n }\r\n\r\n private get canUpdate(): boolean {\r\n return (\r\n Permissions.validate(authRequirementsForAdminUserPermissions).valid ||\r\n Permissions.validate(authRequirementsForAdminUserCustomers).valid\r\n );\r\n }\r\n\r\n private get hasChanges(): boolean {\r\n return this.hasPermissionChanges || this.hasCustomerChanges;\r\n }\r\n\r\n private get hasPermissionChanges(): boolean {\r\n if (!this.user) {\r\n return false;\r\n }\r\n\r\n return !Helpers.areEqual(this.user.permissions, this.permissionIds);\r\n }\r\n\r\n private get hasCustomerChanges(): boolean {\r\n if (!this.user) {\r\n return false;\r\n }\r\n\r\n return !Helpers.areEqual(\r\n this.user.customers.map((c) => c.id),\r\n this.customerIds\r\n );\r\n }\r\n\r\n private get businessContactsText(): string {\r\n return this.user !== null && this.user.businessContacts.length > 0\r\n ? this.user.businessContacts\r\n .map(\r\n (responsibleUser) =>\r\n `${responsibleUser.name} (${responsibleUser.responsibilities.join(\r\n ', '\r\n )})`\r\n )\r\n .join(', ')\r\n : '-';\r\n }\r\n\r\n public show(): void {\r\n if (this.user === null && this.axId !== null) {\r\n this.loadSpecificUser();\r\n } else {\r\n this.initialize();\r\n }\r\n\r\n const modal = this.$refs.modal as Modal;\r\n\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n modal.showModal();\r\n }\r\n\r\n private loadSpecificUser() {\r\n this.errorLoadingUser = false;\r\n this.loadingUser = true;\r\n\r\n adminUsersSpecificModule\r\n .dispatchLoad({ axId: this.axId })\r\n .catch(() => {\r\n this.errorLoadingUser = true;\r\n })\r\n .finally(() => {\r\n this.initialize();\r\n this.loadingUser = false;\r\n });\r\n }\r\n\r\n private initialize(): void {\r\n if (!this.user) {\r\n return;\r\n }\r\n\r\n this.permissionIds = [...this.user.permissions];\r\n this.customerIds = this.user.customers.map((c) => c.id);\r\n\r\n this.errorLastSignIn = false;\r\n this.loadingLastSignIn = true;\r\n\r\n adminUsersModule\r\n .dispatchGetUserLastSignIn({\r\n azureAdId: this.user.azureAdId,\r\n })\r\n .catch(() => {\r\n this.errorLastSignIn = true;\r\n })\r\n .finally(() => {\r\n this.loadingLastSignIn = false;\r\n });\r\n }\r\n\r\n private onPermissionIdsChange(permissionIds: PermissionType[]) {\r\n this.permissionIds = permissionIds;\r\n }\r\n\r\n private onCustomerIdsChange(customerIds: number[]): void {\r\n this.customerIds = customerIds;\r\n }\r\n\r\n private async onSubmit(): Promise {\r\n if (!this.user) {\r\n return;\r\n }\r\n\r\n this.updating = true;\r\n this.errorUpdating = false;\r\n\r\n if (this.hasPermissionChanges) {\r\n await adminUsersModule\r\n .dispatchUpdateUserPermissions({\r\n azureAdId: this.user.azureAdId,\r\n permissionIds: this.permissionIds,\r\n })\r\n .catch(() => {\r\n this.errorUpdating = true;\r\n });\r\n }\r\n\r\n if (this.hasCustomerChanges) {\r\n await adminUsersModule\r\n .dispatchUpdateUserCustomers({\r\n azureAdId: this.user.azureAdId,\r\n customerIds: this.customerIds,\r\n })\r\n .catch(() => {\r\n this.errorUpdating = true;\r\n });\r\n }\r\n\r\n this.updating = false;\r\n\r\n if (this.errorUpdating) {\r\n return;\r\n }\r\n\r\n const modal = this.$refs.modal as Modal;\r\n\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n modal.hideModal();\r\n }\r\n\r\n private onReset(): void {\r\n this.initialize();\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserEditorModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminUserEditorModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminUserEditorModal.vue?vue&type=template&id=7d96eae3&\"\nimport script from \"./AdminUserEditorModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminUserEditorModal.vue?vue&type=script&lang=ts&\"\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 { CommonStore } from '@/store/common';\r\nimport { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport adminUsersService from '@/services/AdminUsersService';\r\nimport { PaginatedResult } from '@/models/PaginatedResult{T}';\r\nimport { User } from '@/models/AdminUsers/User';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { UsersSortBy } from '@/models/AdminUsers/UsersSortBy';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\n\r\ninterface Search {\r\n sortBy: UsersSortBy;\r\n sortAsc: boolean;\r\n pageIndex: number;\r\n pageSize?: number;\r\n term?: string;\r\n customerIds: number[];\r\n permission?: PermissionType;\r\n noPermissions: boolean;\r\n businessContact?: string;\r\n results: PaginatedResult;\r\n}\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'adminUsers',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminUsersModule extends VuexModule {\r\n public search: Search | null = null;\r\n\r\n private common = new CommonStore(20); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation public commitSetUsers(payload: Search) {\r\n payload.results.items.forEach((user) => (user.lastSignIn = undefined));\r\n\r\n this.search = payload;\r\n }\r\n\r\n @Mutation public commitClearUsers() {\r\n this.search = null;\r\n }\r\n\r\n @Mutation public commitSetUser(user: User) {\r\n if (this.search === null) {\r\n Consoler.debugWarn(\r\n 'commitSetUser: Could not update user since no users loaded.'\r\n );\r\n return;\r\n }\r\n\r\n const userIndex = this.search.results.items.findIndex(\r\n (u) => u.azureAdId === user.azureAdId\r\n );\r\n if (userIndex < 0) {\r\n Consoler.debugWarn(\r\n 'commitSetUser: Could not update user since not found.',\r\n user,\r\n this.search\r\n );\r\n return;\r\n }\r\n\r\n this.search.results.items.splice(userIndex, 1, user);\r\n }\r\n\r\n @Mutation private commitSetUserLastSignIn(payload: {\r\n user: User;\r\n lastSignIn: Date;\r\n }): void {\r\n payload.user.lastSignIn = payload.lastSignIn;\r\n }\r\n // From common:\r\n @Mutation private commitSetLoadedDate() {\r\n this.common.setLoadedDate();\r\n }\r\n @Mutation private commitClearLoadedDate() {\r\n this.common.clearLoadedDate();\r\n }\r\n @Mutation private commitSetLoadingError(payload: { error: any }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n @Mutation private commitSetLoadingPromise(payload: {\r\n loadingPromise: Promise;\r\n loadingPromiseForId: any;\r\n }) {\r\n this.common.setLoadingPromise(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(payload: {\r\n sortBy: UsersSortBy;\r\n sortAsc: boolean;\r\n pageIndex: number;\r\n pageSize?: number;\r\n term?: string;\r\n customerIds: number[];\r\n permission?: PermissionType;\r\n noPermissions: boolean;\r\n businessContact?: string;\r\n all?: boolean;\r\n }): Promise {\r\n const loadingId = `${payload.sortBy}|${payload.sortAsc}|${\r\n payload.pageIndex\r\n }|${payload.pageSize}|${payload.term ?? ''}|${payload.customerIds\r\n .sort()\r\n .join(',')}|${payload.permission ?? ''}|${payload.noPermissions}|${\r\n payload.businessContact ?? ''\r\n }`;\r\n\r\n if (\r\n this.search !== null &&\r\n this.loading.loadingPromiseForId === loadingId &&\r\n !this.common.needToReLoad()\r\n ) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.common.isCurrentlyLoading(loadingId)) {\r\n return this.common.loading.loadingPromise;\r\n }\r\n\r\n this.commitSetLoading();\r\n this.commitClearUsers();\r\n\r\n const loadingPromise = adminUsersService\r\n .findUsers(\r\n payload.sortBy,\r\n payload.sortAsc,\r\n payload.pageIndex,\r\n payload.pageSize,\r\n payload.term,\r\n payload.customerIds,\r\n payload.permission,\r\n payload.noPermissions,\r\n payload.businessContact,\r\n payload.all ?? false\r\n )\r\n .then((response) => {\r\n const search: Search = {\r\n sortBy: payload.sortBy,\r\n sortAsc: payload.sortAsc,\r\n pageIndex: payload.pageIndex,\r\n pageSize: payload.pageSize,\r\n term: payload.term,\r\n customerIds: payload.customerIds,\r\n permission: payload.permission,\r\n noPermissions: payload.noPermissions,\r\n results: response,\r\n };\r\n this.commitSetUsers(search);\r\n this.commitSetLoadedDate();\r\n this.commitClearLoading();\r\n Consoler.debugLog('Load adminUsers success', response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminUsers failed', error);\r\n this.commitSetLoadingError({ error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoadingPromise({\r\n loadingPromise,\r\n loadingPromiseForId: loadingId,\r\n });\r\n\r\n return loadingPromise;\r\n }\r\n\r\n @Action\r\n public async dispatchUpdateUserCustomers(payload: {\r\n azureAdId: string;\r\n customerIds: Array;\r\n }): Promise {\r\n if (\r\n this.search === null ||\r\n !this.search.results.items.some(\r\n (user) => user.azureAdId === payload.azureAdId\r\n )\r\n ) {\r\n return Promise.reject(\r\n `User with Azure AD ID ${payload.azureAdId} must first be loaded before updating its customers.`\r\n );\r\n }\r\n\r\n return adminUsersService\r\n .updateUserCustomers(payload.azureAdId, payload.customerIds)\r\n .then((user) => {\r\n Consoler.debugLog('Updating user customers succeeded.');\r\n\r\n this.commitSetUser(user);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Updating user customers failed.', error);\r\n\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n @Action\r\n public async dispatchUpdateUserPermissions(payload: {\r\n azureAdId: string;\r\n permissionIds: Array;\r\n }): Promise {\r\n if (\r\n this.search === null ||\r\n !this.search.results.items.some(\r\n (user) => user.azureAdId === payload.azureAdId\r\n )\r\n ) {\r\n return Promise.reject(\r\n `User with Azure AD ID ${payload.azureAdId} must first be loaded before updating its permissions.`\r\n );\r\n }\r\n\r\n return adminUsersService\r\n .updateUserPermissions(payload.azureAdId, payload.permissionIds)\r\n .then((user) => {\r\n Consoler.debugLog('Updating user permissions succeeded.');\r\n\r\n this.commitSetUser(user);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Updating user permissions failed.', error);\r\n\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n @Action({ rawError: true })\r\n public async dispatchGetUserLastSignIn(payload: {\r\n azureAdId: string;\r\n }): Promise {\r\n const users = this.search?.results?.items ?? [];\r\n\r\n const user = users.find((u) => u.azureAdId === payload.azureAdId);\r\n\r\n if (!user || user.lastSignIn) {\r\n return;\r\n }\r\n\r\n let lastSignIn: Date | null;\r\n\r\n try {\r\n lastSignIn = await adminUsersService.getUserLastSignIn(payload.azureAdId);\r\n\r\n Consoler.debugLog('Getting user last sign in succeeded.');\r\n } catch (error) {\r\n Consoler.debugWarn('Getting user last sign in failed.', error);\r\n\r\n throw error;\r\n }\r\n\r\n if (!lastSignIn) {\r\n return;\r\n }\r\n\r\n this.commitSetUserLastSignIn({ user, lastSignIn });\r\n }\r\n}\r\n\r\nexport const adminUsersModule = getModule(AdminUsersModule);\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionsPage.vue?vue&type=style&index=0&id=7b42e22c&scoped=true&lang=scss&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-wrap\"},[_c('form',{attrs:{\"name\":\"searchBoxForm\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit.apply(null, arguments)}}},[_c('div',{staticClass:\"o-search-input @@modifiers\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue),expression:\"newValue\"}],ref:\"query\",staticClass:\"o-search-input__input\",attrs:{\"type\":\"search\",\"name\":\"query\",\"placeholder\":_vm.placeholder},domProps:{\"value\":(_vm.newValue)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newValue=$event.target.value}}}),(_vm.newValue === _vm.value && _vm.newValue !== '')?_c('button',{staticClass:\"o-search-input__button\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onReset.apply(null, arguments)}}},[_c('i',{staticClass:\"o-search-input__button-icon mdi mdi-close-circle\"})]):_c('button',{staticClass:\"o-search-input__button\",attrs:{\"type\":\"submit\"}},[_c('i',{staticClass:\"o-search-input__button-icon material-icons\"},[_vm._v(\"search\")])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\r\n\r\n@Component\r\nexport default class SearchBox extends Vue {\r\n @Prop({ required: true }) private value!: string;\r\n @Prop({ required: true }) private placeholder!: string;\r\n\r\n private newValue: string = '';\r\n\r\n private created() {\r\n this.newValue = this.value;\r\n }\r\n\r\n @Watch('value', { immediate: true, deep: false })\r\n private onValueChange(val: any) {\r\n this.newValue = val;\r\n }\r\n\r\n private onSubmit(): void {\r\n this.newValue = this.newValue.trim();\r\n this.$emit('submit', this.newValue);\r\n }\r\n\r\n private onReset(): void {\r\n this.newValue = '';\r\n\r\n this.$nextTick(() => {\r\n const input = this.$refs.query as HTMLInputElement;\r\n if (input) {\r\n input.focus();\r\n }\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchBox.vue?vue&type=template&id=1558b7f5&scoped=true&\"\nimport script from \"./SearchBox.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchBox.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchBox.vue?vue&type=style&index=0&id=1558b7f5&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 \"1558b7f5\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionHistoryItem.vue?vue&type=style&index=0&id=41b62643&scoped=true&lang=scss&\"","export enum UsersSortBy {\r\n AxId = 'axId',\r\n Name = 'name',\r\n Email = 'email',\r\n}\r\n","import { CommonStore } from '@/store/common';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { store } from '@/store';\r\n\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport userService from '@/services/UserService';\r\nimport { Customers } from '@/models/Customers';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'userCustomers',\r\n dynamic: true,\r\n store,\r\n})\r\nclass UserCustomersModule extends VuexModule {\r\n public userCustomers: Customers | null = null;\r\n\r\n private common = new CommonStore(60); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation public commitSetUserCustomers(userCustomers: Customers) {\r\n this.userCustomers = userCustomers;\r\n }\r\n\r\n @Mutation public commitClearUserCustomers() {\r\n this.userCustomers = null;\r\n }\r\n\r\n // From common:\r\n @Mutation private commitSetLoadedDate() {\r\n this.common.setLoadedDate();\r\n }\r\n @Mutation private commitClearLoadedDate() {\r\n this.common.clearLoadedDate();\r\n }\r\n @Mutation private commitSetLoadingError(payload: { error: any }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n @Mutation private commitSetLoadingPromise(payload: {\r\n loadingPromise: Promise;\r\n loadingPromiseForId: any;\r\n }) {\r\n this.common.setLoadingPromise(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(data?: { force: boolean }): Promise {\r\n // If recently loaded, return\r\n if ((!data || (data && !data.force)) && !this.common.needToReLoad()) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.common.isCurrentlyLoading()) {\r\n Consoler.debugLog(\r\n 'Already loading, waiting for existing load to finish',\r\n 'userCustomers'\r\n );\r\n return this.common.loading.loadingPromise;\r\n }\r\n\r\n this.commitSetLoading();\r\n\r\n const loadingPromise = userService\r\n .getCustomers()\r\n .then((userCustomers) => {\r\n this.commitSetUserCustomers(userCustomers);\r\n this.commitSetLoadedDate();\r\n this.commitClearLoading();\r\n Consoler.debugLog('Load userCustomers success', userCustomers);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load userCustomers failed', error);\r\n this.commitSetLoadingError({ error });\r\n this.commitClearUserCustomers();\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoadingPromise({ loadingPromise, loadingPromiseForId: null });\r\n return loadingPromise;\r\n }\r\n}\r\n\r\nexport const userCustomersModule = getModule(UserCustomersModule);\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DefaultLayout',[_c('Breadcrumbs',{attrs:{\"items\":_vm.breadcrumbs}}),_c('Messages'),_c('div',{staticClass:\"container-fluid mt-3\"},[_c('div',{staticClass:\"d-flex flex-row justify-content-between flex-wrap align-items-center\"},[_c('h1',{staticClass:\"t-heading-3 pr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionsPage.title'))+\" \")])]),_c('span',{staticClass:\"o-line\"}),(_vm.subscribers.length)?_c('div',{staticClass:\"d-flex flex-column flex-lg-row mb-3\"},[_c('TreeSelect',{staticClass:\"subscribers-tree-select mt-1 mt-lg-0 ml-lg-3\",attrs:{\"value\":_vm.filterUserAzureAdIds,\"options\":_vm.subscribersSelectOptions,\"multiple\":true,\"placeholder\":_vm.$t('adminSubscriptionsPage.subscribersPlaceholder')},on:{\"select\":_vm.onFilterUserAzureAdIdsChange}}),_c('TreeSelect',{staticClass:\"subscription-types-tree-select mt-1 mt-lg-0 ml-lg-3\",attrs:{\"value\":_vm.filterSubscriptionTypes,\"options\":_vm.subscriptionTypesSelectOptions,\"multiple\":true,\"placeholder\":_vm.$t('adminSubscriptionsPage.subscriptionTypesPlaceholder')},on:{\"select\":_vm.onFilterSubscriptionTypesChange}}),_c('CompanyChainCustomersTreeSelect',{staticClass:\"customers-tree-select mt-1 mt-lg-0 ml-lg-3\",attrs:{\"value\":_vm.filterCustomerIds,\"responsibles\":_vm.responsibles,\"nonResponsibles\":_vm.nonResponsibles,\"clearable\":true,\"placeholder\":_vm.$t('adminSubscriptionsPage.customersPlaceholder')},on:{\"select\":_vm.onFilterCustomerIdsSelect}}),(_vm.anyFilter)?_c('button',{staticClass:\"o-button px-1\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClearFilters}},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionsPage.clearFilters'))+\" \"),_c('i',{staticClass:\"material-icons\"},[_vm._v(\"clear\")])]):_vm._e(),_c('button',{staticClass:\"o-button o-button--black mt-1 mt-lg-0 ml-lg-3\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onCreateSubscription}},[_vm._v(\" \"+_vm._s(_vm.$t(\"adminSubscriptionsPage.create\"))+\" \")])],1):_vm._e(),(_vm.errorLoading)?_c('div',{staticClass:\"c-alert c-alert--red mb-2\"},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminSubscriptionsPage.errorLoading')))])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 mb-3\"},[(_vm.loading)?_c('div',{staticClass:\"u-position-relative u-min-height-300\"},[_c('span',{staticClass:\"o-loader o-loader--absolute\"})]):_vm._e(),(!_vm.errorLoading && !_vm.loading)?[(_vm.subscriptions.length)?[_c('h3',{staticClass:\"t-heading-5\",domProps:{\"innerHTML\":_vm._s(_vm.subtitle)}}),_c('AdminSubscriptionList',{staticClass:\"mb-3\",attrs:{\"subscriptions\":_vm.subscriptions,\"sortBy\":_vm.sortBy,\"sortAsc\":_vm.sortAsc},on:{\"sort\":_vm.onSort,\"edit\":_vm.onEditSubscription,\"subscriptionHistoryChanged\":_vm.onSubscriptionHistoryChanged}}),_c('Pagination',{attrs:{\"pageIndex\":_vm.pageIndex,\"pageCount\":_vm.pageCount,\"pageSize\":_vm.pageSize},on:{\"pageSizeChanged\":_vm.onPageSizeChanged,\"pageIndexChanged\":_vm.onPageIndexChanged}})]:_c('div',[_vm._v(_vm._s(_vm.$t('adminSubscriptionsPage.noData')))])]:_vm._e()],2)])]),(_vm.createOrUpdateSubscription !== null)?_c('AdminSubscriptionEditorModal',{ref:\"adminSubscriptionEditorModal\",attrs:{\"createNotUpdate\":_vm.createOrUpdateSubscription.createNotUpdate,\"details\":_vm.createOrUpdateSubscription.details},on:{\"created\":_vm.onCreated,\"updated\":_vm.onUpdated}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { CommonStore } from '@/store/common';\r\nimport { store } from '@/store';\r\nimport {\r\n Module,\r\n VuexModule,\r\n Mutation,\r\n Action,\r\n getModule,\r\n} from 'vuex-module-decorators';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport { Subscriber } from '@/models/AdminSubscriptions/Subscriber';\r\nimport adminSubscriptionsService from '@/services/AdminSubscriptionsService';\r\n\r\n@Module({\r\n namespaced: true,\r\n name: 'AdminSubscribers',\r\n dynamic: true,\r\n store,\r\n})\r\nclass AdminSubscribersModule extends VuexModule {\r\n public data: Subscriber[] | null = null;\r\n\r\n private common = new CommonStore(5); // reLoadMinMinutesInterval\r\n\r\n // ---------------\r\n // ### Getters ###\r\n // ---------------\r\n\r\n public get loading() {\r\n return this.common.loading;\r\n }\r\n\r\n // -----------------\r\n // ### Mutations ###\r\n // -----------------\r\n\r\n @Mutation public commitSetData(payload: Subscriber[]) {\r\n this.data = payload;\r\n }\r\n\r\n @Mutation public commitClearData() {\r\n this.data = null;\r\n }\r\n\r\n // From common:\r\n @Mutation private commitSetLoadedDate() {\r\n this.common.setLoadedDate();\r\n }\r\n @Mutation private commitClearLoadedDate() {\r\n this.common.clearLoadedDate();\r\n }\r\n @Mutation private commitSetLoadingError(payload: { error: any }) {\r\n this.common.setLoadingError(payload);\r\n }\r\n @Mutation private commitSetLoading() {\r\n this.common.setLoading();\r\n }\r\n @Mutation private commitClearLoading() {\r\n this.common.clearLoading();\r\n }\r\n @Mutation private commitSetLoadingPromise(payload: {\r\n loadingPromise: Promise;\r\n loadingPromiseForId: any;\r\n }) {\r\n this.common.setLoadingPromise(payload);\r\n }\r\n\r\n // ---------------\r\n // ### Actions ###\r\n // ---------------\r\n\r\n @Action\r\n public async dispatchLoad(payload?: { force?: boolean }): Promise {\r\n if (\r\n (!payload || (payload && !payload.force)) &&\r\n !this.common.needToReLoad()\r\n ) {\r\n return Promise.resolve();\r\n }\r\n\r\n if (this.common.isCurrentlyLoading()) {\r\n return this.common.loading.loadingPromise;\r\n }\r\n\r\n this.commitSetLoading();\r\n this.commitClearData();\r\n\r\n const loadingPromise = adminSubscriptionsService\r\n .getSubscribers()\r\n .then((response) => {\r\n this.commitSetData(response);\r\n this.commitSetLoadedDate();\r\n this.commitClearLoading();\r\n Consoler.debugLog('Load adminSubscribers success', response);\r\n })\r\n .catch((error) => {\r\n Consoler.debugWarn('Load adminSubscribers failed', error);\r\n this.commitSetLoadingError({ error });\r\n\r\n return Promise.reject(error);\r\n });\r\n\r\n this.commitSetLoadingPromise({ loadingPromise, loadingPromiseForId: null });\r\n\r\n return loadingPromise;\r\n }\r\n}\r\n\r\nexport const adminSubscribersModule = getModule(AdminSubscribersModule);\r\n","export enum SubscriptionsSortBy {\r\n Created = 'created',\r\n UserFullName = 'userFullName',\r\n Name = 'name',\r\n Type = 'type',\r\n LastSent = 'lastSent',\r\n Status = 'status',\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.subscriptions.length)?_c('Table',{attrs:{\"columns\":_vm.columns,\"rows\":_vm.rows,\"usePagination\":false,\"customSorting\":_vm.customSorting},on:{\"rowClick\":_vm.onRowClick,\"sort\":_vm.onSort},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nvar column = ref.column;\nreturn [(column.property === 'links')?[_c('div',{staticClass:\"d-flex justify-content-end align-items-center nowrap\"},[(row.isEditable)?_c('a',{staticClass:\"p-1\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onEditClick(row)}}},[_vm._v(_vm._s(_vm.$t('adminSubscriptionList.edit')))]):_vm._e()])]:(column.property === 'name')?[_c('i',[_vm._v(_vm._s(row.properties[column.property]))])]:(column.property === 'active')?[_c('SubscriptionActiveSwitch',{attrs:{\"subscriptionType\":row.subscription.type,\"subscriptionInfoDetails\":row.subscription.subscriptionInfo,\"adminModeForUserAzureAdId\":row.subscription.subscriber.userAzureAdId}})]:(column.property === 'lastSent')?[_c('span',{attrs:{\"title\":row.subscription.lastSent\n ? _vm.dateWithTimeFilter(row.subscription.lastSent)\n : undefined}},[_vm._v(_vm._s(row.subscription.lastSent ? _vm.dateFilter(row.subscription.lastSent) : _vm.$t('adminSubscriptionList.never')))])]:[_vm._v(\" \"+_vm._s(row.properties[column.property])+\" \")]]}}],null,false,991216665)}):_vm._e(),(_vm.subscriptionDetailsForHistory !== null)?_c('AdminSubscriptionHistoryModal',{ref:\"adminSubscriptionHistoryModal\",attrs:{\"subscriptionDetails\":_vm.subscriptionDetailsForHistory},on:{\"subscriptionHistoryChanged\":_vm.onSubscriptionHistoryChanged}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export enum UserSubscriptionSendOutType {\r\n Original = 'Original',\r\n ReSend = 'ReSend',\r\n Copy = 'Copy',\r\n}\r\n","export enum SubscriptionLogType {\r\n Created = 'Created',\r\n Updated = 'Updated',\r\n Deleted = 'Deleted',\r\n Undeleted = 'Undeleted',\r\n Activated = 'Activated',\r\n Inactivated = 'Inactivated',\r\n SendOut = 'SendOut',\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Modal',{ref:\"modal\",attrs:{\"id\":\"adminSubscriptionHistoryModal\",\"title\":_vm.$t((\"adminSubscriptionHistoryModal.title.\" + (_vm.subscriptionDetails.type)), [\n _vm.subscriptionDetails.subscriptionInfo.name ]),\"isExtraLarge\":true,\"showFooter\":true,\"closeableByOutsideClickAndEscKey\":_vm.sendingCopyOfSendOut === null &&\n _vm.reSendingSendOut === null &&\n _vm.settingSendOutHandledStatus === null},on:{\"close\":_vm.onClose},scopedSlots:_vm._u([(_vm.subscriptionHistory)?{key:\"body\",fn:function(){return [_c('div',{staticClass:\"mb-3\"},[(_vm.subscriptionHistoryItems.length)?_c('div',[_c('div',{staticClass:\"c-table c-table__expandable c-table--no-divider js-table js-table-expandable w-100 mb-3\"},[_c('div',{staticClass:\"c-table__scroll-container\"},[_c('table',_vm._l((_vm.subscriptionHistoryItems),function(historyItem,index){return _c('AdminSubscriptionHistoryItem',{key:index,attrs:{\"subscriptionType\":_vm.subscriptionDetails.type,\"historyItem\":historyItem,\"disableActions\":_vm.isReSendingSendOut ||\n _vm.isSendingCopyOfSendOut ||\n _vm.isSettingSendOutHandledStatus},on:{\"reSendSendOut\":_vm.onReSendSendOut,\"sendCopyOfSendOut\":_vm.onSendCopyOfSendOut,\"toggleSendOutHandledStatus\":_vm.onToggleSendOutHandledStatus}})}),1)])]),(_vm.pageCount > 1)?_c('Pagination',{staticClass:\"justify-content-center\",attrs:{\"pageIndex\":_vm.pageIndex,\"pageCount\":_vm.pageCount,\"pageSize\":_vm.pageSize,\"pageSizeOptions\":[]},on:{\"pageIndexChanged\":_vm.onPageIndexChanged}}):_vm._e()],1):_c('div',[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryModal.noData')))])])]},proxy:true}:null,{key:\"footer\",fn:function(){return [(_vm.errorLoading)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"adminSubscriptionHistoryModal-errorAlert\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryModal.errorLoading')))]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"adminSubscriptionHistoryModal-errorAlert\"}})]):_vm._e(),(_vm.loading)?_c('div',{staticClass:\"d-flex align-items-center justify-content-center u-min-height-300\"},[_c('span',{staticClass:\"o-loader\"},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryModal.loading')))])]):_vm._e(),_c('div',[_c('button',{staticClass:\"o-button o-button--black mr-2\",on:{\"click\":function($event){$event.preventDefault();return _vm.onClose.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionHistoryModal.close'))+\" \")])])]},proxy:true}],null,true)}),(_vm.reSendingSendOut !== null)?_c('ConfirmModal',{ref:\"reSendingSendOutModal\",attrs:{\"title\":_vm.$t('adminSubscriptionHistoryModal.reSendingSendOutModal.title'),\"description\":_vm.$t(\"adminSubscriptionHistoryModal.reSendingSendOutModal.description\", [\n _vm.reSendingSendOut.sendOutId,\n _vm.subscriptionDetails.subscriber.userFullName ]),\"confirmButtonText\":_vm.$t('adminSubscriptionHistoryModal.reSendingSendOutModal.confirm'),\"disabled\":_vm.isReSendingSendOut,\"showError\":_vm.errorReSendingSendOut,\"errorText\":_vm.$t('adminSubscriptionHistoryModal.reSendingSendOutModal.errorText')},on:{\"confirm\":_vm.onConfirmReSendSendOut,\"close\":_vm.onCloseReSendingSendOutModal}}):_vm._e(),(_vm.settingSendOutHandledStatus !== null)?_c('ConfirmModal',{ref:\"sendOutHandledStatusModal\",attrs:{\"title\":_vm.$t(\n (\"adminSubscriptionHistoryModal.sendOutHandledStatusModal.\" + (!_vm.settingSendOutHandledStatus.isHandled\n ? 'markSendOutHandled'\n : 'unMarkSendOutHandled') + \".title\")\n ),\"description\":_vm.$t(\n (\"adminSubscriptionHistoryModal.sendOutHandledStatusModal.\" + (!_vm.settingSendOutHandledStatus.isHandled\n ? 'markSendOutHandled'\n : 'unMarkSendOutHandled') + \".description\"),\n [\n _vm.settingSendOutHandledStatus.sendOutId,\n _vm.subscriptionDetails.subscriber.userFullName ]\n ),\"confirmButtonText\":_vm.$t(\n (\"adminSubscriptionHistoryModal.sendOutHandledStatusModal.\" + (!_vm.settingSendOutHandledStatus.isHandled\n ? 'markSendOutHandled'\n : 'unMarkSendOutHandled') + \".confirm\")\n ),\"disabled\":_vm.isSettingSendOutHandledStatus,\"showError\":_vm.errorSettingSendOutHandledStatus,\"errorText\":_vm.$t(\n (\"adminSubscriptionHistoryModal.sendOutHandledStatusModal.\" + (!_vm.settingSendOutHandledStatus.isHandled\n ? 'markSendOutHandled'\n : 'unMarkSendOutHandled') + \".errorText\")\n )},on:{\"confirm\":_vm.onConfirmSettingSendOutHandledStatus,\"close\":_vm.onCloseSettingSendOutHandledStatusModal}}):_vm._e(),(_vm.sendingCopyOfSendOut !== null)?_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmitSendCopyOfSendOut.apply(null, arguments)}}},[_c('ConfirmModal',{ref:\"sendingCopyOfSendOutModal\",attrs:{\"title\":_vm.$t('adminSubscriptionHistoryModal.sendingCopyOfSendOutModal.title'),\"description\":_vm.$t(\n \"adminSubscriptionHistoryModal.sendingCopyOfSendOutModal.description\",\n [_vm.sendingCopyOfSendOut.sendOutId]\n ),\"confirmButtonText\":_vm.$t('adminSubscriptionHistoryModal.sendingCopyOfSendOutModal.confirm'),\"disabled\":_vm.isSendingCopyOfSendOut,\"showError\":_vm.errorSendingCopyOfSendOut,\"errorText\":_vm.$t(\n 'adminSubscriptionHistoryModal.sendingCopyOfSendOutModal.errorText'\n ),\"confirmIsSubmit\":true},on:{\"confirm\":_vm.onConfirmSendCopyOfSendOut,\"close\":_vm.onCloseSendingCopyOfSendOutModal},scopedSlots:_vm._u([{key:\"body\",fn:function(){return [_c('div',{staticClass:\"c-form\",class:{\n 'c-form--validated': _vm.hasSubmittedSendingCopyOfSendOut,\n }},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.sendingCopyOfSendOutTo),expression:\"sendingCopyOfSendOutTo\"}],staticClass:\"o-text-input o-text-input--light-grey u-full-width\",attrs:{\"type\":\"email\",\"required\":\"\",\"disabled\":_vm.isSendingCopyOfSendOut},domProps:{\"value\":(_vm.sendingCopyOfSendOutTo)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.sendingCopyOfSendOutTo=$event.target.value}}})])]},proxy:true}],null,false,2186122897)})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tbody',[_c('tr',{class:{\n 'c-table__primary': _vm.isSendOut,\n 'c-table__primary_non_expandable': !_vm.isSendOut,\n },on:{\"click\":function($event){$event.preventDefault();return (function () {\n if (_vm.isSendOut) {\n _vm.historyItem.sendOut.isExpanded = !_vm.historyItem.sendOut.isExpanded;\n }\n }).apply(null, arguments)}}},[_c('td',[_c('span',{class:{\n 'u-color-red': _vm.isSendOutFailure && !_vm.isSendOutMarkedAsHandled,\n 'strike-through': _vm.isSendOutFailure && _vm.isSendOutMarkedAsHandled,\n }},[(_vm.isSendOut)?_c('strong',[_vm._v(\" \"+_vm._s(_vm.$t( (\"adminSubscriptionHistoryItem.text.\" + (_vm.historyItem.type) + \".\" + _vm.subscriptionType + (_vm.subscriptionType === _vm.SubscriptionType.QualityData ? (\".\" + (_vm.historyItem.sendOut !== undefined ? _vm.historyItem.sendOut.qualityDataFrequency : undefined)) : '') + \".\" + (!_vm.isSendOutFailure ? 'success' : 'failure')), [ _vm.historyItem.sendOut !== undefined ? _vm.historyItem.sendOut.sendOutId : '?' ] ))+\" \")]):[_vm._v(\" \"+_vm._s(_vm.$t((\"adminSubscriptionHistoryItem.text.\" + (_vm.historyItem.type)), [ _vm.userFullName ]))+\" \")]],2)]),_c('td',[_vm._v(_vm._s(_vm._f(\"dateWithTime\")(_vm.historyItem.date)))]),_c('td',{staticClass:\"u-text-right\"},[(_vm.isSendOut && _vm.isSendOutFailure && !_vm.isSendOutMarkedAsHandled)?[(_vm.disableActions)?[_c('span',{staticClass:\"mr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.sendCopy')))]),_c('span',{staticClass:\"mr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.reSend')))]),_c('span',{staticClass:\"mr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.markHandled')))])]:[_c('a',{staticClass:\"mr-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onSendCopyClick.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.sendCopy')))]),_c('a',{staticClass:\"mr-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onReSendClick.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.reSend')))]),_c('a',{staticClass:\"mr-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onToggleHandledClick.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.markHandled')))])]]:_vm._e(),(_vm.isSendOut && !_vm.isSendOutFailure && !_vm.isSendOutMarkedAsHandled)?[(_vm.disableActions)?[_c('span',{staticClass:\"mr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.sendCopy')))]),_c('span',{staticClass:\"mr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.reSend')))])]:[_c('a',{staticClass:\"mr-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onSendCopyClick.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.sendCopy')))]),_c('a',{staticClass:\"mr-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onReSendClick.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.reSend')))])]]:_vm._e(),(_vm.isSendOut && _vm.isSendOutMarkedAsHandled)?[(_vm.disableActions)?[_c('span',{staticClass:\"mr-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.markNotHandled')))])]:[_c('a',{staticClass:\"mr-2\",attrs:{\"href\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onToggleHandledClick.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.$t('adminSubscriptionHistoryItem.actions.markNotHandled')))])]]:_vm._e()],2)]),(\n _vm.isSendOut &&\n _vm.historyItem.sendOut &&\n (_vm.historyItem.sendOut.logs.length > 1 ||\n (_vm.historyItem.sendOut.logs.length == 1 && _vm.isSendOutFailure))\n )?_c('tr',{staticClass:\"c-table__secondary c-table__secondary--has-child-table\"},[_c('td',{staticClass:\"p-0\",attrs:{\"colspan\":\"99\"}},[_c('div',{staticClass:\"mx-3 mb-1\"},[_c('table',{staticClass:\"simple-table simple-table--inner w-100\"},_vm._l((_vm.historyItem.sendOut.logs),function(log,logIndex){return _c('tr',{key:logIndex},[_c('td',[_c('span',{staticClass:\"t-body-regular-small\",class:{ 'u-color-red': !log.success }},[_vm._v(\" \"+_vm._s(_vm.$t( (\"adminSubscriptionHistoryItem.subText.\" + (log.type) + \".\" + (log.success ? 'success' : 'failure')), [log.recipient] ))+\" \")])]),(!log.success && log.status)?_c('td',[_c('span',{staticClass:\"t-body-regular-small\",class:{ 'u-color-red': !log.success }},[_vm._v(\" \"+_vm._s(_vm.$t( (\"adminSubscriptionHistoryItem.status.\" + (_vm.historyItem.sendOut.qualityDataFrequency) + \".\" + (log.status)) ))+\" \")])]):_c('td',[_c('span',{staticClass:\"t-body-regular-small\"})]),_c('td',{staticClass:\"u-text-right\"},[_vm._v(_vm._s(_vm._f(\"dateWithTime\")(log.date)))])])}),0)])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport { SubscriptionHistoryItem } from '@/models/AdminSubscriptions/SubscriptionHistoryItem';\r\nimport { UserSubscriptionSendOutType } from '@/models/Subscriptions/UserSubscriptionSendOutType';\r\nimport { SubscriptionHistoryItemSendOutLog } from '@/models/AdminSubscriptions/SubscriptionHistoryItemSendOutLog';\r\nimport { SubscriptionLogType } from '@/models/Subscriptions/SubscriptionLogType';\r\nimport { SubscriptionType } from '@/models/Subscriptions/SubscriptionType';\r\n\r\n@Component\r\nexport default class AdminSubscriptionHistoryItem extends Vue {\r\n @Prop({ required: true }) private subscriptionType!: SubscriptionType;\r\n @Prop({ required: true }) private historyItem!: SubscriptionHistoryItem;\r\n @Prop({ required: true }) private disableActions!: boolean;\r\n\r\n private readonly SubscriptionType = SubscriptionType;\r\n\r\n private get isSendOut(): boolean {\r\n return this.historyItem.type === SubscriptionLogType.SendOut;\r\n }\r\n\r\n private get isSendOutFailure(): boolean {\r\n return (\r\n this.isSendOut &&\r\n !this.historyItem.sendOut?.logs.some(\r\n (log) =>\r\n (log.type === UserSubscriptionSendOutType.Original ||\r\n log.type === UserSubscriptionSendOutType.ReSend) &&\r\n log.success\r\n )\r\n );\r\n }\r\n\r\n private get isSendOutMarkedAsHandled(): boolean {\r\n return (\r\n this.isSendOut &&\r\n this.historyItem.sendOut !== undefined &&\r\n this.historyItem.sendOut?.isHandled &&\r\n !this.historyItem.sendOut?.logs.some(\r\n (log) =>\r\n (log.type === UserSubscriptionSendOutType.Original ||\r\n log.type === UserSubscriptionSendOutType.ReSend) &&\r\n log.success\r\n )\r\n );\r\n }\r\n\r\n private get mainSendOutLog(): SubscriptionHistoryItemSendOutLog | null {\r\n if (!this.isSendOut) {\r\n return null;\r\n }\r\n\r\n const logs =\r\n this.historyItem.sendOut?.logs.filter(\r\n (log) =>\r\n log.type === UserSubscriptionSendOutType.Original ||\r\n log.type === UserSubscriptionSendOutType.ReSend\r\n ) ?? [];\r\n\r\n if (logs.length === 0) {\r\n return null;\r\n }\r\n\r\n return logs[logs.length - 1];\r\n }\r\n\r\n private get userFullName(): string {\r\n return (\r\n this.historyItem.userFullName ??\r\n this.$t('adminSubscriptionHistoryItem.defaultUserName').toString()\r\n );\r\n }\r\n\r\n private onSendCopyClick(): void {\r\n if (this.disableActions) {\r\n return;\r\n }\r\n this.$emit('sendCopyOfSendOut', this.historyItem);\r\n }\r\n\r\n private onReSendClick(): void {\r\n if (this.disableActions) {\r\n return;\r\n }\r\n this.$emit('reSendSendOut', this.historyItem);\r\n }\r\n\r\n private onToggleHandledClick(): void {\r\n if (this.disableActions) {\r\n return;\r\n }\r\n this.$emit('toggleSendOutHandledStatus', this.historyItem);\r\n }\r\n}\r\n","export enum SubscriptionHistorySortBy {\r\n Date = 'Date',\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionHistoryItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionHistoryItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminSubscriptionHistoryItem.vue?vue&type=template&id=41b62643&scoped=true&\"\nimport script from \"./AdminSubscriptionHistoryItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminSubscriptionHistoryItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdminSubscriptionHistoryItem.vue?vue&type=style&index=0&id=41b62643&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 \"41b62643\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport Modal from '@/components/general/Modal.vue';\r\nimport ConfirmModal from '@/components/general/ConfirmModal.vue';\r\nimport { SubscriptionDetails } from '@/models/AdminSubscriptions/SubscriptionDetails';\r\nimport {\r\n adminSubscriptionsHistoryModule,\r\n SubscriptionsHistorySearch,\r\n} from '@/store/modules/adminSubscriptionsHistory';\r\nimport { SubscriptionHistoryItem } from '@/models/AdminSubscriptions/SubscriptionHistoryItem';\r\nimport AdminSubscriptionHistoryItem from './AdminSubscriptionHistoryItem.vue';\r\nimport { SubscriptionHistoryItemSendOut } from '@/models/AdminSubscriptions/SubscriptionHistoryItemSendOut';\r\nimport { SubscriptionHistorySortBy } from '@/models/AdminSubscriptions/SubscriptionHistorySortBy';\r\nimport Pagination from './general/Pagination.vue';\r\nimport { UserProfile } from '@/models/UserProfile/UserProfile';\r\nimport { userProfileModule } from '@/store/modules/userProfile';\r\n\r\n@Component({\r\n components: {\r\n Modal,\r\n ConfirmModal,\r\n Pagination,\r\n AdminSubscriptionHistoryItem,\r\n },\r\n})\r\nexport default class AdminSubscriptionHistoryModal extends Vue {\r\n @Prop({ required: true }) private subscriptionDetails!: SubscriptionDetails;\r\n\r\n private readonly defaultSortBy: SubscriptionHistorySortBy =\r\n SubscriptionHistorySortBy.Date;\r\n private readonly pageSize: number = 20;\r\n\r\n private loading: boolean = false;\r\n private errorLoading: boolean = false;\r\n\r\n private sortBy: SubscriptionHistorySortBy = this.defaultSortBy;\r\n private sortAsc: boolean = false;\r\n private pageIndex: number = 0;\r\n\r\n private reSendingSendOut: SubscriptionHistoryItemSendOut | null = null;\r\n private isReSendingSendOut: boolean = false;\r\n private errorReSendingSendOut: boolean = false;\r\n\r\n private settingSendOutHandledStatus: SubscriptionHistoryItemSendOut | null =\r\n null;\r\n private isSettingSendOutHandledStatus: boolean = false;\r\n private errorSettingSendOutHandledStatus: boolean = false;\r\n\r\n private sendingCopyOfSendOut: SubscriptionHistoryItemSendOut | null = null;\r\n private sendingCopyOfSendOutTo: string = '';\r\n private hasSubmittedSendingCopyOfSendOut: boolean = false;\r\n private isSendingCopyOfSendOut: boolean = false;\r\n private errorSendingCopyOfSendOut: boolean = false;\r\n\r\n private subscriptionHistoryChanged: boolean = false;\r\n\r\n private get subscriptionHistory(): SubscriptionsHistorySearch | null {\r\n return adminSubscriptionsHistoryModule.item(\r\n this.subscriptionDetails.subscriptionInfo.id,\r\n this.sortBy,\r\n this.sortAsc,\r\n this.pageIndex,\r\n this.pageSize\r\n );\r\n }\r\n\r\n private get pageCount(): number {\r\n return this.subscriptionHistory?.results.pageCount ?? 0;\r\n }\r\n\r\n private get subscriptionHistoryItems(): SubscriptionHistoryItem[] {\r\n return this.subscriptionHistory?.results.items ?? [];\r\n }\r\n\r\n private get userProfile(): UserProfile | null {\r\n return userProfileModule.data?.userProfile ?? null;\r\n }\r\n\r\n public show(): void {\r\n this.sortBy = SubscriptionHistorySortBy.Date;\r\n this.sortAsc = false;\r\n this.pageIndex = 0;\r\n\r\n if (this.subscriptionHistory === null) {\r\n this.loadData();\r\n }\r\n\r\n this.reSendingSendOut = null;\r\n this.sendingCopyOfSendOut = null;\r\n this.settingSendOutHandledStatus = null;\r\n\r\n const modal = this.$refs.modal as Modal;\r\n\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n modal.showModal();\r\n }\r\n\r\n private onClose(): void {\r\n const modal = this.$refs.modal as Modal;\r\n\r\n if (!modal) {\r\n return;\r\n }\r\n\r\n if (this.subscriptionHistoryChanged) {\r\n this.$emit('subscriptionHistoryChanged');\r\n }\r\n\r\n modal.hideModal();\r\n }\r\n\r\n private onReSendSendOut(historyItem: SubscriptionHistoryItem): void {\r\n if (\r\n historyItem.sendOut === undefined ||\r\n this.isReSendingSendOut ||\r\n this.isSendingCopyOfSendOut ||\r\n this.isSettingSendOutHandledStatus\r\n ) {\r\n return;\r\n }\r\n\r\n this.sendingCopyOfSendOut = null;\r\n this.settingSendOutHandledStatus = null;\r\n this.errorReSendingSendOut = false;\r\n this.reSendingSendOut = historyItem.sendOut;\r\n\r\n this.$nextTick(() => {\r\n (this.$refs.reSendingSendOutModal as ConfirmModal).show();\r\n });\r\n }\r\n\r\n private onToggleSendOutHandledStatus(\r\n historyItem: SubscriptionHistoryItem\r\n ): void {\r\n if (\r\n historyItem.sendOut === undefined ||\r\n this.isReSendingSendOut ||\r\n this.isSendingCopyOfSendOut ||\r\n this.isSettingSendOutHandledStatus\r\n ) {\r\n return;\r\n }\r\n\r\n this.reSendingSendOut = null;\r\n this.sendingCopyOfSendOut = null;\r\n this.errorSettingSendOutHandledStatus = false;\r\n this.settingSendOutHandledStatus = historyItem.sendOut;\r\n\r\n this.$nextTick(() => {\r\n (this.$refs.sendOutHandledStatusModal as ConfirmModal).show();\r\n });\r\n }\r\n\r\n private onSendCopyOfSendOut(historyItem: SubscriptionHistoryItem): void {\r\n if (\r\n historyItem.sendOut === undefined ||\r\n this.isReSendingSendOut ||\r\n this.isSendingCopyOfSendOut ||\r\n this.isSettingSendOutHandledStatus\r\n ) {\r\n return;\r\n }\r\n\r\n this.reSendingSendOut = null;\r\n this.settingSendOutHandledStatus = null;\r\n this.errorSendingCopyOfSendOut = false;\r\n this.hasSubmittedSendingCopyOfSendOut = false;\r\n this.sendingCopyOfSendOutTo = this.userProfile?.email ?? '';\r\n this.sendingCopyOfSendOut = historyItem.sendOut;\r\n\r\n this.$nextTick(() => {\r\n (this.$refs.sendingCopyOfSendOutModal as ConfirmModal).show();\r\n });\r\n }\r\n\r\n private onCloseReSendingSendOutModal(): void {\r\n this.reSendingSendOut = null;\r\n }\r\n\r\n private onCloseSendingCopyOfSendOutModal(): void {\r\n this.sendingCopyOfSendOut = null;\r\n }\r\n\r\n private onCloseSettingSendOutHandledStatusModal(): void {\r\n this.settingSendOutHandledStatus = null;\r\n }\r\n\r\n private onConfirmReSendSendOut(): void {\r\n if (\r\n this.reSendingSendOut === null ||\r\n this.isReSendingSendOut ||\r\n this.isSendingCopyOfSendOut ||\r\n this.isSettingSendOutHandledStatus\r\n ) {\r\n return;\r\n }\r\n\r\n this.isReSendingSendOut = true;\r\n this.errorReSendingSendOut = false;\r\n\r\n adminSubscriptionsHistoryModule\r\n .dispatchReSendQualityDataSubscriptionSendOut({\r\n userSubscriptionId: this.subscriptionDetails.subscriptionInfo.id,\r\n userSubscriptionSendOutId:\r\n this.reSendingSendOut.userSubscriptionSendOutId,\r\n userAzureAdId: this.subscriptionDetails.subscriber.userAzureAdId,\r\n subscriptionType: this.subscriptionDetails.type,\r\n })\r\n .then(() => {\r\n (this.$refs.reSendingSendOutModal as ConfirmModal).hide();\r\n this.loadData();\r\n })\r\n .catch(() => {\r\n this.errorReSendingSendOut = true;\r\n })\r\n .finally(() => {\r\n this.subscriptionHistoryChanged = true;\r\n this.isReSendingSendOut = false;\r\n });\r\n }\r\n\r\n private onConfirmSettingSendOutHandledStatus(): void {\r\n if (\r\n this.settingSendOutHandledStatus === null ||\r\n this.isReSendingSendOut ||\r\n this.isSendingCopyOfSendOut ||\r\n this.isSettingSendOutHandledStatus\r\n ) {\r\n return;\r\n }\r\n\r\n this.isSettingSendOutHandledStatus = true;\r\n this.errorSettingSendOutHandledStatus = false;\r\n\r\n adminSubscriptionsHistoryModule\r\n .dispatchSetQualityDataSubscriptionSendOutHandledStatus({\r\n userSubscriptionId: this.subscriptionDetails.subscriptionInfo.id,\r\n userSubscriptionSendOutId:\r\n this.settingSendOutHandledStatus!.userSubscriptionSendOutId,\r\n userAzureAdId: this.subscriptionDetails.subscriber.userAzureAdId,\r\n subscriptionType: this.subscriptionDetails.type,\r\n isHandled: !this.settingSendOutHandledStatus!.isHandled,\r\n })\r\n .then(() => {\r\n (this.$refs.sendOutHandledStatusModal as ConfirmModal).hide();\r\n this.loadData();\r\n })\r\n .catch(() => {\r\n this.errorSettingSendOutHandledStatus = true;\r\n })\r\n .finally(() => {\r\n this.subscriptionHistoryChanged = true;\r\n this.isSettingSendOutHandledStatus = false;\r\n });\r\n }\r\n\r\n private onConfirmSendCopyOfSendOut(): void {\r\n this.hasSubmittedSendingCopyOfSendOut = true;\r\n }\r\n\r\n private onSubmitSendCopyOfSendOut(): void {\r\n if (\r\n this.sendingCopyOfSendOut === null ||\r\n this.isReSendingSendOut ||\r\n this.isSendingCopyOfSendOut\r\n ) {\r\n return;\r\n }\r\n\r\n this.isSendingCopyOfSendOut = true;\r\n this.errorSendingCopyOfSendOut = false;\r\n\r\n adminSubscriptionsHistoryModule\r\n .dispatchSendCopyOfQualityDataSubscriptionSendOut({\r\n userSubscriptionId: this.subscriptionDetails.subscriptionInfo.id,\r\n userSubscriptionSendOutId:\r\n this.sendingCopyOfSendOut.userSubscriptionSendOutId,\r\n userAzureAdId: this.subscriptionDetails.subscriber.userAzureAdId,\r\n subscriptionType: this.subscriptionDetails.type,\r\n recipient: this.sendingCopyOfSendOutTo,\r\n })\r\n .then(() => {\r\n (this.$refs.sendingCopyOfSendOutModal as ConfirmModal).hide();\r\n this.loadData();\r\n })\r\n .catch(() => {\r\n this.errorSendingCopyOfSendOut = true;\r\n })\r\n .finally(() => {\r\n this.subscriptionHistoryChanged = true;\r\n this.isSendingCopyOfSendOut = false;\r\n });\r\n }\r\n\r\n private onPageIndexChanged(pageIndex: number): void {\r\n this.pageIndex = pageIndex;\r\n\r\n this.loadData();\r\n }\r\n\r\n private loadData() {\r\n this.errorLoading = false;\r\n this.loading = true;\r\n\r\n adminSubscriptionsHistoryModule\r\n .dispatchLoad({\r\n userSubscriptionId: this.subscriptionDetails.subscriptionInfo.id,\r\n userAzureAdId: this.subscriptionDetails.subscriber.userAzureAdId,\r\n sortBy: this.sortBy,\r\n sortAsc: this.sortAsc,\r\n pageIndex: this.pageIndex,\r\n pageSize: this.pageSize,\r\n })\r\n .catch(() => {\r\n this.errorLoading = true;\r\n })\r\n .finally(() => {\r\n this.loading = false;\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionHistoryModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionHistoryModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminSubscriptionHistoryModal.vue?vue&type=template&id=2649f6c2&\"\nimport script from \"./AdminSubscriptionHistoryModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminSubscriptionHistoryModal.vue?vue&type=script&lang=ts&\"\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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from 'vue-property-decorator';\r\nimport AdminUserEditorModal from '@/components/AdminUserEditorModal.vue';\r\nimport Table, {\r\n CustomTableSorting,\r\n SortableTableColumn,\r\n} from '@/components/general/Table.vue';\r\nimport { TableColumn, TableRow } from './general/Table.vue';\r\nimport { SubscriptionDetails } from '@/models/AdminSubscriptions/SubscriptionDetails';\r\nimport { dateFilter } from '@/filters/date';\r\nimport { dateWithTimeFilter } from '@/filters/dateWithTime';\r\nimport { SubscriptionsSortBy } from '@/models/AdminSubscriptions/SubscriptionsSortBy';\r\nimport SubscriptionActiveSwitch from './SubscriptionActiveSwitch.vue';\r\nimport AdminSubscriptionHistoryModal from './AdminSubscriptionHistoryModal.vue';\r\nimport { editableSubscriptionTypes } from './SubscriptionEditorModal.vue';\r\nimport { SubscriptionType } from '@/models/Subscriptions/SubscriptionType';\r\n\r\ninterface AdminSubscriptionTableRow extends TableRow {\r\n subscription: SubscriptionDetails;\r\n isEditable: boolean;\r\n}\r\n\r\n@Component({\r\n components: {\r\n AdminUserEditorModal,\r\n Table,\r\n SubscriptionActiveSwitch,\r\n AdminSubscriptionHistoryModal,\r\n },\r\n})\r\nexport default class AdminSubscriptionList extends Vue {\r\n @Prop({ required: true })\r\n public subscriptions!: SubscriptionDetails[];\r\n @Prop({ required: true })\r\n private sortBy!: SubscriptionsSortBy;\r\n @Prop({ required: true })\r\n private sortAsc!: boolean;\r\n\r\n private readonly dateFilter = dateFilter;\r\n private readonly dateWithTimeFilter = dateWithTimeFilter;\r\n private readonly notApplicableText = 'n/a';\r\n\r\n private subscriptionDetailsForHistory: SubscriptionDetails | null = null;\r\n\r\n private get customSorting(): CustomTableSorting {\r\n return {\r\n sortBy: this.sortBy,\r\n sortAsc: this.sortAsc,\r\n };\r\n }\r\n\r\n private get columns(): TableColumn[] {\r\n return [\r\n {\r\n text: this.$t('adminSubscriptionList.created').toString(),\r\n property: SubscriptionsSortBy.Created,\r\n isSortable: true,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.userFullName').toString(),\r\n property: SubscriptionsSortBy.UserFullName,\r\n isSortable: true,\r\n fixedOnMobile: true,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.type').toString(),\r\n property: SubscriptionsSortBy.Type,\r\n isSortable: true,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.customers').toString(),\r\n property: 'customers',\r\n isSortable: false,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.products').toString(),\r\n property: 'products',\r\n isSortable: false,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.name').toString(),\r\n property: SubscriptionsSortBy.Name,\r\n isSortable: true,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.active').toString(),\r\n property: 'active',\r\n isSortable: false,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.lastSent').toString(),\r\n property: SubscriptionsSortBy.LastSent,\r\n isSortable: true,\r\n },\r\n {\r\n text: this.$t('adminSubscriptionList.status').toString(),\r\n property: SubscriptionsSortBy.Status,\r\n isSortable: true,\r\n },\r\n {\r\n text: '',\r\n property: 'links',\r\n },\r\n ];\r\n }\r\n\r\n private get rows(): AdminSubscriptionTableRow[] {\r\n return this.subscriptions.map((subscription) => {\r\n const properties: { [key: string]: string | number } = {\r\n created: dateFilter(subscription.subscriptionInfo.createdDate),\r\n userFullName: subscription.subscriber.userFullName,\r\n name:\r\n subscription.type === SubscriptionType.QualityData\r\n ? subscription.subscriptionInfo.name ?? ''\r\n : this.notApplicableText,\r\n customers:\r\n subscription.type === SubscriptionType.QualityData\r\n ? this.$t(\r\n `adminSubscriptionList.customersText.${\r\n subscription.subscriptionInfo.enableForAllMyCustomers\r\n ? 'all'\r\n : 'notAll'\r\n }`,\r\n [subscription.customers.map((c) => c.name).join(', ')]\r\n ).toString()\r\n : this.notApplicableText,\r\n products:\r\n subscription.type === SubscriptionType.QualityData\r\n ? this.$t(\r\n `adminSubscriptionList.productsText.${\r\n subscription.subscriptionInfo.enableForAllMyProducts\r\n ? 'all'\r\n : 'notAll'\r\n }`,\r\n [[subscription.products.map((p) => p.displayName).join(', ')]]\r\n ).toString()\r\n : this.notApplicableText,\r\n type:\r\n subscription.type === SubscriptionType.QualityData\r\n ? this.$t(\r\n `adminSubscriptionList.typeText.${subscription.type}.${subscription.subscriptionInfo.qualityData?.frequency}`\r\n ).toString()\r\n : this.$t(\r\n `adminSubscriptionList.typeText.${subscription.type}`\r\n ).toString(),\r\n active: subscription.subscriptionInfo.active.toString(),\r\n status: subscription.failedSendOutsCount\r\n ? subscription.failedSendOutsCount.toString()\r\n : '',\r\n };\r\n\r\n const isEditable = editableSubscriptionTypes.some(\r\n (type) => type === subscription.type\r\n );\r\n\r\n return {\r\n properties,\r\n subscription,\r\n isClickable: true,\r\n isEditable,\r\n };\r\n });\r\n }\r\n\r\n private onSubscriptionHistoryChanged(): void {\r\n this.$emit('subscriptionHistoryChanged');\r\n }\r\n\r\n private onRowClick(row: AdminSubscriptionTableRow) {\r\n this.subscriptionDetailsForHistory = row.subscription;\r\n\r\n this.$nextTick(() => {\r\n (\r\n this.$refs\r\n .adminSubscriptionHistoryModal as AdminSubscriptionHistoryModal\r\n ).show();\r\n });\r\n }\r\n\r\n private onSort(column?: SortableTableColumn) {\r\n this.$emit('sort', column?.property, column?.isSorted_ByAsc);\r\n }\r\n\r\n private onEditClick(row: AdminSubscriptionTableRow) {\r\n this.$emit('edit', row.subscription);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminSubscriptionList.vue?vue&type=template&id=63353fdb&\"\nimport script from \"./AdminSubscriptionList.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminSubscriptionList.vue?vue&type=script&lang=ts&\"\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 () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{ref:\"modal\",attrs:{\"id\":\"adminSubscriptionEditorModal\",\"title\":_vm.$t(\n (\"adminSubscriptionEditorModal.title.\" + (_vm.createNotUpdate ? 'create' : 'update'))\n ),\"showFooter\":true,\"isLarge\":true,\"closeableByOutsideClickAndEscKey\":!_vm.canEdit},scopedSlots:_vm._u([{key:\"body\",fn:function(){return [_c('p',[_vm._v(\" \"+_vm._s(_vm.$t(\"subscriptionTypes.QualityData.description\"))+\" \")]),_c('div',{staticClass:\"mb-2\"},[_c('label',{staticClass:\"o-label u-bold\"},[_vm._v(_vm._s(_vm.$t('adminSubscriptionEditorModal.users.title'))+\" \")]),_c('div',[_c('UsersTreeSelect',{staticClass:\"subscription-users-tree-select tree-select--light-grey\",attrs:{\"value\":_vm.currentUserAxId,\"users\":_vm.users,\"placeholder\":_vm.$t('adminSubscriptionEditorModal.users.placeholder'),\"clearable\":true,\"multiple\":false,\"disabled\":_vm.isLoading || !_vm.canEdit || !_vm.createNotUpdate},on:{\"select\":_vm.onUsersFilterSelect}})],1)]),(_vm.isCustomersRelevant)?_c('div',{staticClass:\"mb-2\"},[_c('label',{staticClass:\"o-label u-bold\"},[_vm._v(_vm._s(_vm.$t('subscriptionEditorModal.customers.title'))+\" \")]),_c('div',[_c('CustomersTreeSelect',{staticClass:\"subscription-customers-tree-select tree-select--light-grey\",attrs:{\"value\":_vm.enableForSpecificCustomerIds,\"customers\":_vm.customers,\"placeholder\":_vm.$t('subscriptionEditorModal.customers.placeholder'),\"clearable\":true,\"multiple\":true,\"disabled\":_vm.isLoading || !_vm.canEdit},on:{\"select\":_vm.onCustomersFilterSelect}})],1)]):_vm._e(),(!_vm.isLoading && !_vm.errorLoading)?[_c('SubscriptionEditorQualityData',{ref:\"adminSubscriptionEditorQualityData\",attrs:{\"subscriptionInfoDetails\":_vm.details,\"enableForSpecificCustomerIds\":_vm.enableForSpecificCustomerIds,\"canEdit\":_vm.canEdit,\"adminModeForUserAzureAdId\":_vm.currentUserAzureAdId},on:{\"update\":_vm.onSubscriptionEditorQualityDataUpdate}})]:_vm._e()]},proxy:true},{key:\"footer\",fn:function(){return [(_vm.errorInvalid)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"subscriptionEditorModal-errorInvalid\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('subscriptionEditorModal.errorInvalid'))+\" \")]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"subscriptionEditorModal-errorInvalid\"},on:{\"click\":function($event){_vm.errorInvalid = false}}})]):_vm._e(),(_vm.errorLoading)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"subscriptionEditorModal-errorLoading\"}},[_c('span',{staticClass:\"c-alert__text\"},[_vm._v(_vm._s(_vm.$t('subscriptionEditorModal.errorLoading'))+\" \")]),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"subscriptionEditorModal-errorLoading\"},on:{\"click\":function($event){_vm.errorLoading = false}}})]):_vm._e(),(_vm.errorSaving)?_c('div',{staticClass:\"c-alert c-alert--red mb-3\",attrs:{\"data-element-id\":\"subscriptionEditorModal-errorSaving\"}},[_c('span',{staticClass:\"c-alert__text\"},[(_vm.createNotUpdate)?[_vm._v(_vm._s(_vm.$t('subscriptionEditorModal.errorCreating')))]:[_vm._v(_vm._s(_vm.$t('subscriptionEditorModal.errorUpdating')))]],2),_c('span',{staticClass:\"js-toggle-hidden c-alert__close\",attrs:{\"data-element-id\":\"subscriptionEditorModal-errorSaving\"},on:{\"click\":function($event){_vm.errorSaving = false}}})]):_vm._e(),(_vm.isLoading)?_c('div',{staticClass:\"d-flex align-items-center justify-content-center u-min-height-300\"},[_c('span',{staticClass:\"o-loader\"},[_vm._v(_vm._s(_vm.$t('subscriptionEditorModal.loadingData')))])]):_vm._e(),(_vm.canEdit)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLoading),expression:\"!isLoading\"}]},[_c('button',{staticClass:\"o-button o-button--lime-green mr-2\",attrs:{\"disabled\":!_vm.anyChanges ||\n _vm.saving ||\n _vm.errorLoading ||\n (_vm.isSubscriptionTypeQualityData && _vm.qualityDataInfo === null)},on:{\"click\":function($event){$event.preventDefault();return _vm.onSubmit.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t( (\"subscriptionEditorModal.okButton.\" + (_vm.createNotUpdate ? 'create' : 'update')) ))+\" \")]),_c('button',{staticClass:\"o-button o-button--white mr-2\",attrs:{\"disabled\":_vm.saving},on:{\"click\":_vm.onCancelClick}},[_vm._v(\" \"+_vm._s(_vm.$t('subscriptionEditorModal.cancel'))+\" \")])]):_vm._e()]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('TreeSelect',{attrs:{\"value\":_vm.value,\"options\":_vm.options,\"placeholder\":_vm.placeholder,\"clearable\":_vm.clearable,\"multiple\":_vm.multiple,\"disabled\":_vm.disabled,\"required\":_vm.required},on:{\"input\":_vm.onInput,\"select\":_vm.onSelect}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport TreeSelect, {\r\n TreeSelectNode,\r\n} from '@/components/general/TreeSelect.vue';\r\nimport { User } from '@/models/AdminUsers/User';\r\n\r\n@Component({\r\n components: {\r\n TreeSelect,\r\n },\r\n})\r\nexport default class UsersTreeSelect extends Vue {\r\n @Prop({ required: true }) private value!: number[] | null;\r\n @Prop({ required: true }) private users!: User[];\r\n @Prop({ required: true }) private placeholder!: string;\r\n @Prop({ required: false, default: () => false })\r\n private clearable!: boolean;\r\n @Prop({ required: false, default: () => false })\r\n private multiple!: boolean;\r\n @Prop({ required: false, default: () => false })\r\n private disabled!: boolean;\r\n @Prop({ required: false, default: () => false })\r\n private required!: boolean;\r\n\r\n private get options(): TreeSelectNode[] {\r\n return this.users.map((user) => ({\r\n id: user.axId,\r\n label: user.name,\r\n }));\r\n }\r\n\r\n private onInput(users: string[]) {\r\n this.$emit('input', users);\r\n }\r\n\r\n private onSelect(users: string[]) {\r\n this.$emit('select', users);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersTreeSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UsersTreeSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UsersTreeSelect.vue?vue&type=template&id=bef9634e&\"\nimport script from \"./UsersTreeSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./UsersTreeSelect.vue?vue&type=script&lang=ts&\"\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","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport Modal from '@/components/general/Modal.vue';\r\nimport CustomersTreeSelect from '@/components/CustomersTreeSelect.vue';\r\nimport UsersTreeSelect from '@/components/UsersTreeSelect.vue';\r\nimport { Customer } from '@/models/Customer';\r\nimport { User } from '@/models/AdminUsers/User';\r\nimport { userProfileModule } from '@/store/modules/userProfile';\r\nimport TreeSelect from './general/TreeSelect.vue';\r\nimport { Consoler } from '@/utils/Consoler';\r\nimport SelectMultipleChips from './general/SelectMultipleChips.vue';\r\nimport { AdminCreateOrUpdateSubscriptionForUser } from '@/models/AdminSubscriptions/AdminCreateOrUpdateSubscriptionForUser';\r\nimport { SubscriptionType } from '@/models/Subscriptions/SubscriptionType';\r\nimport { SubscriptionInfoDetails } from '@/models/Subscriptions/SubscriptionInfoDetails';\r\nimport { adminSubscriptionCustomersModule } from '@/store/modules/adminSubscriptionCustomers';\r\nimport { adminUsersModule } from '@/store/modules/adminUsers';\r\nimport { adminUsersSpecificModule } from '@/store/modules/adminUsersSpecific';\r\nimport SelectBox from './general/SelectBox.vue';\r\nimport { Permissions } from '@/utils/Permissions';\r\nimport { PermissionType } from '@/models/UserProfile/PermissionType';\r\nimport SubscriptionEditorQualityData, {\r\n SubscriptionEditorQualityDataInfo,\r\n} from './SubscriptionEditorQualityData.vue';\r\nimport { UsersSortBy } from '@/models/AdminUsers/UsersSortBy';\r\nimport { adminSubscriptionsModule } from '@/store/modules/adminSubscriptions';\r\n\r\nexport const editableSubscriptionTypes: SubscriptionType[] = [\r\n // The other subscription types can only be created/deleted\r\n SubscriptionType.QualityData,\r\n];\r\n\r\n@Component({\r\n components: {\r\n Modal,\r\n CustomersTreeSelect,\r\n TreeSelect,\r\n UsersTreeSelect,\r\n SelectMultipleChips,\r\n SelectBox,\r\n SubscriptionEditorQualityData,\r\n },\r\n})\r\nexport default class AdminSubscriptionEditorModal extends Vue {\r\n @Prop({ required: true }) private createNotUpdate!: boolean;\r\n @Prop({ required: true })\r\n private details!: SubscriptionInfoDetails | null;\r\n\r\n private subscriptionType: SubscriptionType = SubscriptionType.QualityData;\r\n private adminModeForUser: User | null = null;\r\n\r\n private readonly CustomersRelevantForSubscriptionTypes: SubscriptionType[] = [\r\n SubscriptionType.QualityData,\r\n ];\r\n\r\n private enableForAllMyCustomers: boolean = false;\r\n private enableForSpecificCustomerIds: number[] = [];\r\n private qualityDataInfo: SubscriptionEditorQualityDataInfo | null = null;\r\n\r\n private isLoading: boolean = false;\r\n private saving: boolean = false;\r\n private errorInvalid: boolean = false;\r\n private errorLoading: boolean = false;\r\n private errorSaving: boolean = false;\r\n\r\n private async setEnableForSpecificCustomerIds(ids: number[]): Promise {\r\n this.enableForSpecificCustomerIds = ids;\r\n return;\r\n }\r\n\r\n private get isCustomersRelevant(): boolean {\r\n return this.CustomersRelevantForSubscriptionTypes.some(\r\n (type) => type === this.subscriptionType\r\n );\r\n }\r\n\r\n private subscriptionEditorQualityData():\r\n | SubscriptionEditorQualityData\r\n | undefined {\r\n return this.$refs\r\n .adminSubscriptionEditorQualityData as SubscriptionEditorQualityData;\r\n }\r\n\r\n private get canEdit(): boolean {\r\n return (\r\n this.adminModeForUser !== null ||\r\n Permissions.hasPermission(\r\n PermissionType.IsAllowedToEditAdminSubscriptions\r\n )\r\n );\r\n }\r\n\r\n private get currentUserAxId(): string | null {\r\n return this.adminModeForUser !== null ? this.adminModeForUser.axId : null;\r\n }\r\n\r\n private get currentUserAzureAdId(): string | null {\r\n return this.adminModeForUser !== null\r\n ? this.adminModeForUser.azureAdId\r\n : null;\r\n }\r\n\r\n private get isSubscriptionTypeQualityData(): boolean {\r\n return this.subscriptionType === SubscriptionType.QualityData;\r\n }\r\n\r\n private get valid(): boolean {\r\n if (\r\n this.isCustomersRelevant &&\r\n !this.enableForAllMyCustomers &&\r\n (this.enableForSpecificCustomerIds === undefined ||\r\n this.enableForSpecificCustomerIds.length === 0)\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.isSubscriptionTypeQualityData &&\r\n (this.qualityDataInfo === null || !this.qualityDataInfo.valid)\r\n ) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private get anyChanges(): boolean {\r\n if (this.createNotUpdate) {\r\n return true;\r\n } else if (this.details === null) {\r\n return false;\r\n }\r\n\r\n if (\r\n this.isCustomersRelevant &&\r\n (this.enableForAllMyCustomers !==\r\n (this.details.enableForAllMyCustomers ?? false) ||\r\n this.enableForSpecificCustomerIds.length !==\r\n this.details.enableForSpecificCustomerIds.length ||\r\n this.enableForSpecificCustomerIds.some(\r\n (newId) =>\r\n !this.details?.enableForSpecificCustomerIds.some(\r\n (oldId) => newId === oldId\r\n )\r\n ))\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n this.isSubscriptionTypeQualityData &&\r\n this.qualityDataInfo !== null &&\r\n this.qualityDataInfo.anyChanges\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private get customers(): Customer[] {\r\n if (this.adminModeForUser === null) {\r\n return [];\r\n }\r\n return this.adminModeForUser.customers;\r\n }\r\n\r\n private async setSelectedUser(userAxId: string): Promise {\r\n this.adminModeForUser = adminUsersSpecificModule.item(userAxId) ?? null;\r\n }\r\n\r\n private async getUserByAzureAdId(\r\n userAzureAdId: string\r\n ): Promise {\r\n return (\r\n adminUsersModule.search?.results?.items?.find(\r\n (u) => u.azureAdId === userAzureAdId\r\n ) ?? null\r\n );\r\n }\r\n\r\n private get users(): User[] {\r\n return adminUsersModule.search?.results?.items ?? [];\r\n }\r\n\r\n private get selectedCustomer(): Customer | null {\r\n return userProfileModule.selectedCustomer;\r\n }\r\n\r\n public async show(): Promise {\r\n this.errorInvalid = false;\r\n this.errorLoading = false;\r\n this.errorSaving = false;\r\n\r\n (this.$refs.modal as Modal).showModal();\r\n\r\n this.loadUsersForAdmin()\r\n .then(async () => {\r\n if (this.createNotUpdate) {\r\n // To be set by the admin user in WebUI\r\n this.adminModeForUser = null;\r\n } else if (this.createNotUpdate === false && this.details !== null) {\r\n this.adminModeForUser = await this.getUserByAzureAdId(\r\n this.details?.userAzureAdId\r\n );\r\n this.enableForSpecificCustomerIds =\r\n this.details?.enableForSpecificCustomerIds;\r\n }\r\n })\r\n .then(async () => {\r\n await this.initialize();\r\n });\r\n }\r\n\r\n private hideModal(): void {\r\n (this.$refs.modal as Modal).hideModal();\r\n }\r\n\r\n private async initialize(): Promise {\r\n if (this.isCustomersRelevant) {\r\n if (!this.createNotUpdate && this.details !== null) {\r\n this.enableForAllMyCustomers = this.details.enableForAllMyCustomers;\r\n this.enableForSpecificCustomerIds = [\r\n ...this.details.enableForSpecificCustomerIds.filter((customerId) =>\r\n this.customers.some((c) => c.id === customerId)\r\n ),\r\n ];\r\n } else {\r\n this.enableForAllMyCustomers = true;\r\n if (this.selectedCustomer) {\r\n this.enableForSpecificCustomerIds = [this.selectedCustomer.id];\r\n } else {\r\n this.enableForSpecificCustomerIds = [];\r\n }\r\n }\r\n } else {\r\n this.enableForAllMyCustomers = false;\r\n this.enableForSpecificCustomerIds = [];\r\n }\r\n\r\n if (this.isSubscriptionTypeQualityData) {\r\n await this.subscriptionEditorQualityData()?.initialize(\r\n this.createNotUpdate\r\n );\r\n }\r\n }\r\n\r\n private loadCustomersForAdminModeUser(): Promise {\r\n if (this.adminModeForUser === null) {\r\n return Promise.reject();\r\n }\r\n\r\n this.isLoading = true;\r\n this.errorLoading = false;\r\n\r\n return adminSubscriptionCustomersModule\r\n .dispatchLoad(this.adminModeForUser.azureAdId)\r\n .then(() => {\r\n // Do nothing\r\n })\r\n .catch(() => {\r\n this.errorLoading = true;\r\n })\r\n .finally(() => {\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n private loadUsersForAdmin(): Promise {\r\n this.isLoading = true;\r\n this.errorLoading = false;\r\n\r\n return adminUsersModule\r\n .dispatchLoad({\r\n sortBy: UsersSortBy.Name,\r\n sortAsc: true,\r\n pageIndex: 0,\r\n term: undefined,\r\n customerIds: [],\r\n permission: PermissionType.IsAllowedToViewQualityData,\r\n noPermissions: false,\r\n businessContact: undefined,\r\n all: true,\r\n })\r\n .then(() => {\r\n // Do nothing\r\n })\r\n .catch(() => {\r\n this.errorLoading = true;\r\n })\r\n .finally(() => {\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n private onSubmit() {\r\n if (!this.valid) {\r\n this.errorInvalid = true;\r\n return;\r\n } else {\r\n this.errorInvalid = false;\r\n }\r\n\r\n const model: AdminCreateOrUpdateSubscriptionForUser = {\r\n type: this.subscriptionType,\r\n name: this.qualityDataInfo?.listName,\r\n enableForAllMyCustomers: this.enableForAllMyCustomers,\r\n enableForSpecificCustomerIds: !this.enableForAllMyCustomers\r\n ? this.enableForSpecificCustomerIds\r\n : [],\r\n enableForAllMyProducts: this.qualityDataInfo?.enableForAllMyProducts,\r\n enableForAllMyPaperParameters:\r\n this.qualityDataInfo?.enableForAllMyPaperParameters,\r\n enableForAllMyTextileParameters:\r\n this.qualityDataInfo?.enableForAllMyTextileParameters,\r\n enableForSpecificProductNames:\r\n this.qualityDataInfo?.enableForSpecificProductNames,\r\n enableForSpecificPaperParameterIds:\r\n this.qualityDataInfo?.enableForSpecificPaperParameterIds,\r\n enableForSpecificTextileParameterIds:\r\n this.qualityDataInfo?.enableForSpecificTextileParameterIds,\r\n qualityData:\r\n this.qualityDataInfo !== null\r\n ? {\r\n frequency: this.qualityDataInfo.frequency,\r\n pfiRevolutions: this.qualityDataInfo.pfiRevolutions,\r\n }\r\n : undefined,\r\n createForUserAzureId: this.currentUserAzureAdId!,\r\n };\r\n\r\n let dispatchMethod: Promise | undefined;\r\n if (this.createNotUpdate) {\r\n dispatchMethod = adminSubscriptionsModule.dispatchCreate({\r\n model,\r\n });\r\n } else if (!this.createNotUpdate && this.details !== null) {\r\n dispatchMethod = adminSubscriptionsModule.dispatchUpdate({\r\n id: this.details.id,\r\n userAzureAdId: this.details.userAzureAdId,\r\n model: model,\r\n });\r\n }\r\n\r\n if (dispatchMethod === undefined) {\r\n return;\r\n }\r\n\r\n Consoler.debugLog(\r\n `${\r\n this.createNotUpdate ? 'Create' : 'Update'\r\n } subscription model to send`,\r\n model\r\n );\r\n\r\n this.saving = true;\r\n this.errorSaving = false;\r\n\r\n dispatchMethod\r\n .then(() => {\r\n this.$emit(this.createNotUpdate ? 'created' : 'updated');\r\n (this.$refs.modal as Modal).hideModal();\r\n })\r\n .catch(() => {\r\n this.errorSaving = true;\r\n })\r\n .finally(() => {\r\n this.saving = false;\r\n });\r\n }\r\n\r\n private onCustomersFilterSelect(customers: number[]) {\r\n if (\r\n !this.enableForAllMyCustomers &&\r\n this.enableForSpecificCustomerIds.length === customers.length &&\r\n customers.every((c) =>\r\n this.enableForSpecificCustomerIds.some((customerId) => c === customerId)\r\n )\r\n ) {\r\n // Same customers, do nothing\r\n return;\r\n }\r\n\r\n this.enableForAllMyCustomers = customers.length === 0;\r\n\r\n this.setEnableForSpecificCustomerIds(customers).then(async () => {\r\n this.subscriptionEditorQualityData()?.customersChanged();\r\n });\r\n }\r\n\r\n private async clearSelectedCustomerIds(): Promise {\r\n this.enableForSpecificCustomerIds = [];\r\n }\r\n\r\n private onUsersFilterSelect(users: string[]) {\r\n if (users !== null && users.length > 0) {\r\n this.setSelectedUser(users[0]).then(async () => {\r\n this.clearSelectedCustomerIds();\r\n this.subscriptionEditorQualityData()?.customersChanged();\r\n });\r\n }\r\n }\r\n\r\n private onSubscriptionEditorQualityDataUpdate(\r\n qualityDataInfo: SubscriptionEditorQualityDataInfo | null\r\n ): void {\r\n this.qualityDataInfo = qualityDataInfo;\r\n }\r\n\r\n private onCancelClick() {\r\n this.hideModal();\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionEditorModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionEditorModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminSubscriptionEditorModal.vue?vue&type=template&id=d15e148e&scoped=true&\"\nimport script from \"./AdminSubscriptionEditorModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminSubscriptionEditorModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdminSubscriptionEditorModal.vue?vue&type=style&index=0&id=d15e148e&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 \"d15e148e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch } from 'vue-property-decorator';\r\nimport { adminSubscriptionsModule } from '@/store/modules/adminSubscriptions';\r\nimport { adminSubscribersModule } from '@/store/modules/adminSubscribers';\r\nimport { Breadcrumb } from '@/models/Breadcrumb';\r\nimport Breadcrumbs from '@/components/general/Breadcrumbs.vue';\r\nimport {\r\n routeNameAdminRoot,\r\n routeNameAdminSubscriptions,\r\n} from '@/router/routes';\r\nimport Messages from '@/components/general/Messages.vue';\r\nimport DefaultLayout from '@/layouts/DefaultLayout.vue';\r\nimport telemetryService, {\r\n RouteTrackingInfo,\r\n} from '@/services/TelemetryService';\r\nimport { getRouteTrackingInfo } from '@/router/functions';\r\nimport { SubscriptionDetails } from '@/models/AdminSubscriptions/SubscriptionDetails';\r\nimport AdminSubscriptionList from '@/components/AdminSubscriptionList.vue';\r\nimport AdminSubscriptionEditorModal from '@/components/AdminSubscriptionEditorModal.vue';\r\nimport { Subscriber } from '@/models/AdminSubscriptions/Subscriber';\r\nimport TreeSelect, {\r\n TreeSelectNode,\r\n} from '@/components/general/TreeSelect.vue';\r\nimport { SubscriptionsSortBy } from '@/models/AdminSubscriptions/SubscriptionsSortBy';\r\nimport Pagination from '@/components/general/Pagination.vue';\r\nimport { userCustomersModule } from '@/store/modules/userCustomers';\r\nimport { CompanyChain } from '@/models/CompanyChain';\r\nimport CompanyChainCustomersTreeSelect from '@/components/CompanyChainCustomersTreeSelect.vue';\r\nimport { SubscriptionType } from '@/models/Subscriptions/SubscriptionType';\r\nimport { SubscriptionInfoDetails } from '@/models/Subscriptions/SubscriptionInfoDetails';\r\n\r\n@Component({\r\n components: {\r\n DefaultLayout,\r\n Messages,\r\n Breadcrumbs,\r\n AdminSubscriptionList,\r\n AdminSubscriptionEditorModal,\r\n TreeSelect,\r\n Pagination,\r\n CompanyChainCustomersTreeSelect,\r\n },\r\n})\r\nexport default class AdminSubscriptionsPage extends Vue {\r\n private readonly allFilterSubscriptionTypes: SubscriptionType[] = [\r\n SubscriptionType.Sustainability,\r\n SubscriptionType.QualityData,\r\n ];\r\n private readonly defaultPageSize: number = 10;\r\n private readonly defaultSortBy: SubscriptionsSortBy =\r\n SubscriptionsSortBy.Status;\r\n\r\n private routeTrackingInfo: RouteTrackingInfo = {};\r\n\r\n private sortBy: SubscriptionsSortBy = this.defaultSortBy;\r\n private sortAsc: boolean = false;\r\n private pageIndex: number = 0;\r\n private pageSize: number = this.defaultPageSize;\r\n private filterUserAzureAdIds: string[] = [];\r\n private filterSubscriptionTypes: SubscriptionType[] = [];\r\n private filterCustomerIds: number[] = [];\r\n\r\n private createOrUpdateSubscription: {\r\n createNotUpdate: boolean;\r\n details: SubscriptionInfoDetails | null;\r\n } | null = null;\r\n\r\n private loading: boolean = false;\r\n private errorLoading: boolean = false;\r\n\r\n private get subtitle(): string {\r\n if (this.loading) {\r\n return '';\r\n }\r\n\r\n const subscriptionsPluralization = this.$tc(\r\n 'pluralization.subscriptions',\r\n this.totalCount,\r\n {\r\n n: this.totalCount,\r\n }\r\n ).toString();\r\n return this.anyFilter\r\n ? this.$t('adminSubscriptionsPage.subtitle.withFilter', [\r\n subscriptionsPluralization,\r\n ]).toString()\r\n : this.$t('adminSubscriptionsPage.subtitle.noFilter', [\r\n subscriptionsPluralization,\r\n ]).toString();\r\n }\r\n\r\n private get subscriptions(): SubscriptionDetails[] {\r\n return adminSubscriptionsModule.search?.results?.items ?? [];\r\n }\r\n\r\n private get pageCount(): number {\r\n return adminSubscriptionsModule.search?.results?.pageCount ?? 0;\r\n }\r\n\r\n private get totalCount(): number {\r\n return adminSubscriptionsModule.search?.results?.totalCount ?? 0;\r\n }\r\n\r\n private get subscribers(): Subscriber[] {\r\n return adminSubscribersModule.data ?? [];\r\n }\r\n\r\n private get responsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.responsibles\r\n : [];\r\n }\r\n\r\n private get nonResponsibles(): CompanyChain[] {\r\n return userCustomersModule.userCustomers !== null\r\n ? userCustomersModule.userCustomers.nonResponsibles\r\n : [];\r\n }\r\n\r\n private get anyFilter(): boolean {\r\n return (\r\n this.filterUserAzureAdIds.length > 0 || this.filterCustomerIds.length > 0\r\n );\r\n }\r\n\r\n private get subscribersSelectOptions(): TreeSelectNode[] {\r\n return this.subscribers.map((subscriber) => ({\r\n id: subscriber.userAzureAdId,\r\n label: subscriber.userFullName,\r\n }));\r\n }\r\n\r\n private get subscriptionTypesSelectOptions(): TreeSelectNode[] {\r\n return this.allFilterSubscriptionTypes.map((subscriptionType) => ({\r\n id: subscriptionType,\r\n label: this.$t(`subscriptionTypes.${subscriptionType}.title`).toString(),\r\n }));\r\n }\r\n\r\n private get breadcrumbs(): Breadcrumb[] {\r\n const items: Breadcrumb[] = [\r\n {\r\n routeName: routeNameAdminRoot,\r\n name: this.$t('breadcrumbs.' + routeNameAdminRoot).toString(),\r\n },\r\n {\r\n routeName: routeNameAdminSubscriptions,\r\n name: this.$t('breadcrumbs.' + routeNameAdminSubscriptions).toString(),\r\n },\r\n ];\r\n\r\n return items;\r\n }\r\n\r\n @Watch('$route', { immediate: false, deep: true })\r\n private onRouteChange(): void {\r\n this.routeTrackingInfo = getRouteTrackingInfo(this.$route);\r\n this.loadData().finally(() => {\r\n telemetryService.stopTrackPage(this.routeTrackingInfo);\r\n });\r\n }\r\n\r\n private created(): void {\r\n this.routeTrackingInfo = getRouteTrackingInfo(this.$route);\r\n this.loadData().finally(() => {\r\n telemetryService.stopTrackPage(this.routeTrackingInfo);\r\n });\r\n }\r\n\r\n private loadData(force?: boolean): Promise {\r\n this.errorLoading = false;\r\n this.loading = true;\r\n\r\n return Promise.all([\r\n adminSubscriptionsModule.dispatchLoad({\r\n force,\r\n sortBy: this.sortBy,\r\n sortAsc: this.sortAsc,\r\n pageIndex: this.pageIndex,\r\n pageSize: this.pageSize,\r\n filterCustomerIds: this.filterCustomerIds,\r\n filterSubscriptionTypes: this.filterSubscriptionTypes,\r\n filterUserAzureAdIds: this.filterUserAzureAdIds,\r\n }),\r\n adminSubscribersModule.dispatchLoad({ force }),\r\n userCustomersModule.dispatchLoad(),\r\n ])\r\n .then(() => undefined)\r\n .catch(() => {\r\n this.errorLoading = true;\r\n })\r\n .finally(() => {\r\n this.loading = false;\r\n });\r\n }\r\n\r\n private onSubscriptionHistoryChanged(): void {\r\n this.loadData(true);\r\n }\r\n\r\n private onSort(property?: SubscriptionsSortBy, byAsc?: boolean) {\r\n if (property) {\r\n this.sortBy = property;\r\n this.sortAsc = byAsc ?? true;\r\n } else {\r\n this.sortBy = this.defaultSortBy;\r\n this.sortAsc = true;\r\n }\r\n\r\n this.loadData();\r\n }\r\n\r\n private onFilterUserAzureAdIdsChange(userAzureAdIds: string[]): void {\r\n this.filterUserAzureAdIds = userAzureAdIds;\r\n this.pageIndex = 0;\r\n\r\n this.loadData();\r\n }\r\n\r\n private onFilterSubscriptionTypesChange(\r\n subscriptionTypes: SubscriptionType[]\r\n ): void {\r\n this.filterSubscriptionTypes = subscriptionTypes;\r\n this.pageIndex = 0;\r\n\r\n this.loadData();\r\n }\r\n\r\n private onFilterCustomerIdsSelect(customerIds: number[]) {\r\n this.filterCustomerIds = customerIds;\r\n this.pageIndex = 0;\r\n\r\n this.loadData();\r\n }\r\n\r\n private onClearFilters(): void {\r\n this.filterUserAzureAdIds = [];\r\n this.filterCustomerIds = [];\r\n this.pageIndex = 0;\r\n\r\n this.loadData();\r\n }\r\n\r\n private onPageSizeChanged(pageSize: number): void {\r\n this.pageSize = pageSize;\r\n this.pageIndex = 0;\r\n\r\n this.loadData();\r\n }\r\n\r\n private onPageIndexChanged(pageIndex: number): void {\r\n this.pageIndex = pageIndex;\r\n\r\n this.loadData();\r\n }\r\n\r\n private onUpdated(): void {\r\n this.loadData(true).then(() => {\r\n if (this.pageIndex > 0 && this.pageIndex + 1 > this.pageCount) {\r\n this.pageIndex = this.pageCount - 1;\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n private onCreated(): void {\r\n this.loadData(true).then(() => {\r\n if (this.pageIndex > 0 && this.pageIndex + 1 > this.pageCount) {\r\n this.pageIndex = this.pageCount - 1;\r\n this.loadData();\r\n }\r\n });\r\n }\r\n\r\n private onCreateSubscription(): void {\r\n this.createOrUpdateSubscription = null;\r\n this.$nextTick(() => {\r\n this.createOrUpdateSubscription = {\r\n createNotUpdate: true,\r\n details: null,\r\n };\r\n this.$nextTick(() => {\r\n (\r\n this.$refs\r\n .adminSubscriptionEditorModal as AdminSubscriptionEditorModal\r\n ).show();\r\n });\r\n });\r\n }\r\n\r\n private onEditSubscription(subscription: SubscriptionDetails): void {\r\n // To force re-render of the SubscriptionEditorModal we first set this to null\r\n // (otherwise editor doesn't show second time correctly for some reason)\r\n\r\n this.$nextTick(() => {\r\n this.createOrUpdateSubscription = {\r\n createNotUpdate: false,\r\n details: subscription.subscriptionInfo,\r\n };\r\n this.$nextTick(() => {\r\n (\r\n this.$refs\r\n .adminSubscriptionEditorModal as AdminSubscriptionEditorModal\r\n ).show();\r\n });\r\n });\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionsPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminSubscriptionsPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdminSubscriptionsPage.vue?vue&type=template&id=7b42e22c&scoped=true&\"\nimport script from \"./AdminSubscriptionsPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdminSubscriptionsPage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AdminSubscriptionsPage.vue?vue&type=style&index=0&id=7b42e22c&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 \"7b42e22c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompanyChainCustomersTreeSelect.vue?vue&type=style&index=0&id=5bcb6a06&scoped=true&lang=scss&\""],"sourceRoot":""}