{"version":3,"sources":["webpack:///./src/mixins/shared/user/principalMixin.js","webpack:///./src/mixins/shared/base/component/baseComponentMixin.js","webpack:///./src/mixins/shared/base/app/appMixin.js","webpack:///./src/mixins/public/publicAccessMixin.js","webpack:///./src/mixins/shared/router/routerMixin.js","webpack:///./src/views/agenda/AgendaContent.vue","webpack:///./src/mixins/agenda/content/agendaContentMixin.js","webpack:///src/views/agenda/AgendaContent.vue","webpack:///./src/views/agenda/AgendaContent.vue?e76e","webpack:///./src/views/agenda/AgendaContent.vue?c45a","webpack:///./src/mixins/shared/navigatable/moduleItemNavigatable.js","webpack:///./src/mixins/shared/snackbarable/snackbarableMixin.js","webpack:///./src/mixins/shared/content/contentRecordMixin.js","webpack:///./src/mixins/shared/content/moduleContentRecordMixin.js","webpack:///./src/mixins/shared/content/moduleContentMixin.js","webpack:///./src/services/error/errorMessages.js"],"names":["mapGetters","createNamespacedHelpers","principalMixin","mixins","publicAccessMixin","computed","principal","findFeature","isAvailableApplicationModule","isAvailableProjectsModule","this","moduleNames","Projects","isAvailableMyInboxModule","Tasks","isAvailableAgendaModule","Agenda","methods","isUserStateOwner","record","isStateOwner","isAvailableFeature","name","status","featureStatus","supported","licenced","released","feature","used","total","baseComponentMixin","data","currentError","isLoading","componentName","$options","loadingText","hasError","isEmpty","fullMethodName","handleError","error","methodName","_error$toString","toString","console","clearError","undefined","onAlertVisibilityChanged","visible","appMixin","appModuleName","appModuleTitle","appModuleIcon","isPublicAccess","publicAccess","routerMixin","canNavigateToModuleItemByModuleItemId","moduleName","id","_this$$router$current","_id$toString","$router","currentRoute","params","canNavigateToChildRecordById","expandedId","_this$$router$current2","_this$$router$current3","render","_vm","_c","_self","attrs","visibleDataTable","on","onExpandedPreview","scopedSlots","_u","key","fn","breadcrumbs","canNavigateToModuleItem","createModuleItemContentRoute","proxy","visibleProjectsTab","directives","rawName","value","expression","visibleSubRecords","visibleFileVersions","visiblePreviewTab","visibleDocumentViewerPreview","recordId","previewRecordVersion","expandedPreview","_e","visibleDocumentPreview","snackbarColor","closeSnackbar","model","snackbarVisible","callback","$$v","_v","_s","computedSnackbarText","staticRenderFns","mapState","mapActions","agendaContentMixin","moduleContentRecordMixin","moduleItemNavigatable","props","type","Number","default","projects","selectedModuleItemId","selectedModuleItemName","isShortcut","_this$record2","_this$record3","log","warn","payload","parentId","setRecordShortcut","setRecord","_this$record","setProjects","e","storeSelectedModuleItemId","storeSelectedModuleExpandedId","panelDocuments","panelHistory","components","AgendaRecordDetails","AgendaDocuments","AgendaFileVersions","DocumentPreview","DocumentViewer","BreadcrumbsRecord","AgendaProjects","component","push","createModuleItemContentRouteLocation","snackbarableMixin","snackbarText","snackbarTimeout","snackbarVisibleCloseButton","snackbarTop","snackbarMultiLine","Snackbar","showSnackbarSuccess","text","top","showSnackbar","colorTheme","success","showSnackbarInfo","info","showSnackbarError","timeout","multiLine","showSnackbarWarning","warning","color","contentRecordMixin","allowedViewFileHistory","isAllowedOperation","recordOperation","AccessVersion","_this$record$recordTy","typeId","recordTypeId","recordType","RECORD","FILE","_this$record$recordTy2","canPreview","fullRecordName","moduleContentMixin","_this$record$id","recordVersion","_this$record$version","version","canPreviewInDocumentViewer","projectCount","_this$projects$length","_this$projects","length","_this$record$id2","BaseContentLayout","ExpansionPanelLayout","notImplementedMethod","setModuleItem","_ref","$route","createModuleExpandRecordShortcutContentRouteName","setCurrentModuleItem","watch","to","_ref2","notImplementedComputed","propertyName","byClient"],"mappings":"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","file":"js/chunk-2a3692e6.614fdb9d.js","sourcesContent":["// services\r\nimport { isStateOwner } from \"@/services/record/recordService\";\r\n\r\n// model\r\nimport { featureStatus } from \"@/model/features/featuresModel\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"user\");\r\n\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\n\r\n/**\r\n * Encapsulate Questys principal\r\n */\r\nexport const principalMixin = {\r\n mixins: [publicAccessMixin],\r\n computed: {\r\n ...mapGetters({\r\n principal: \"principal\",\r\n findFeature: \"findFeature\",\r\n isAvailableApplicationModule: \"isAvailableApplicationModule\"\r\n }),\r\n\r\n /**\r\n * compute whether workflow projects module is available (licensed, supported, enabled)\r\n * @return {boolean} true if workflow projects module is available\r\n */\r\n isAvailableProjectsModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Projects);\r\n },\r\n\r\n /**\r\n * compute whether workflow my inbox (tasks) module is available (licensed, supported, enabled)\r\n * @return {boolean} true if workflow my inbox (tasks) module is available\r\n */\r\n isAvailableMyInboxModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Tasks);\r\n },\r\n\r\n /**\r\n * compute whether Agenda module is available (licensed, supported, enabled)\r\n * @return {boolean} true if Agenda module is available\r\n */\r\n isAvailableAgendaModule() {\r\n return this.isAvailableApplicationModule(moduleNames.Agenda);\r\n }\r\n },\r\n methods: {\r\n /**\r\n * determines whether the current user (principal) is State Owner of specified record\r\n * @param {{id: number, name: string, stateOwnerId: number}} record\r\n * @return {boolean} returns true if current user (principal) is State Owner of specified record\r\n */\r\n isUserStateOwner(record) {\r\n return isStateOwner(record, this.principal);\r\n },\r\n\r\n /**\r\n * is Available Feature\r\n * @param {string} name Feature name\r\n * @return {boolean} true if Feature is Available (supported, licenced, released)\r\n */\r\n isAvailableFeature(name) {\r\n const status = this.featureStatus(name);\r\n return status.supported && status.licenced && status.released;\r\n },\r\n\r\n /**\r\n * get feature Status\r\n * @param name\r\n * @return {{licenced: boolean, released: boolean, statusText: string, supported: boolean, notSupportedReason: string}}\r\n */\r\n featureStatus(name) {\r\n let feature = this.findFeature(name);\r\n if (!feature) {\r\n feature = {\r\n name: name,\r\n used: 1,\r\n total: 1\r\n };\r\n }\r\n return featureStatus(feature);\r\n }\r\n }\r\n};\r\n","/**\r\n * Base Component Mixin serves as a base class for components\r\n */\r\nimport { isEmpty } from \"@/utils\";\r\n\r\nexport const baseComponentMixin = {\r\n data() {\r\n return {\r\n /**\r\n * Current Error\r\n * @type {string}\r\n */\r\n currentError: \"\",\r\n\r\n /**\r\n * Is Loading indicator\r\n * @type {boolean}\r\n */\r\n isLoading: false\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Get component Name\r\n * @returns {string}\r\n */\r\n componentName() {\r\n return this.$options.name;\r\n },\r\n /**\r\n * Get loading Text (overwrite it if needed)\r\n * @returns {string}\r\n */\r\n loadingText() {\r\n return `Loading ...`;\r\n },\r\n /**\r\n * Has an Error occurred\r\n * @returns {boolean}\r\n */\r\n hasError() {\r\n return !isEmpty(this.currentError);\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Build full Method (function) Name (this.componentName + Method Name)\r\n * @param {string} name\r\n * @returns {string}\r\n */\r\n fullMethodName(name) {\r\n return `${this.componentName}.${name}`;\r\n },\r\n /**\r\n * Handle Error\r\n * @param {string} error\r\n * @param {string} methodName\r\n */\r\n handleError(error, methodName = \"\") {\r\n this.currentError = error?.toString() ?? \"\";\r\n\r\n console.error(\r\n methodName ? `${this.fullMethodName(methodName)} Error:` : \"Error:\",\r\n this.currentError\r\n );\r\n },\r\n /**\r\n * Clear current error\r\n */\r\n clearError() {\r\n this.currentError = undefined;\r\n },\r\n /**\r\n * on Alert Visibility Changed event handler\r\n * @param {Boolean|boolean} visible\r\n */\r\n onAlertVisibilityChanged(visible) {\r\n if (!visible) {\r\n this.clearError();\r\n }\r\n }\r\n }\r\n};\r\n","import { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"solution\");\r\n\r\n/**\r\n * appMixin contains options (adhere to the DRY principle) &\r\n * code re-usability for Application\r\n */\r\nexport const appMixin = {\r\n computed: {\r\n ...mapGetters({\r\n appModuleName: \"appModuleName\",\r\n appModuleTitle: \"appModuleTitle\",\r\n appModuleIcon: \"appModuleIcon\"\r\n })\r\n }\r\n};\r\n","import { isPublicAccess, publicAccess } from \"@/services/config/configService\";\r\n\r\n/**\r\n * Encapsulate public Access business logic\r\n */\r\nexport const publicAccessMixin = {\r\n computed: {\r\n /**\r\n * is Public Access\r\n * @return {boolean} true if Public Access is enabled\r\n */\r\n isPublicAccess() {\r\n return isPublicAccess;\r\n },\r\n\r\n /**\r\n * public Access\r\n * @return {\r\n * {searcher: {name: string, code: string, repository: string}},\r\n * {appBar: {prominent: boolean, color: string, gradient: string, useTabs: boolean, logo: string, logoSize:number, backgroundImageUrl: string, title: string, collapseOnScroll: boolean, fadeImgOnScroll: boolean, shrinkOnScroll: boolean}}, {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}}, {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}},\r\n * {buttons: {color: string, elevation: number, outlined: boolean, rounded: boolean, textStyle: boolean}},\r\n * {company: {disclaimers: string, name: string, logo: string, description: string, linkedIn: string, address: {zip: string, country: string, city: string, addressLine1: string, addressLine2: string, state: string}}},\r\n * {contact: {name: string, description: string, phone: string, phoneDescription: string, email: string, emailDescription: string}},\r\n * {modules: {visibleFolder: string, visibleCategory: string, visibleMeetings: string}}\r\n * }\r\n */\r\n publicAccess() {\r\n return publicAccess;\r\n }\r\n }\r\n};\r\n","/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs router functionality\r\n */\r\nexport const routerMixin = {\r\n methods: {\r\n /**\r\n * can Navigate To Module Item By Module Item Id\r\n * @param {String|string} moduleName\r\n * @param {Number|number} id\r\n * @return {boolean} true if navigatable To Module Item By Module Item id\r\n */\r\n canNavigateToModuleItemByModuleItemId(moduleName, id) {\r\n return !(\r\n this.$router.currentRoute.name === moduleName &&\r\n this.$router.currentRoute.params?.id?.toString() ===\r\n (id?.toString() ?? \"\")\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Module Child Record By id\r\n * @param {String|string} moduleName\r\n * @param {Number|number} id record id\r\n * @param {Number|number} expandedId record's parent id\r\n * @return {boolean}\r\n */\r\n canNavigateToChildRecordById(moduleName, id, expandedId) {\r\n return !(\r\n this.$router.currentRoute.name === moduleName &&\r\n this.$router.currentRoute.params?.id?.toString() === id.toString() &&\r\n this.$router.currentRoute.params?.expandedId?.toString() ===\r\n expandedId.toString()\r\n );\r\n }\r\n }\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('base-content-layout',{attrs:{\"visible-data-table-in\":_vm.visibleDataTable,\"error\":_vm.currentError,\"loading\":_vm.isLoading,\"record\":_vm.record},on:{\"alertVisibilityChanged\":_vm.onAlertVisibilityChanged,\"expandedPreview\":_vm.onExpandedPreview},scopedSlots:_vm._u([{key:\"breadcrumbs\",fn:function(){return [_c('breadcrumbs-record',{attrs:{\"breadcrumbs\":_vm.breadcrumbs,\"selected-record\":_vm.record,\"can-navigate\":_vm.canNavigateToModuleItem,\"build-target-route\":_vm.createModuleItemContentRoute}})]},proxy:true},{key:\"record-details\",fn:function(){return [_c('agenda-record-details')]},proxy:true},(_vm.visibleProjectsTab)?{key:\"record-projects\",fn:function(){return [_c('agenda-projects',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visibleProjectsTab),expression:\"visibleProjectsTab\"}]})]},proxy:true}:null,(_vm.visibleSubRecords)?{key:\"record-list\",fn:function(){return [_c('agenda-documents',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visibleSubRecords),expression:\"visibleSubRecords\"}]})]},proxy:true}:null,(_vm.visibleFileVersions)?{key:\"record-history\",fn:function(){return [_c('agenda-file-versions',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visibleFileVersions),expression:\"visibleFileVersions\"}]})]},proxy:true}:null,(_vm.visiblePreviewTab)?{key:\"record-preview\",fn:function(){return [(_vm.visibleDocumentViewerPreview)?_c('document-viewer',{attrs:{\"record-id\":_vm.recordId,\"record-version\":_vm.previewRecordVersion,\"preview-only\":true,\"is-open-document\":_vm.expandedPreview}}):_vm._e(),(_vm.visibleDocumentPreview)?_c('document-preview',{attrs:{\"record\":_vm.record,\"open\":_vm.expandedPreview}}):_vm._e()]},proxy:true}:null,{key:\"snackbar\",fn:function(){return [_c('snackbar',{attrs:{\"color\":_vm.snackbarColor},on:{\"close\":_vm.closeSnackbar},model:{value:(_vm.snackbarVisible),callback:function ($$v) {_vm.snackbarVisible=$$v},expression:\"snackbarVisible\"}},[_vm._v(_vm._s(_vm.computedSnackbarText))])]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// services\r\nimport {\r\n storeSelectedModuleItemId,\r\n storeSelectedModuleExpandedId\r\n} from \"@/services/agenda/agendaModuleService\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapState, mapGetters, mapActions } = createNamespacedHelpers(\"agenda\");\r\n\r\n// mixins\r\nimport { moduleContentRecordMixin } from \"@/mixins/shared/content/moduleContentRecordMixin\";\r\nimport { moduleItemNavigatable } from \"@/mixins/shared/navigatable/moduleItemNavigatable\";\r\n\r\nexport const agendaContentMixin = {\r\n mixins: [moduleContentRecordMixin, moduleItemNavigatable],\r\n props: {\r\n /**\r\n * Folder expandedId: used as a second dynamic segment in the route path\r\n */\r\n expandedId: {\r\n type: Number,\r\n default: -1\r\n }\r\n },\r\n computed: {\r\n ...mapState({\r\n /**\r\n * Get current Agenda Module's selected record\r\n * Overwrite moduleContentRecordMixin.record()\r\n * @return {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }}\r\n */\r\n record: \"record\",\r\n\r\n /**\r\n * breadcrumbs\r\n * @return {Array<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\n breadcrumbs: \"breadcrumbs\",\r\n\r\n /**\r\n * workflow projects\r\n * @return {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n projects: \"projects\"\r\n }),\r\n\r\n ...mapGetters({\r\n /**\r\n * Get selected Agenda Module's Item Id\r\n * Overwrite moduleContentMixin.selectedModuleItemId()\r\n * @return {number}\r\n */\r\n selectedModuleItemId: \"selectedModuleItemId\",\r\n\r\n /**\r\n * Get selected Agenda Module's Item name\r\n * Overwrite moduleContentMixin.selectedModuleItemName()\r\n * @return {string}\r\n */\r\n selectedModuleItemName: \"selectedModuleItemName\"\r\n })\r\n },\r\n methods: {\r\n ...mapActions([\r\n \"setRecord\",\r\n \"setBreadcrumbs\",\r\n \"setRecordShortcut\",\r\n \"setProjects\"\r\n ]),\r\n\r\n /**|\r\n * Set current Agenda Module's item (record)\r\n * Overwrite moduleContentMixin.setModuleItem()\r\n * @param id\r\n * @param {Boolean} isShortcut - optional\r\n * @return {Promise}\r\n */\r\n async setModuleItem(id, isShortcut = false) {\r\n console.log(\r\n `${this.$options.name}.setModuleItem() (this.id: ${this.id}, this.expandedId: ${this.expandedId}`\r\n );\r\n\r\n if (id !== this.id) {\r\n console.warn(\r\n `${this.$options.name}.setModuleItem(${id}) id: ${id} !== this.id: ${this.id}`\r\n );\r\n }\r\n\r\n // Set current record\r\n if (isShortcut) {\r\n const payload = {\r\n id: id,\r\n parentId: this.expandedId\r\n };\r\n await this.setRecordShortcut(payload);\r\n } else {\r\n await this.setRecord(id);\r\n }\r\n\r\n // Set current record's workflow projects\r\n if (this.isAvailableProjectsModule) {\r\n try {\r\n await this.setProjects(this.record?.id);\r\n } catch (e) {\r\n console.error(e); // provide a UI error notification, e.g. unable to set projects ...\r\n }\r\n }\r\n\r\n // store\r\n if (id === this.record?.id) {\r\n storeSelectedModuleItemId(this.record?.id);\r\n storeSelectedModuleExpandedId(this.expandedId);\r\n }\r\n }\r\n },\r\n async created() {\r\n console.log(\r\n `${this.$options.name}.created() this.expandedId:`,\r\n this.expandedId\r\n );\r\n console.log(`${this.$options.name}.created() this.id:`, this.id);\r\n }\r\n};\r\n","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgendaContent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgendaContent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AgendaContent.vue?vue&type=template&id=234c8796\"\nimport script from \"./AgendaContent.vue?vue&type=script&lang=js\"\nexport * from \"./AgendaContent.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// router\r\nimport { createModuleItemContentRouteLocation } from \"@/router/solution/solutionRoutes\";\r\n\r\n// mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { routerMixin } from \"@/mixins/shared/router/routerMixin\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Application module navigatable behavior\r\n */\r\nexport const moduleItemNavigatable = {\r\n mixins: [appMixin, routerMixin],\r\n methods: {\r\n /**\r\n * Navigate to Application Module Item\r\n * @param {Number|number} id Application Module Item id\r\n */\r\n async navigateToModuleItem(id) {\r\n if (!this.canNavigateToModuleItem(id)) {\r\n console.warn(\r\n `Couldn't navigate to ${this.appModuleName} Item by id:`,\r\n id\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n await this.$router.push(this.createModuleItemContentRoute(id));\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * create Module Item Target Route\r\n * @param {Number|number} id Module Item id\r\n * @return {{name: (String|string), params: {id:number}}}\r\n */\r\n createModuleItemContentRoute(id) {\r\n return createModuleItemContentRouteLocation(this.appModuleName, id);\r\n },\r\n\r\n /**\r\n * can Navigate To Module Item\r\n * @param {Number|number} id Module Item id\r\n * @return {boolean} true if Navigatable To Module Item\r\n */\r\n canNavigateToModuleItem(id) {\r\n return this.canNavigateToModuleItemByModuleItemId(this.appModuleName, id);\r\n }\r\n }\r\n};\r\n","import { colorTheme } from \"@/design/colors/mdColors\";\r\n\r\n/**\r\n * snackbar-able Mixin\r\n */\r\nexport const snackbarableMixin = {\r\n data() {\r\n return {\r\n snackbarVisible: false,\r\n snackbarColor: \"\",\r\n snackbarText: \"\",\r\n snackbarTimeout: 2000,\r\n snackbarVisibleCloseButton: true,\r\n snackbarTop: false,\r\n snackbarMultiLine: false\r\n };\r\n },\r\n components: {\r\n Snackbar: () => import(\"@/components/shared/base/BaseSnackbar\")\r\n },\r\n methods: {\r\n /**\r\n * show Snackbar Success\r\n * @param {String} text\r\n * @param {Boolean} top\r\n */\r\n showSnackbarSuccess(text, top = false) {\r\n this.showSnackbar(text, colorTheme.success, top);\r\n },\r\n /**\r\n * show Snackbar Info\r\n * @param {String} text\r\n * @param {Boolean} top\r\n */\r\n showSnackbarInfo(text, top = false) {\r\n this.showSnackbar(text, colorTheme.info, top);\r\n },\r\n /**\r\n * show Snackbar Error (timeout: Use -1 to keep open indefinitely)\r\n * @param {String} text\r\n * @param {Boolean} top\r\n * @param {Number|number} timeout\r\n * @param {Boolean} multiLine\r\n */\r\n showSnackbarError(text, top = false, timeout = -1, multiLine = true) {\r\n this.showSnackbar(text, colorTheme.error, top, timeout, multiLine);\r\n },\r\n /**\r\n * show Snackbar Warning\r\n * @param {String} text\r\n * @param {Boolean} top\r\n */\r\n showSnackbarWarning(text, top = false) {\r\n this.showSnackbar(text, colorTheme.warning, top);\r\n },\r\n /**\r\n * show Snackbar\r\n * @param {String} text\r\n * @param {String} color\r\n * @param {Boolean} top\r\n * @param {Number|number} timeout\r\n * @param {Boolean} multiLine\r\n */\r\n showSnackbar(\r\n text,\r\n color = undefined,\r\n top = false,\r\n timeout = 2000,\r\n multiLine = false\r\n ) {\r\n this.snackbarVisible = true;\r\n this.snackbarColor = color;\r\n this.snackbarText = text;\r\n this.snackbarTop = top;\r\n this.snackbarTimeout = timeout;\r\n this.snackbarMultiLine = multiLine;\r\n },\r\n /**\r\n * close Snackbar\r\n */\r\n closeSnackbar() {\r\n this.snackbarVisible = false;\r\n }\r\n }\r\n};\r\n","// model\r\nimport { recordOperation, recordType } from \"@/model/record/recordModel\";\r\n\r\n// services\r\nimport {\r\n fullRecordName,\r\n isAllowedOperation,\r\n canPreview\r\n} from \"@/services/record/recordService\";\r\n\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\n\r\n/**\r\n * This mixin serves as a base class for Record *Content*.vue components\r\n */\r\nexport const contentRecordMixin = {\r\n mixins: [publicAccessMixin, principalMixin],\r\n computed: {\r\n /**\r\n * Get current record\r\n * remarks: Abstract computed\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n record() {\r\n console.warn(`${this.$options.name} Called Abstract computed record()`);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * compute current record's workflow projects\r\n * remarks: Abstract computed\r\n * @return {*[]}\r\n */\r\n projects() {\r\n console.warn(`${this.$options.name} Called Abstract computed projects()`);\r\n return [];\r\n },\r\n\r\n /**\r\n * allowed View File History\r\n * @return {boolean} true if View File History is allowed\r\n */\r\n allowedViewFileHistory() {\r\n if (this.isPublicAccess) {\r\n return false;\r\n }\r\n return this.record\r\n ? isAllowedOperation(this.record, recordOperation.AccessVersion)\r\n : false;\r\n },\r\n\r\n /**\r\n * visible Sub Records component\r\n * @return {boolean} true if visible Sub Records component\r\n */\r\n visibleSubRecords() {\r\n const typeId = this.record?.recordTypeId ?? -1;\r\n return !(typeId === recordType.RECORD || typeId === recordType.FILE);\r\n },\r\n\r\n /**\r\n * Determines File Versions visibility\r\n * @return {boolean} true if File Versions are visible\r\n */\r\n visibleFileVersions() {\r\n return (\r\n (this.record?.recordTypeId ?? recordType.RECORD) === recordType.FILE &&\r\n this.allowedViewFileHistory\r\n );\r\n },\r\n\r\n /**\r\n * Determines Preview Tab visibility\r\n * @return {boolean} true if Record Preview is visible\r\n */\r\n visiblePreviewTab() {\r\n return canPreview(this.record);\r\n },\r\n\r\n /**\r\n * compute Document Preview visibility\r\n * @return {boolean} true when Document Preview is visible\r\n */\r\n visibleDocumentPreview() {\r\n return this.visiblePreviewTab && !this.visibleDocumentViewerPreview;\r\n },\r\n\r\n /**\r\n * computed full Record Name\r\n * @return {string|string}\r\n */\r\n fullRecordName() {\r\n return this.record ? fullRecordName(this.record) : \"\";\r\n }\r\n }\r\n};\r\n","// services\r\nimport {\r\n canPreviewInDocumentViewer,\r\n previewRecordVersion\r\n} from \"@/services/record/recordService\";\r\n\r\n// Mixins\r\nimport { moduleContentMixin } from \"@/mixins/shared/content/moduleContentMixin\";\r\nimport { contentRecordMixin } from \"@/mixins/shared/content/contentRecordMixin\";\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\n\r\n/**\r\n * This mixin serves as a base class for Record *Content*.vue components\r\n */\r\nexport const moduleContentRecordMixin = {\r\n mixins: [moduleContentMixin, contentRecordMixin, principalMixin],\r\n data() {\r\n return {\r\n expandedPreview: false\r\n };\r\n },\r\n computed: {\r\n /**\r\n * compute current record Id\r\n * @return {number|number}\r\n */\r\n recordId() {\r\n return this.record?.id ?? -1;\r\n },\r\n\r\n /**\r\n * compute current record version\r\n * @return {*|number}\r\n */\r\n recordVersion() {\r\n return this.record?.version ?? -1;\r\n },\r\n\r\n /**\r\n * compute preview Record Version\r\n * @return {number}\r\n */\r\n previewRecordVersion() {\r\n return previewRecordVersion(this.record);\r\n },\r\n\r\n /**\r\n * compute whether the current record-file can be previewed by Questys Web Document Viewer\r\n * @return {boolean|Boolean}\r\n */\r\n visibleDocumentViewerPreview() {\r\n if (!this.visiblePreviewTab) {\r\n return false;\r\n }\r\n return canPreviewInDocumentViewer(this.record, this.principal);\r\n },\r\n\r\n /**\r\n * get current record's workflow project Count\r\n * @return {number}\r\n */\r\n projectCount() {\r\n return this.projects?.length ?? 0;\r\n },\r\n\r\n /**\r\n * compute Record - Projects Tab visibility\r\n * @return {boolean} true if Record - Projects Tab is visible\r\n */\r\n visibleProjectsTab() {\r\n return (\r\n this.isAvailableProjectsModule &&\r\n (this.record?.id ?? -1) > 0 &&\r\n this.projectCount > 0\r\n );\r\n }\r\n },\r\n methods: {\r\n onExpandedPreview(value) {\r\n this.expandedPreview = value;\r\n }\r\n }\r\n};\r\n","// services\r\nimport { notImplementedMethod } from \"@/services/error/errorMessages\";\r\n\r\n// Mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { baseComponentMixin } from \"@/mixins/shared/base/component/baseComponentMixin\";\r\nimport { snackbarableMixin } from \"@/mixins/shared/snackbarable/snackbarableMixin\";\r\nimport { createModuleExpandRecordShortcutContentRouteName } from \"@/router/solution/solutionRoutes\";\r\n\r\n/**\r\n * This mixin serves as a base class for *Content*.vue components\r\n */\r\nexport const moduleContentMixin = {\r\n mixins: [appMixin, snackbarableMixin, baseComponentMixin],\r\n components: {\r\n BaseContentLayout: () => import(\"@/views/shared/layout/BaseContentLayout\"),\r\n ExpansionPanelLayout: () =>\r\n import(\"@/components/shared/core/expansionPanel/ExpansionPanelLayout\")\r\n },\r\n data() {\r\n return {\r\n /**\r\n * Visible Data Table\r\n * @type {Boolean}\r\n */\r\n visibleDataTable: true\r\n };\r\n },\r\n props: {\r\n /**\r\n * Module Item id: used as dynamic segment in the route path\r\n */\r\n id: {\r\n type: Number,\r\n default: -1\r\n }\r\n },\r\n computed: {\r\n /**\r\n * Get selected Module ItemId\r\n * Abstract computed getter\r\n * @return {number}\r\n */\r\n selectedModuleItemId() {\r\n return -1;\r\n },\r\n\r\n /**\r\n * Get selected Module Item Name\r\n * Abstract computed getter\r\n * @return {string}\r\n */\r\n selectedModuleItemName() {\r\n return \"\";\r\n },\r\n\r\n /**\r\n * Get Snackbar Text\r\n * @returns {string}\r\n */\r\n computedSnackbarText() {\r\n return `Selected: ${this.selectedModuleItemName || \"\"}`;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * set Module Item\r\n * Abstract method which has to be implemented by caller\r\n * @param {number} id\r\n * @param {Boolean} isShortcut - optional\r\n * @return {Promise}\r\n */\r\n async setModuleItem(id, isShortcut = false) {\r\n console.warn(\r\n notImplementedMethod(\r\n `${this.$options.name}.setModuleItem(${id})`,\r\n isShortcut\r\n )\r\n );\r\n },\r\n\r\n /**\r\n * set Current selected Module Item\r\n * @return {Promise}\r\n */\r\n async setCurrentModuleItem(isShortcut = false) {\r\n try {\r\n this.clearError();\r\n this.isLoading = true;\r\n console.log(\r\n `${this.$options.name}.setCurrentModuleItem() this.id:`,\r\n this.id\r\n );\r\n await this.setModuleItem(this.id, isShortcut);\r\n } catch (e) {\r\n this.handleError(e);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n },\r\n\r\n // /**\r\n // * In-Component Navigation Guards: beforeRouteEnter\r\n // * @param to\r\n // * @param from\r\n // * @param next\r\n // * @return {Promise}\r\n // */\r\n // async beforeRouteEnter(to, from, next) {\r\n // console.log(`beforeRouteEnter to:`, to);\r\n // // console.log(`beforeRouteEnter from:`, from);\r\n //\r\n // // called before the route that renders this component is confirmed.\r\n // // does NOT have access to `this` component instance,\r\n // // because it has not been created yet when this guard is called!\r\n // next(async vm => {\r\n // //\r\n // // access to component instance via `vm`\r\n // //\r\n // // console.log(`beforeRouteEnter()`, `vm.id: ${vm.id}`);\r\n // // console.log(`beforeRouteEnter()`, `to?.params?.id: ${to?.params?.id}`);\r\n // // console.log(\r\n // // `beforeRouteEnter()`,\r\n // // `vm.id === to?.params?.id: ${vm.id === to?.params?.id}`\r\n // // );\r\n // return await vm.setCurrentModuleItem();\r\n // });\r\n // },\r\n\r\n // /**\r\n // * In-Component Navigation Guards: beforeRouteUpdate\r\n // * @param to\r\n // * @param from\r\n // * @param next\r\n // * @return {Promise}\r\n // */\r\n // async beforeRouteUpdate(to, from, next) {\r\n // try {\r\n // // called when the route that renders this component has changed.\r\n // // This component being reused (by using an explicit `key`)\r\n // // in the new route or not doesn't change anything.\r\n //\r\n // // const id = to?.params?.id;\r\n // // console.log(\"beforeRouteUpdate()\", `id: ${id}`);\r\n //\r\n // // e.g. apply Navigation Guard - prevent going to 'to' route\r\n // // if (id === 259704) {\r\n // // // Cancel navigation to route\r\n // // next(false);\r\n // // return;\r\n // // }\r\n //\r\n // console.log(`beforeRouteUpdate to:`, to);\r\n // // console.log(`beforeRouteUpdate from:`, from);\r\n //\r\n // await this.setCurrentModuleItem();\r\n // next();\r\n // } catch (e) {\r\n // console.error(e.toString());\r\n // next();\r\n // }\r\n // }\r\n\r\n async created() {\r\n console.log(`${this.$options.name}.created()`);\r\n const isShortcut =\r\n this.$route.name ===\r\n createModuleExpandRecordShortcutContentRouteName(\"Folder\") ?? false;\r\n await this.setCurrentModuleItem(isShortcut);\r\n },\r\n\r\n watch: {\r\n // when using routes with params, the same component instance will be reused,\r\n // this also means that the lifecycle hooks of the component will not be called,\r\n // To react to params changes in the same component, we can simply watch the $route object:\r\n //\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n async $route(to) {\r\n try {\r\n console.log(`watch ${this.$options.name}.route to:`, to);\r\n\r\n //Compute if path name is Folder Shortcut\r\n const isShortcut =\r\n to.name ===\r\n createModuleExpandRecordShortcutContentRouteName(\"Folder\") ?? false;\r\n\r\n //Pass isShortcut to get Record Shortcut Data from Api if true\r\n await this.setCurrentModuleItem(isShortcut);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * Get not Implemented Computed formatted optionJump\r\n * @param {String|string} propertyName\r\n * @param {Boolean|boolean} byClient\r\n * @returns {String|string}\r\n */\r\nconst notImplementedComputed = (propertyName, byClient = true) =>\r\n byClient\r\n ? `Return value of Computed property: '${propertyName}' has to be be implemented by client.`\r\n : `Return value of Computed property: '${propertyName}' has to be be implemented.`;\r\n\r\n/**\r\n * Get not Implemented Method formatted optionJump\r\n * @param {String|string} propertyName\r\n * @param {Boolean|boolean} byClient\r\n * @returns {String|string}\r\n */\r\nconst notImplementedMethod = (propertyName, byClient = true) =>\r\n byClient\r\n ? `Method: '${propertyName}' has to be be implemented by client.`\r\n : `Method: '${propertyName}' has to be be implemented.`;\r\n\r\nexport { notImplementedComputed, notImplementedMethod };\r\n"],"sourceRoot":""}