{"version":3,"sources":["webpack:///../../../src/components/transitions/createTransition.ts","webpack:///../../../src/components/transitions/expand-transition.ts","webpack:///../../../src/components/transitions/index.ts","webpack:///../../../src/components/VSheet/index.ts","webpack:///../../../src/mixins/measurable/index.ts","webpack:///../../../src/mixins/loadable/index.ts","webpack:///../../../src/components/VProgressLinear/index.ts","webpack:///./src/services/agenda/agendaRecordService.js","webpack:///./src/model/folder/folderModel.js","webpack:///./src/mixins/shared/record/recordIconMixin.js","webpack:///./src/mixins/shared/base/settings/deleteSettingsMixin.js","webpack:///../../../src/mixins/binds-attrs/index.ts","webpack:///../../../src/components/VSheet/VSheet.ts","webpack:///../../../src/components/VProgressLinear/VProgressLinear.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/mixins/roundable/index.ts","webpack:///./src/services/agenda/agendaPacketService.js","webpack:///./src/mixins/shared/record/recordDetailMixin.js","webpack:///./src/mixins/shared/record/recordDetailActionMixin.js","webpack:///../../../src/mixins/proxyable/index.ts","webpack:///./src/model/agenda/meeting/agendaMeetingModel.js","webpack:///../../../src/mixins/elevatable/index.ts","webpack:///./src/mixins/shared/navigatable/moduleRecordNavigatable.js","webpack:///../../src/util/mergeData.ts","webpack:///./src/mixins/shared/navigatable/folderRecordNavigatable.js","webpack:///../../../src/mixins/positionable/index.ts"],"names":["mergeTransitions","dest","transitions","Array","concat","createSimpleTransition","name","origin","mode","functional","props","group","type","Boolean","default","hideOnLeave","leaveAbsolute","String","render","h","context","tag","data","on","beforeEnter","el","style","transformOrigin","webkitTransformOrigin","leave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","position","top","left","width","height","afterLeave","setProperty","mergeData","children","createJavascriptTransition","functions","expandedParentClass","x","sizeProperty","offsetProperty","upperFirst","_parent","parentNode","_initialStyle","transition","overflow","enter","initialStyle","offset","classList","add","requestAnimationFrame","afterEnter","resetStyles","enterCancelled","leaveCancelled","remove","size","VFabTransition","VFadeTransition","VScaleTransition","VScrollXTransition","VSlideXTransition","VExpandTransition","ExpandTransitionGenerator","VExpandXTransition","VSheet","Vue","extend","Number","maxHeight","maxWidth","minHeight","minWidth","computed","measurableStyles","styles","convertToUnit","this","loading","loaderHeight","methods","genProgress","getSlot","$createElement","VProgressLinear","absolute","color","indeterminate","visibleAgendaMeetingCommandOperation","record","operation","isSupportedAgendaMeetingOperation","isAllowedAgendaMeetingOperation","enableAgendaMeetingCommandOperation","isValidAgendaMeetingOperation","visibleAgendaItemCommandOperation","isSupportedAgendaItemOperation","isAllowedAgendaItemOperation","enableAgendaItemCommandOperation","isValidAgendaItemOperation","_findOperation$allowe","_findOperation","findOperation","meetingOperations","allowed","_findOperation$allowe2","_findOperation2","agendaItemOperations","op","findAgendaMeetingOperation","agendaMeetingOperation","post","supportAgendaMeetingPost","unpost","supportAgendaMeetingUnPost","publish","supportAgendaMeetingPublish","unpublish","supportAgendaMeetingUnPublish","findAgendaItemOperation","agendaItemOperation","defer","supportAgendaItemDefer","refer","supportAgendaItemRefer","recall","supportAgendaItemRecall","submit","supportAgendaItemSubmit","_record$recordTypeId","isAllowedAuthor","recordTypeId","recordType","RECORD","MEETING","_record$recordTypeId2","_record$recordTypeId3","_record$recordTypeId4","_record$recordTypeId5","ITEM","_record$recordTypeId6","_record$recordTypeId7","_record$recordTypeId8","_findOperation$valid","_findOperation3","valid","_findOperation$valid2","_findOperation4","folderColor","Color","colorMD","yellow","variantType","darken","variantNumber","n2","documentColor","indigo","n1","folderColorClass","getClassColor","documentColorClass","recordIconMixin","mixins","menuItemSettingsMixin","recordIcon","FILE","findFileTypeIcon","extension","findRecordTypeIcon","recordTypeIcon","typeId","recordIconColorClass","recordTypeIconColorClass","undefined","FOLDER","SECTION","DOCUMENT","menuItemColorClass","mapGetters","createNamespacedHelpers","deleteSettingsMixin","deleteColor","mdDeleteColor","deleteColorClass","makeWatcher","property","val","oldVal","attr","Object","prototype","hasOwnProperty","call","$delete","$data","$set","attrs$","listeners$","created","$watch","immediate","BindsAttrs","Colorable","Elevatable","Measurable","Roundable","Themeable","outlined","shaped","classes","themeClasses","elevationClasses","roundedClasses","class","setBackgroundColor","$slots","baseMixins","PositionableFactory","Proxyable","directives","intersect","active","backgroundColor","backgroundOpacity","bufferValue","query","reverse","rounded","stream","striped","value","internalLazyValue","isVisible","__cachedBackground","staticClass","backgroundStyle","__cachedBar","computedTransition","__cachedBarType","__cachedIndeterminate","__cachedDeterminate","__cachedBuffer","normalizedValue","genProgressBar","__cachedStream","setTextColor","normalizedBuffer","parseFloat","opacity","isReversed","Math","max","fixed","reactive","$vuetify","rtl","normalize","$listeners","change","genContent","slot","genListeners","listeners","click","onClick","e","$el","getBoundingClientRect","internalValue","offsetX","onObserve","entries","observer","isIntersecting","attrs","role","bottom","inserted","binding","vnode","window","modifiers","handler","options","IntersectionObserver","_observe","_a","_uid","some","entry","quiet","init","once","unbind","observe","unobserve","Intersect","tile","composite","push","values","split","length","join","getAgendaPacketNumberingOptions","optionModel","numberingOptionList","currentTab","agendaPacketTabOptions","noNumbering","item","agendaPacketItemPrefix","itemPrefixValue","agendaPacketItemSuffix","itemSuffixValue","itemTitle","agendaPacketItemTitleSuffix","itemTitlePrefixValue","agendaPacketItemTitleLength","itemTitleLengthValue","page","agendaPacketPagePrefix","pagePrefixValue","agendaPacketPageSuffix","pageSuffixValue","pages","agendaPacketPageCountPrefix","pagesPrefixValue","agendaPacketPageCountSuffix","pagesSuffixValue","prefix","key","agendaPacketContent","itemPrefix","suffix","itemSuffix","itemTitlePrefix","itemTitleLength","pagePrefix","pageSuffix","pageCountPrefix","pageCountSuffix","recordDetailMixin","snackbarableMixin","components","FormRecord","RecordDetailsBanner","isValidFormRecord","recordOperation","agendaDocumentType","recordFileVersion","currentRecordMode","recordMode","view","recordCategory","console","warn","id","_this$record$id","_this$record","get","_this$record$name","_this$record2","set","recordTypeName","_this$record$recordTy","_this$record3","getRecordTypeName","_this$record$recordTy2","_this$record4","recordAncestorTypeId","_this$record$ancestor","_this$record5","ancestor","isReadOnly","_this$record$isReadOn","_this$record6","isDraft","_this$record$isDraft","_this$record7","isLocked","_this$record$isLocked","_this$record8","isLink","_this$record$isLink","_this$record9","isDeleted","_this$record$isDelete","_this$record10","isComposite","_this$record$isCompos","_this$record11","title","fullRecordName","isAllowedOperation","visibleRecordCommandOperation","enableRecordCommandOperation","isValidOperation","Print","supportPrint","Download","supportDownload","Email","supportEmail","isDocumentAssemblyEvent","isRecordOperationDanger","mapActions","recordDetailActionMixin","buttonSettingsMixin","fileCheckInMixin","folderRecordNavigatable","reactiveMixin","userMixin","principalMixin","broadcastMixin","moduleRecordNavigatable","BaseDropDownMenuButton","BaseMenuItem","BaseButton","BaseTooltipButton","LayoutPopoverMenu","ExpansionPanelsLayout","RecordBadgeIcon","DialogOutline","PromptWithProgress","DocumentScan","DocumentViewer","BaseAlert","RadioGroup","ProgressDisplay","DocumentEditorDialog","DefaultPdfViewerDialog","BaseCheckInOption","CheckInDialog","ReleaseDialog","DownloadFileDialog","PrintFileDialog","DeleteRecordDialog","DocumentLink","ImportFilePopoverMenu","UploadCompoundDocumentDialog","AgendaItemReferDialog","AgendaItemDeferDialog","ReIndexDialog","FormNewProject","DetailsBannerLayout","AgendaTabsContent","SubmitRecallAgendaItemsDialog","iconDownload","iconAdd","iconFolder","iconFolderMultiple","iconDocument","iconRecord","iconRecordMultiple","iconEdit","iconSave","iconUndo","iconTrash","iconLock","iconUnLock","iconReadOnly","iconDraft","iconLink","iconProjects","iconFileCheckIn","iconAcquire","iconUploadFile","iconScanner","iconAsterisk","iconQuestion","iconError","iconClose","iconValidate","iconCheck","iconFileRelease","iconFileEdit","iconFileView","iconPaste","iconReindex","iconMore","iconDotsHorizontal","iconWarning","iconDocumentAssembly","iconSubmit","iconRecall","recordTypes","iconAgendaMeeting","iconEvent","iconAgendaItem","iconAgendaSection","agendaPacketModel","createAgendaPacketOption","iconWFProject","visibleCheckInFileProgress","visibleCheckInFilePopoverMenu","visibleDialogDelete","visibleDeleteProgress","deleteError","alertIn","isLoadingCreateRecord","isLoadingSaveRecord","loadingCategory","loadingFieldValueId","visibleDocumentEditorDialog","loadingDatabaseLookupData","visibleDefaultPdfViewerDialog","openScanDialog","visibleCheckInDialog","visibleDialogRelease","visibleDownloadFileDialog","visiblePrintFileDialog","isEmail","visibleUploadCompoundDocumentDialog","isFileChanged","filePageCount","agendaTemplate","agendaItemTemplate","agendaItemTemplates","agendaSectionTemplates","isDocumentAssembly","isRecallOperation","visibleSubmitRecallAgendaItemsDialog","categoryTypeId","checkInOptionModel","createCheckInOption","uploadedFile","newAgendaDocumentType","sourceRecord","destinationRecord","visibleReferDialog","visibleDeferDialog","acquireNewFile","visibleReindexDialog","isNewRecordProject","isValidFormNewProject","validProjectTasks","tab","inheritParentData","findField","enableWebScan","isEventDocumentAssembly","commandDocumentAssembly","agendaMeetingActions","agendaMeetingOperations","agendaMeetingActionCount","_this$agendaMeetingAc","_this$agendaMeetingAc2","agendaTabs","_this$record$recordTy3","agendaMeetingTabOption","agendaSectionTabOption","agendaItemTabOption","visibleAgendaTabs","_this$record$recordTy4","_this$record$recordTy5","_this$record$recordTy6","visibleAdvanceAgendaTabContent","agendaMeetingTabOptions","meeting","section","agendaItemActions","_this$record$recordTy7","agendaItemActionCount","_this$agendaItemActio","_this$agendaItemActio2","visibleAgendaOperationDivider","visibleNewInheritRecord","sourceControlActions","recordOperations","filter","CheckOut","CheckOutForSign","Release","recordAttributesOperations","Lock","Unlock","SetReadOnly","SetDraft","recordSendOperations","recordDeleteOperations","Delete","recordNew","recordNewCategory","projectNew","projectNewTemplate","$options","projectHeaderIconColorClass","projectValidationColorClass","isValidNewProject","projectValidationMessage","currentRecord","new","edit","isCheckedOutForSign","IsCheckedOutForDigitalSigningByPrinciple","principal","categories","getUpdateRecordCategories","getCreateRecordCategories","userCategories","currentRecordCategory","currentRecordTypeName","_findRecordType$name","_findRecordType","_this$currentRecord$r","_this$currentRecord","findRecordType","recordModeName","_findRecordMode$name","_findRecordMode","findRecordMode","recordDetailsBannerTitle","visibleCommandNewRecord","visibleNewRecord","visibleNewDuplicateRecord","visibleNewAgendaDocument","visibleCommandAcquireRecord","visibleCommandRecordActions","visibleCommandCreate","newProject","isAvailableProjectsModule","enabledCommandCreate","visibleCommandValidate","_this$currentRecordMo","visibleCommandSaveRecord","visibleCommandCancelRecordAction","commandValidateFormLabel","commandValidateFormToolTip","_this$currentRecord2","commandNewLabel","_findRecordMode2","commandCreateLabel","commandCreateRecordToolTip","commandAcquireLabel","commandAcquireScanLabel","commandEditRecordLabel","recordOperationLabel","Update","commandEditRecordToolTip","commandSaveRecordLabel","commandSaveRecordToolTip","commandCancelRecordAction","commandCancelRecordActionToolTip","visibleCommandScan","enabledCommandScan","visibleEditFileVersion","canEditFileVersionInDocumentEditor","visibleCommandEdit","enableCommandEdit","editRecordId","editRecordVersion","openExpansionPanel","_this$record$recordTy8","localUploadedFile","visibleCommandOpen","isCompoundRecord","isCompoundFile","isAllowedDirectFileUpload","isDirectUploadAllowed","enableNewRecord","canUpdate","isValidReindex","_this$record$recordTy9","isCompoundDocument","visibleNewWorkflowProjectCommand","commandNewProjectLabel","projectLabel","visibleSwitchStartNewRecordProject","switchStartNewRecordProjectLabel","categoryStartProjectOption","startProjectOption","autoStart","enabledSwitchStartNewRecordProject","categoryWorkflow","_this$recordNewCatego","workflow","_this$categoryWorkflo","_this$categoryWorkflo2","none","visibleNewWorkflowProject","expandNewWorkflowProject","_this$currentRecordCa","_this$currentRecordCa2","template","visibleSubmitRecallItemsOperation","_this$record$recordTy10","_this$record12","_this$record$recordTy11","_this$record13","_this$record14","tooltipSubmitAllItems","_this$record15","labelSubmitAllItems","tooltipRecallAllItems","_this$record16","labelRecallAllItems","getAgendaItemTemplates","enabledSubmitRecallItemsOperation","_this$record17","_this$record18","categoryType","c","Id","createRecord","payload","notImplementedMethod","onValidateProjectTasks","isValid","createAgendaMeeting","createAgendaItem","saveRecord","deleteRecord","deleteRecordShortcut","setNewRecordCategory","setRecordTextFieldValue","setDatabaseLookupData","checkInScannedFile","updateRecordInfo","setFileVersions","setDocuments","commandNewRecordLabel","_findRecordType2","commandNewDuplicateRecordLabel","_findRecordType3","commandNewRecordInheritLabel","_findRecordType4","setNewRecord","setNewWorkflowProject","setProjectNewTemplate","startWorkflowProject","setNewRecordProject","setEditRecord","setRecordMode","checkInEditedDocument","getRecordInfo","postAgendaMeeting","unPostAgendaMeeting","publishAgendaMeeting","unPublishAgendaMeeting","submitAgendaItem","recallAgendaItem","setChildRecords","setMovedRecord","setLocalUploadedFile","file","reindexDocument","submitMeetingAgendaItems","submitSectionAgendaItems","recallMeetingAgendaItems","recallSectionAgendaItems","reindexFile","_this$recordNew$categ","_this$recordNew","_this$recordNewCatego2","_this$recordNewCatego3","_this$record19","_this$record20","categoryId","category","showSnackbarSuccess","_this$record21","showSnackbarError","toString","_this$recordNew$categ2","_this$recordNew2","_this$recordNewCatego4","_this$recordNewCatego5","_recordNew$id2","onStartWorkflowProject","_this$agendaTemplate$","_this$agendaTemplate","agendaTemplateId","_this$agendaItemTempl","_this$agendaItemTempl2","agendaTemplateIndex","indexOf","_record$id","_this$uploadedFile","uploadPayload","UploadOptionModel","checkInComment","isCheckInOCR","isCheckInDraft","checkInFile","uploadFileModel","_this$record$id2","_this$record22","parentId","_recordNew$id","_this$projectNew","_this$projectNew2","_ref","_this$projectNew$temp","_this$projectNew3","_this$projectNewTempl","_this$projectNew4","recordId","projectName","comment","templateId","runOnlyOneProject","userTasks","getNewProjectUserTasks","project","log","navigateToModuleRecord","agendaDocumentTypeLabel","label","agendaPacket","_recordNew$parentId","_recordNew$id3","numberingOptions","numberingPosition","numberPosition","AgendaPacketQueryModel","includePageSeparator","includeLinkAgenda","includeLinkBackUp","linkStaticText","agendaItemTitle","linkNote","meetingId","option","createAgendaPacket","_recordNew$parentId2","_recordNew$id4","createAgenda","showSnackbarWarning","_this$recordNew3","msg","error","clearUploadedFileData","onCancelRecordAction","modeName","cancelRecordAction","setReadOnlyRecord","lockRecord","unLockRecord","checkOutFile","checkOutFileForSign","releaseFile","setDraftRecord","newTypeId","selectedTypeId","hideForDocumentAssembly","commandNewAgendaDocumentLabel","agendaTypeId","_findAgendaDocumentTy","findAgendaDocumentType","replace","iconNewAgendaDocument","_findAgendaDocumentTy2","icon","_findRecordType$name2","_findRecordType5","newRecordType","_this$record$id3","_this$record23","_this$record$parentId","_this$record24","_this$currentUser","newCategoryId","newAgendaDocumentCategoryId","newRecord","currentUser","_this$getCreateRecord","_categories$length","_categories$","_this$recordCategory","_findRecordType$name3","_findRecordType6","_findRecordType7","_this$currentUser2","newRecordCategoryTypeId","newRecordParentId","_this$record$id4","_this$record25","_this$record$parentId2","_this$record26","sectionId","loadAgendaSectionItemTemplates","newRecordCategoryId","setNewRecordAndProject","_findRecordType$name4","_findRecordType8","_findRecordType$name5","_findRecordType9","selRecordTypeId","selAncestorTypeId","_this$record$id5","_this$record27","_this$record$ancestor2","_this$record28","_this$record$parentId3","_this$record29","_this$record$id6","_this$record30","_this$record$ancestor3","_this$record31","_this$record$parentId4","_this$record32","_this$record$id7","_this$record33","_this$record$ancestor4","_this$record34","_this$record$parentId5","_this$record35","_this$record$id8","_this$record36","_this$record$parentId6","_this$record37","_this$record$id9","_this$record38","_this$record$parentId7","_this$record39","_this$record$id10","_this$record40","newRecordTypeId","backupMaterial","_this$recordCategory$","_this$recordCategory2","_categories$length2","_categories$2","_categories$length3","_categories$3","_findRecordType$name6","_findRecordType10","_this$recordCategory$2","_this$recordCategory3","_this$recordCategory$3","_this$recordCategory4","_this$currentUser3","duplicateRecord","validateNewProject","onRecordEdit","editRecordCategoryId","editRecord","cloneDeep","_this$record41","_this$findCategory$ca","_this$findCategory","_this$record$category","_this$record42","findCategory","ancestorType","_this$findCategory$ca2","_this$findCategory2","_this$record$category2","_this$record43","showDeleteRecordDialog","closeDeleteRecordDialog","showDownloadFileDialog","_findRecordOperation","action","findRecordOperation","closeDownloadFileDialog","showPrintFileDialog","_findRecordOperation2","closePrintFileDialog","onEditFileVersion","showDocumentEditorDialog","_this$record$stateId","_this$record44","stateId","recordState","checkedOut","_findRecordState","_this$record$stateId2","_this$record45","findRecordState","closeDocumentEditorDialog","openUploadCompoundDocumentDialog","closeUploadCompoundDocumentDialog","openDefaultPdfViewerDialog","closeDefaultPdfViewerDialog","onAcquireScan","_this$record$stateId3","_this$record46","_findRecordState2","_this$record$stateId4","_this$record47","_this$record48","_this$record49","_this$record50","_this$record$isLocked2","_this$record51","defaultPdfViewer","_this$record$stateId5","_this$record52","_this$record53","_this$record54","state","postMessageToListener","documentViewerRoute","createDocumentViewerRoute","fullTextSearchCriteria","routeUrl","$router","resolve","href","setTimeout","open","_this$record$stateId6","_this$record55","_this$record56","_this$record57","_this$record58","_this$record$stateId7","_this$record59","fullRecordVersionName","checkedIn","createActionResultSuccess","createActionResultError","_this$record$parentId8","_this$record60","_this$record61","_this$record$id11","_this$record62","canNavigateToModuleItem","createModuleItemContentRoute","recordCheckOut","recordCheckOutForSign","recordLock","recordUnLock","recordSetDraft","recordSetReadOnly","onEmailFile","agendaMeetingPublish","agendaMeetingUnPublish","agendaMeetingPost","agendaMeetingUnPost","mediaManagerImport","mediaManagerExport","agendaItemSubmit","agendaItemRecall","_this$movedRecord$rec","_this$movedRecord","contextMenuRecordOperation","Copy","movedRecord","_this$movedRecord$rec2","_this$movedRecord2","Cut","_this$record$id12","_this$record63","_this$record$stateId8","_this$record64","_this$record65","_this$record66","published","_this$record$id13","_this$record67","_this$record$stateId9","_this$record68","_findRecordState3","_this$record69","_this$record$id14","_this$record70","_this$record$stateId10","_this$record71","_this$record72","_this$record73","posted","_this$record$id15","_this$record74","_this$record$stateId11","_this$record75","_findRecordState4","_this$record76","_this$record$id16","_this$record77","_this$record$stateId12","_this$record78","_this$record79","_this$record80","submitted","_this$record$id17","_this$record81","_this$record$stateId13","_this$record82","_this$record83","recordOperationIcon","recordOperationTooltip","isInsertFile","insertAtBeginning","checkInOption","_this$record84","uploadFileError","setUploadFileProgress","performCheckIn","uploadFileProgress","_this$recordNew4","_this$recordNewCatego6","_this$recordNewCatego7","_workflow$template$id","_workflow$template","_workflow$startProjec","autoSwitchStartNewRecordProjectOn","_this$agendaTemplate2","_record$categoryId","onCategoryChanged","copyAgendaTemplateRecord","_record$categoryId2","index","field","_field$id","_field$id2","closeUploadFileDropdownParentMenu","closeCheckInFileDropdownParentMenu","onValidateForm","result","$refs","formNewProject","validate","resultMsg","formRecord","_this$currentRecord3","openCheckInDialog","_this$record$localFil","_this$record85","_this$record$localFil2","_this$record86","localFile","isModified","pageCount","checkInModel","_this$record$id18","_this$record87","_this$record$version","_this$record88","_this$record$stateId14","_this$record89","visibleCheckInProgress","resetDialogErrors","model","CheckInOptionModel","checkInExtension","version","_findRecordState5","_findRecordType11","_findRecordState6","currentError","changedRecordModel","_record$id2","_this$record90","RecordInfo","hasNewVersion","HasVersionChanged","isCurrent","isFileWithNewVersion","isCompoundDocumentWithNewFiles","_await$this$getAgenda","_await$this$getAgenda2","_this$createRecordCat","_this$createRecordCat2","createRecordCategories","createRecordCategoriesByCategoryType","_this$updateRecordCat","_this$updateRecordCat2","updateRecordCategories","updateRecordCategoriesByCategoryType","insertPosition","_this$record91","compoundFileOverwrite","_this$record$ancestor5","_this$record92","_this$record$id19","_this$record93","fileId","uploadCompoundDocumentFile","insertBeforePage","enqueue","comments","updatedRecordInfo","hasVersionChanged","recordModel","ChangedRecordInfoModel","postMessage","hasNewFiles","onAgendaPacketOptionsChanged","isReferOrDefer","_this$movedRecord$mov","_this$movedRecord3","moveType","isAllowedCommitReferDefer","_this$record$recordTy12","_this$record94","enableCommitReferDefer","_this$movedRecord4","_this$movedRecord$rec3","_this$movedRecord5","_this$record$id20","_this$record95","_this$movedRecord$rec4","_this$record96","templateIndex","_this$sourceRecord","_this$sourceRecord$id","_this$sourceRecord2","_this$destinationReco","_this$destinationReco2","_result$data$id","_result$data","sourceId","destinationId","referAgendaItem","clearSavedRecord","_this$sourceRecord3","_this$sourceRecord$id2","_this$sourceRecord4","_this$destinationReco3","_this$destinationReco4","_this$sourceRecord5","deferAgendaItem","onUploadFileChanged","onCheckInOptionChanged","onReindexAction","closeReIndexDialog","_this$record$id21","_this$record97","_ref2","_this$record98","Reindex","isDocument","_ref3","_this$projectNew$reco","_this$projectNew5","_this$currentRecord4","_this$projectNew6","_this$projectNew7","_ref4","_this$projectNew$temp2","_this$projectNew8","_this$projectNewTempl2","_this$projectNew9","projectId","projectTemplate","_this$recordNewCatego8","_workflow$startProjec2","_this$recordNewCatego9","_this$recordNewCatego10","_workflow$template$id2","_workflow$template2","_definition$runOnlyOn","_definition2","_definition$startProj","_definition3","definition","_await$getCategoryPro","_definition","getCategoryProjectTemplateDefinition","prepareNewProject","_this$$refs$formNewPr","showPredefinedProjectTemplate","setCurrentTab","onNewRecord","onSubmitAgendaItems","onRecallAgendaItems","closeSubmitRecallAgendaItemsDialog","_this$record$id22","_this$record99","_this$record100","isSubmitOperation","watch","visibleUploadFilePopoverMenu","newValue","oldValue","checkInFileOption","defaultCheckInFileOption","_newValue$recordTypeI","_oldValue$recordTypeI","_this$record103","_this$$router$current","_this$$router","_this$appendRecords","_this$record$recordTy13","_this$record101","_this$record$recordTy14","_this$record102","currentRoute","params","expandedId","appendRecords","_this$recordNewCatego11","_this$recordNewCatego12","_this$recordNewCatego13","_this$recordNewCatego14","_definition$runOnlyOn2","_definition5","_definition$startProj2","_definition6","projectTemplateId","_await$getCategoryPro2","_definition4","$mainAppChannel","onmessage","async","_message$data","message","onRecordChanged","factory","prop","event","required","$emit","freeze","description","iconPostMeeting","iconUnPostMeeting","find","elevation","computedElevation","isNaN","parseInt","moduleItemNavigatable","canNavigateToModuleRecord","createModuleRecordRouteLocation","isRecordExpandable","canNavigateToModuleChildRecord","canNavigateToChildRecordById","createModuleChildRecordRouteLocationById","appModuleName","createModuleChildRecordContentRouteLocation","_record$isLink","_record$parentId","_record$id3","_record$parentId2","createModuleChildRecordShortcutContentRouteLocation","_record$id4","_record$parentId3","canNavigateToModuleChildRecordById","pattern","styleList","styleProp","parseStyle","styleMap","s","trim","camelize","mergeTarget","i","arguments","keys","mergeClasses","mergeStyles","mergeListeners","target","source","wrapInArray","args","arg","appMixin","routerMixin","publicAccessMixin","commandSelectRecordIconName","iconJumpToFolder","visibleJumpToFile","isPublicAccess","publicAccess","modules","visibleFolder","folderModuleRecordRouteLocation","moduleNames","Folder","canNavigateToFolderModuleRecord","canNavigateToFolderModuleRecordById","canNavigateToFolderModuleChildRecordById","canNavigateToModuleItemByModuleItemId","tooltipNavigateToRecord","commandSelectRecordLabel","availableProps","right","selected","filterObjectOnKeys"],"mappings":"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","file":"js/chunk-1916b671.2805f49e.js","sourcesContent":["import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\nimport { getSlot } from '../../util/helpers'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return getSlot(this, 'progress') || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","// model\r\nimport {\r\n agendaMeetingOperation,\r\n findAgendaMeetingOperation\r\n} from \"@/model/agenda/meeting/agendaMeetingModel\";\r\nimport { recordType } from \"@/model/record/recordModel\";\r\nimport {\r\n agendaItemOperation,\r\n findAgendaItemOperation\r\n} from \"@/model/agenda/item/agendaItemModel\";\r\n\r\n// services\r\nimport { isAllowedAuthor } from \"@/services/config/configService\";\r\nimport { findOperation } from \"@/services/record/recordCommonService\";\r\n\r\n/**\r\n * Determines whether Command of an Agenda Meeting should be visible\r\n * @param {{id:number, name:string, recordTypeId:number, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {string} operation Record Operation\r\n * @return {Boolean|boolean} true if Command of Agenda Meeting should be visible\r\n */\r\nconst visibleAgendaMeetingCommandOperation = (record, operation) => {\r\n return isSupportedAgendaMeetingOperation(record, operation)\r\n ? isAllowedAgendaMeetingOperation(record, operation)\r\n : false;\r\n};\r\n\r\n/**\r\n * Determines whether Command of an Agenda Meeting should be enabled\r\n * @param {{id:number, name:string, recordTypeId:number, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {string} operation\r\n * @return {Boolean|boolean} true if Command of Agenda Meeting should be enabled\r\n */\r\nconst enableAgendaMeetingCommandOperation = (record, operation) => {\r\n return (\r\n visibleAgendaMeetingCommandOperation(record, operation) &&\r\n isValidAgendaMeetingOperation(record, operation)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether Command of an Agenda Item should be visible\r\n * @param {{id:number, name:string, recordTypeId:number, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {string} operation Record Operation\r\n * @return {Boolean|boolean} true if Command of Agenda Item should be visible\r\n */\r\nconst visibleAgendaItemCommandOperation = (record, operation) => {\r\n return isSupportedAgendaItemOperation(record, operation)\r\n ? isAllowedAgendaItemOperation(record, operation)\r\n : false;\r\n};\r\n\r\n/**\r\n * Determines whether Command of an Agenda Item should be enabled\r\n * @param {{id:number, name:string, recordTypeId:number, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {string} operation\r\n * @return {Boolean|boolean} true if Command of Agenda Item should be enabled\r\n */\r\nconst enableAgendaItemCommandOperation = (record, operation) => {\r\n return (\r\n visibleAgendaItemCommandOperation(record, operation) &&\r\n isValidAgendaItemOperation(record, operation)\r\n );\r\n};\r\n\r\n/**\r\n * Determine whether current user (principal) is allowed to perform specified Agenda Meeting Operation\r\n * @param record\r\n * @param {String|string} operation name\r\n * @return {Boolean|boolean} true if current user (principal) is allowed to perform specified Agenda Meeting Operation\r\n */\r\nconst isAllowedAgendaMeetingOperation = (record, operation) => {\r\n return findOperation(record?.meetingOperations, operation)?.allowed ?? false;\r\n};\r\n\r\n/**\r\n * Determine whether current user (principal) is allowed to perform specified Agenda Item Operation\r\n * @param record\r\n * @param {String|string} operation name\r\n * @return {Boolean|boolean} true if current user (principal) is allowed to perform specified Agenda Item Operation\r\n */\r\nconst isAllowedAgendaItemOperation = (record, operation) => {\r\n return (\r\n findOperation(record?.agendaItemOperations, operation)?.allowed ?? false\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether provided Agenda meeting operation is supported\r\n * @param {{id:number, name:string, recordTypeId:number, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {string} operation record Operation\r\n * @return {boolean|Boolean} true if provided Agenda meeting operation is supported\r\n */\r\nconst isSupportedAgendaMeetingOperation = (record, operation) => {\r\n const op = findAgendaMeetingOperation(operation);\r\n if (!op) return false;\r\n\r\n switch (op.name) {\r\n case agendaMeetingOperation.post: {\r\n return supportAgendaMeetingPost(record);\r\n }\r\n case agendaMeetingOperation.unpost: {\r\n return supportAgendaMeetingUnPost(record);\r\n }\r\n case agendaMeetingOperation.publish: {\r\n return supportAgendaMeetingPublish(record);\r\n }\r\n case agendaMeetingOperation.unpublish: {\r\n return supportAgendaMeetingUnPublish(record);\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Determines whether provided Agenda Item operation is supported\r\n * @param {{id:number, name:string, recordTypeId:number, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {string} operation record Operation\r\n * @return {boolean|Boolean} true if provided Agenda item operation is supported\r\n */\r\nconst isSupportedAgendaItemOperation = (record, operation) => {\r\n const op = findAgendaItemOperation(operation);\r\n if (!op) return false;\r\n\r\n switch (op.name) {\r\n case agendaItemOperation.defer: {\r\n return supportAgendaItemDefer(record);\r\n }\r\n case agendaItemOperation.refer: {\r\n return supportAgendaItemRefer(record);\r\n }\r\n case agendaItemOperation.recall: {\r\n return supportAgendaItemRecall(record);\r\n }\r\n case agendaItemOperation.submit: {\r\n return supportAgendaItemSubmit(record);\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Post Agenda Meeting\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Post Agenda Meeting\r\n */\r\nconst supportAgendaMeetingPost = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.MEETING;\r\n\r\n/**\r\n * Determines whether specified record supports Un-Post Agenda Meeting\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Un-Post Agenda Meeting\r\n */\r\nconst supportAgendaMeetingUnPost = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.MEETING;\r\n\r\n/**\r\n * Determines whether specified record supports Publish Agenda Meeting\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Publish Agenda Meeting\r\n */\r\nconst supportAgendaMeetingPublish = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.MEETING;\r\n\r\n/**\r\n * Determines whether specified record supports Un-Publish Agenda Meeting\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Un-Publish Agenda Meeting\r\n */\r\nconst supportAgendaMeetingUnPublish = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.MEETING;\r\n\r\n/**\r\n * Determines whether specified record supports Refer Agenda Item\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Refer Agenda Item\r\n */\r\nconst supportAgendaItemRefer = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM;\r\n\r\n/**\r\n * Determines whether specified record supports Refer Agenda Item\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Refer Agenda Item\r\n */\r\nconst supportAgendaItemDefer = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM;\r\n\r\n/**\r\n * Determines whether specified record supports Submit Agenda Item\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Submit Agenda Item\r\n */\r\nconst supportAgendaItemSubmit = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM;\r\n\r\n/**\r\n * Determines whether specified record supports Recall Agenda Item\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Recall Agenda Item\r\n */\r\nconst supportAgendaItemRecall = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM;\r\n\r\n/**\r\n * Determine whether operation is valid (can Agenda Meeting Operation be performed under current circumstances)\r\n * @param record\r\n * @param {String|string} operation\r\n * @return {Boolean|boolean} true if Agenda Meeting Operation can be performed under current circumstances\r\n */\r\nconst isValidAgendaMeetingOperation = (record, operation) => {\r\n return findOperation(record?.meetingOperations, operation)?.valid ?? false;\r\n};\r\n\r\n/**\r\n * Determine whether operation is valid (can Agenda Item Operation be performed under current circumstances)\r\n * @param record\r\n * @param {String|string} operation\r\n * @return {Boolean|boolean} true if Agenda Item Operation can be performed under current circumstances\r\n */\r\nconst isValidAgendaItemOperation = (record, operation) => {\r\n return findOperation(record?.agendaItemOperations, operation)?.valid ?? false;\r\n};\r\n\r\nexport {\r\n visibleAgendaMeetingCommandOperation,\r\n enableAgendaMeetingCommandOperation,\r\n visibleAgendaItemCommandOperation,\r\n enableAgendaItemCommandOperation,\r\n isAllowedAgendaItemOperation,\r\n isValidAgendaMeetingOperation,\r\n isValidAgendaItemOperation\r\n};\r\n","import {\r\n Color,\r\n colorMD,\r\n variantNumber,\r\n variantType\r\n} from \"@/design/colors/Color\";\r\n\r\n/**\r\n * Get Material Design folder Color\r\n * @returns {{name:string, variant: string, variantNumber:number}}\r\n */\r\nconst folderColor = new Color(\r\n colorMD.yellow,\r\n variantType.darken,\r\n variantNumber.n2\r\n);\r\n\r\n/**\r\n * Get Material Design compound document Color\r\n */\r\nconst documentColor = new Color(\r\n colorMD.indigo,\r\n variantType.darken,\r\n variantNumber.n1\r\n);\r\n\r\n/**\r\n * Folder Color Class\r\n * @returns {string|*}\r\n */\r\nconst folderColorClass = folderColor.getClassColor();\r\n\r\n/**\r\n * Compound document Color Class\r\n * @type {string|*}\r\n */\r\nconst documentColorClass = documentColor.getClassColor();\r\n\r\nexport { folderColor, documentColor, folderColorClass, documentColorClass };\r\n","// model\r\nimport { recordType, findRecordTypeIcon } from \"@/model/record/recordModel\";\r\nimport {\r\n documentColorClass,\r\n folderColorClass\r\n} from \"@/model/folder/folderModel\";\r\nimport { findFileTypeIcon } from \"@/model/record/fileModel\";\r\n\r\n// mixins\r\nimport { menuItemSettingsMixin } from \"../base/settings/menuItemSettingsMixin\";\r\n\r\nexport const recordIconMixin = {\r\n mixins: [menuItemSettingsMixin],\r\n methods: {\r\n /**\r\n * Get record Icon name\r\n * @param {{recordTypeId:number, children:number, extension:string}} record\r\n * @return {string|string}\r\n */\r\n recordIcon(record) {\r\n if (!record) {\r\n return undefined;\r\n }\r\n switch (record.recordTypeId) {\r\n // case recordType.FOLDER:\r\n // case recordType.DOCUMENT: {\r\n // return (record?.children ?? 0) > 0\r\n // ? iconFolderPlus\r\n // : findRecordTypeIcon(type);\r\n // }\r\n // case recordType.SECTION: {\r\n // return (record?.children ?? 0) > 0\r\n // ? iconAgendaSectionPlus\r\n // : findRecordTypeIcon(type);\r\n // }\r\n case recordType.FILE: {\r\n return findFileTypeIcon(record.extension);\r\n }\r\n default: {\r\n return findRecordTypeIcon(record.recordTypeId);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Get record Type Icon\r\n * @param {Number|number} typeId\r\n * @return {string}\r\n */\r\n recordTypeIcon(typeId) {\r\n return findRecordTypeIcon(typeId);\r\n },\r\n\r\n /**\r\n * Get record Icon Color Class\r\n * @param {{recordTypeId:number}} record\r\n * @return {undefined|string}\r\n */\r\n recordIconColorClass(record) {\r\n return record\r\n ? this.recordTypeIconColorClass(\r\n record?.recordTypeId ?? recordType.RECORD\r\n )\r\n : undefined;\r\n },\r\n\r\n /**\r\n * record Type Icon Color Class\r\n * @param {Number|number} typeId\r\n * @return {undefined|string}\r\n */\r\n recordTypeIconColorClass(typeId) {\r\n switch (typeId) {\r\n case recordType.FOLDER:\r\n case recordType.MEETING:\r\n case recordType.SECTION:\r\n case recordType.ITEM: {\r\n return folderColorClass;\r\n }\r\n case recordType.DOCUMENT: {\r\n return documentColorClass;\r\n }\r\n case recordType.RECORD: {\r\n return undefined;\r\n }\r\n default: {\r\n return this.menuItemColorClass;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","// design\r\nimport { Color } from \"@/design/colors/Color\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapGetters } = createNamespacedHelpers(\"solution\");\r\n\r\n/**\r\n * Delete Settings Mixin encapsulate delete Settings logic\r\n */\r\nexport const deleteSettingsMixin = {\r\n computed: {\r\n ...mapGetters({\r\n deleteColor: \"deleteColor\"\r\n }),\r\n /**\r\n * Get Delete color (implementation of Material Design)\r\n * @returns {Color}\r\n */\r\n mdDeleteColor() {\r\n return new Color(\r\n this.deleteColor.name,\r\n this.deleteColor.variantType,\r\n this.deleteColor.variantNumber\r\n );\r\n },\r\n /**\r\n * Get Delete color class\r\n * @returns {string|*}\r\n */\r\n deleteColorClass() {\r\n return this.mdDeleteColor.getClassColor();\r\n }\r\n }\r\n};\r\n","import Vue from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType & ((val: any, oldVal: any) => void) {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary,\n listeners$: {} as Dictionary,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[vnode.context!._uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![vnode.context!._uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n const observe = el._observe?.[vnode.context!._uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","import {\r\n agendaPacketContent,\r\n agendaPacketTabOptions\r\n} from \"@/model/agenda/agendaModel\";\r\n\r\n/**\r\n * Get Agenda Packet Numbering Options\r\n * @param optionModel {{downOptions: [{disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}], item: boolean, includeLinkBackUp: boolean, pagesSuffixValue: string, itemTitleLengthValue: string, itemTitle: boolean, pagePrefixValue: string, linkNote: string, includeLinkAgenda: boolean, upOptions: [{disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}], itemTitlePrefixValue: string, currentTab: number, pagesPrefixValue: string, includePageSeparator: boolean, numberPosition: number, linkStaticText: string, itemSuffixValue: string, pages: boolean, pageSuffixValue: string, itemPrefixValue: string, page: boolean, agendaItemTitle: string}}\r\n */\r\nconst getAgendaPacketNumberingOptions = optionModel => {\r\n const numberingOptionList = [];\r\n if (optionModel.currentTab === agendaPacketTabOptions.noNumbering)\r\n return numberingOptionList;\r\n\r\n if (optionModel.item)\r\n numberingOptionList.push(\r\n agendaPacketItemPrefix(optionModel.itemPrefixValue),\r\n agendaPacketItemSuffix(optionModel.itemSuffixValue)\r\n );\r\n\r\n if (optionModel.itemTitle)\r\n numberingOptionList.push(\r\n agendaPacketItemTitleSuffix(optionModel.itemTitlePrefixValue),\r\n agendaPacketItemTitleLength(optionModel.itemTitleLengthValue)\r\n );\r\n\r\n if (optionModel.page)\r\n numberingOptionList.push(\r\n agendaPacketPagePrefix(optionModel.pagePrefixValue),\r\n agendaPacketPageSuffix(optionModel.pageSuffixValue)\r\n );\r\n\r\n if (optionModel.pages)\r\n numberingOptionList.push(\r\n agendaPacketPageCountPrefix(optionModel.pagesPrefixValue),\r\n agendaPacketPageCountSuffix(optionModel.pagesSuffixValue)\r\n );\r\n\r\n return numberingOptionList;\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Item Prefix\r\n * @param prefix\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketItemPrefix = prefix => {\r\n return {\r\n key: agendaPacketContent.itemPrefix,\r\n value: prefix\r\n };\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Item Suffix\r\n * @param suffix\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketItemSuffix = suffix => {\r\n return {\r\n key: agendaPacketContent.itemSuffix,\r\n value: suffix\r\n };\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Item Title Suffix\r\n * @param suffix\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketItemTitleSuffix = suffix => {\r\n return {\r\n key: agendaPacketContent.itemTitlePrefix,\r\n value: suffix\r\n };\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Item Title Length\r\n * @param length\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketItemTitleLength = length => {\r\n return {\r\n key: agendaPacketContent.itemTitleLength,\r\n value: length\r\n };\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Page PrefixPrefix\r\n * @param prefix\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketPagePrefix = prefix => {\r\n return {\r\n key: agendaPacketContent.pagePrefix,\r\n value: prefix\r\n };\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Page Suffix\r\n * @param suffix\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketPageSuffix = suffix => {\r\n return {\r\n key: agendaPacketContent.pageSuffix,\r\n value: suffix\r\n };\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Page Count Prefix\r\n * @param prefix\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketPageCountPrefix = prefix => {\r\n return {\r\n key: agendaPacketContent.pageCountPrefix,\r\n value: prefix\r\n };\r\n};\r\n\r\n/**\r\n * Get Agenda Packet Page Count Suffix\r\n * @param suffix\r\n * @return {{value, key: string}}\r\n */\r\nconst agendaPacketPageCountSuffix = suffix => {\r\n return {\r\n key: agendaPacketContent.pageCountSuffix,\r\n value: suffix\r\n };\r\n};\r\n\r\nexport { getAgendaPacketNumberingOptions };\r\n","/**\r\n * Implemented Javascript ECMAScript 2021 (Nullish Coalescing & Equals)\r\n */\r\n\r\n// services\r\nimport {\r\n enableRecordCommandOperation,\r\n fullRecordName,\r\n getRecordTypeName,\r\n isAllowedOperation,\r\n isDocumentAssemblyEvent,\r\n isRecordOperationDanger,\r\n isValidOperation,\r\n supportDownload,\r\n supportEmail,\r\n supportPrint,\r\n visibleRecordCommandOperation\r\n} from \"@/services/record/recordService\";\r\nimport {\r\n enableAgendaMeetingCommandOperation,\r\n visibleAgendaMeetingCommandOperation,\r\n enableAgendaItemCommandOperation,\r\n visibleAgendaItemCommandOperation\r\n} from \"@/services/agenda/agendaRecordService\";\r\n\r\n// model\r\nimport { recordMode, recordOperation } from \"@/model/record/recordModel\";\r\nimport { agendaDocumentType } from \"@/model/agenda/agendaModel\";\r\n\r\n// mixins\r\nimport { snackbarableMixin } from \"@/mixins/shared/snackbarable/snackbarableMixin\";\r\nimport { recordIconMixin } from \"@/mixins/shared/record/recordIconMixin\";\r\n\r\n/**\r\n * Record Detail Mixin:\r\n * Description: defines basic Record Details interface & implementation\r\n */\r\nexport const recordDetailMixin = {\r\n mixins: [snackbarableMixin, recordIconMixin],\r\n components: {\r\n FormRecord: () => import(\"@/components/record/FormRecord\"),\r\n RecordDetailsBanner: () => import(\"@/components/record/RecordDetailsBanner\")\r\n },\r\n data() {\r\n return {\r\n isValidFormRecord: true,\r\n recordOperation: recordOperation,\r\n agendaDocumentType: agendaDocumentType\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Current selected record.\r\n * Abstract computed\r\n * @return {{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}}, recordEventModel: {recordEventType: Number, recordAncestorEventType: Number}, 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 return undefined;\r\n },\r\n\r\n /**\r\n * current Record File Version\r\n * Abstract computed\r\n * @return {{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 recordFileVersion() {\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Current record Mode\r\n * Abstract computed\r\n * @return {number}\r\n */\r\n currentRecordMode() {\r\n return recordMode.view;\r\n },\r\n /**\r\n * Current selected record Category\r\n * Abstract computed\r\n * @return {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string, fields: {id: number, name: string, label: string, fieldDataType: number, fieldDataTypeName: string, flags:number, immutable: boolean, isPersistentField: boolean, isRequired: boolean, isSystemCategoryType: boolean, isSystemField: boolean, isVolatile: boolean, requiredForAutoFiling: boolean, sequence: number, unselectable: boolean, searchOperators: {description: string, operator: string}[], operations: {name:string, allowed:boolean, valid:boolean}[]}[], formLookup: {exists:boolean, inputMappings: {entity:string, id:number, name:string}[]}, outputMappings: {entity:string, id:number, name:string}[], workflow: {startProjectOption: {value: number, name: string}, runOnlyOneProject: boolean, template: {id: number, name: string, assignAutoToOwner: boolean, calendar: string, canReassign: boolean, comment: string, created: string, definitionId: number, description: string, isDisabled: boolean, isHidden: boolean, notifyOnAborted: boolean, notifyOnAssignment: boolean, notifyOnAvailable: boolean, notifyOnCanceled: boolean, notifyOnCompletedFailure: boolean, notifyOnCompletedSuccess: boolean, projectManager: string, role: string, workflowName: string, workflowTypeId: number, userTaskTemplates: {id: number, name: string, sequence: number, priority: number, reassignment: number, assignment: {assignee: string, fixed: boolean, method: number, roles: string}}, duration: {calendar: string, duration: string, fixed: boolean, milestone: boolean}}}}}}\r\n */\r\n recordCategory() {\r\n console.warn(`Abstract recordCategory called`);\r\n return undefined;\r\n },\r\n /**\r\n * Get Record id\r\n * @return {number|number}\r\n */\r\n id() {\r\n return this.record?.id ?? -1;\r\n },\r\n /**\r\n * Get/Set Record name\r\n */\r\n name: {\r\n /** Get Record name\r\n * @return {string}\r\n */\r\n get() {\r\n return this.record?.name ?? \"\";\r\n },\r\n /**\r\n * Set Record name\r\n * @param {string} value\r\n */\r\n set(value) {\r\n if (this.record) {\r\n this.record.name = value || \"\";\r\n }\r\n }\r\n },\r\n\r\n /** Record Type name\r\n * @return {string}\r\n */\r\n recordTypeName() {\r\n return this.record?.recordType ?? getRecordTypeName(this.record);\r\n },\r\n\r\n /**\r\n * record Type id\r\n * @return {Number|number}\r\n */\r\n recordTypeId() {\r\n return this.record?.recordTypeId ?? -1;\r\n },\r\n\r\n /**\r\n * record Ancestor Type id\r\n * @return {Number|number}\r\n */\r\n recordAncestorTypeId() {\r\n return this.record?.ancestor?.recordType?.id ?? -1;\r\n },\r\n\r\n isReadOnly() {\r\n return this.record?.isReadOnly ?? false;\r\n },\r\n isDraft() {\r\n return this.record?.isDraft ?? false;\r\n },\r\n isLocked() {\r\n return this.record?.isLocked ?? false;\r\n },\r\n isLink() {\r\n return this.record?.isLink ?? false;\r\n },\r\n isDeleted() {\r\n return this.record?.isDeleted ?? false;\r\n },\r\n isComposite() {\r\n return this.record?.isComposite ?? false;\r\n },\r\n /**\r\n * Get Record Title\r\n * @return {string|string}\r\n */\r\n title() {\r\n return fullRecordName(this.record);\r\n },\r\n /**\r\n * Get full record name (record Type & Record Title)\r\n * @return {string}\r\n */\r\n fullRecordName() {\r\n return `${getRecordTypeName(this.record)} ${fullRecordName(this.record)}`;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Determine whether current user (principal) is allowed to perform specified record operation\r\n * @param {String|string} operation\r\n * @return {Boolean|boolean} true if current user (principal) is allowed to perform record operation\r\n */\r\n isAllowedOperation(operation) {\r\n return isAllowedOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Determines whether Command of current Record Operation should be visible\r\n * @param {string} operation Record operation\r\n * @return {Boolean|boolean} true if Command of current Record Operation should be visible\r\n */\r\n visibleRecordCommandOperation(operation) {\r\n return visibleRecordCommandOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Determines whether Command of a Record Operation should be enabled\r\n * @param {string} operation Record operation\r\n * @return {Boolean|boolean} true if Command of current Record Operation should be enabled\r\n */\r\n enableRecordCommandOperation(operation) {\r\n return enableRecordCommandOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Determine whether operation is valid (can operation be performed)\r\n * @param {string} operation\r\n * @return {Boolean|boolean} true if current record operation is valid (operation can be performed)\r\n */\r\n isValidOperation(operation) {\r\n switch (operation) {\r\n case recordOperation.Print: {\r\n if (!supportPrint(this.record)) {\r\n return false;\r\n }\r\n break;\r\n }\r\n case recordOperation.Download: {\r\n if (!supportDownload(this.record)) {\r\n return false;\r\n }\r\n break;\r\n }\r\n case recordOperation.Email: {\r\n if (!supportEmail(this.record)) {\r\n return false;\r\n }\r\n break;\r\n }\r\n }\r\n return isValidOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Determines whether Agenda Meeting Command of a Record Operation should be enabled\r\n * @param {string} operation Record operation\r\n * @return {Boolean|boolean} true if Command of current Record Operation should be enabled\r\n */\r\n enableAgendaMeetingCommandOperation(operation) {\r\n return enableAgendaMeetingCommandOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Determines whether Agenda Meeting Command of current Record Operation should be visible\r\n * @param {string} operation Record operation\r\n * @return {Boolean|boolean} true if Command of current Record Operation should be visible\r\n */\r\n visibleAgendaMeetingCommandOperation(operation) {\r\n if (isDocumentAssemblyEvent(this.record)) return false;\r\n return visibleAgendaMeetingCommandOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Determines whether Agenda Meeting Command of a Record Operation should be enabled\r\n * @param {string} operation Record operation\r\n * @return {Boolean|boolean} true if Command of current Record Operation should be enabled\r\n */\r\n enableAgendaItemCommandOperation(operation) {\r\n return enableAgendaItemCommandOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Determines whether Agenda Meeting Command of current Record Operation should be visible\r\n * @param {string} operation Record operation\r\n * @return {Boolean|boolean} true if Command of current Record Operation should be visible\r\n */\r\n visibleAgendaItemCommandOperation(operation) {\r\n if (isDocumentAssemblyEvent(this.record)) return false;\r\n return visibleAgendaItemCommandOperation(this.record, operation);\r\n },\r\n\r\n /**\r\n * Verify if Executed action needs red icon\r\n * @param {String|string} operation Record Operation name\r\n */\r\n isRecordOperationDanger(operation) {\r\n return isRecordOperationDanger(operation);\r\n }\r\n }\r\n};\r\n","// services\r\nimport { notImplementedMethod } from \"@/services/error/errorMessages\";\r\nimport { isAllowedAuthor } from \"@/services/config/configService\";\r\nimport {\r\n copyAgendaTemplateRecord,\r\n duplicateRecord,\r\n editRecord,\r\n editRecordVersion,\r\n fullRecordName,\r\n fullRecordVersionName,\r\n IsCheckedOutForDigitalSigningByPrinciple,\r\n isCompoundDocument,\r\n isCompoundFile,\r\n isDirectUploadAllowed,\r\n isDocumentAssemblyEvent,\r\n newRecord,\r\n recordOperationIcon,\r\n recordOperationLabel,\r\n recordOperationTooltip\r\n} from \"@/services/record/recordService\";\r\nimport { getAgendaPacketNumberingOptions } from \"@/services/agenda/agendaPacketService\";\r\nimport {\r\n getNewProjectUserTasks,\r\n prepareNewProject\r\n} from \"@/services/project/projectService\";\r\n\r\n// model\r\nimport {\r\n contextMenuRecordOperation,\r\n findRecordMode,\r\n findRecordOperation,\r\n findRecordState,\r\n findRecordType,\r\n recordMode,\r\n recordOperation,\r\n recordOperations,\r\n recordState,\r\n recordType\r\n} from \"@/model/record/recordModel\";\r\nimport {\r\n CheckInOptionModel,\r\n createCheckInOption,\r\n UploadOptionModel\r\n} from \"@/model/record/checkInModel\";\r\nimport {\r\n canEditFileVersionInDocumentEditor,\r\n ChangedRecordInfoModel\r\n} from \"@/model/viewer/viewerFileModel\";\r\nimport {\r\n agendaDocumentType,\r\n agendaItemTabOption,\r\n agendaMeetingTabOption,\r\n agendaMeetingTabOptions,\r\n AgendaPacketQueryModel,\r\n agendaPacketTabOptions,\r\n agendaSectionTabOption,\r\n createAgendaPacketOption,\r\n findAgendaDocumentType\r\n} from \"@/model/agenda/agendaModel\";\r\nimport {\r\n createActionResultError,\r\n createActionResultSuccess\r\n} from \"@/model/action/actionModel\";\r\nimport { categoryType } from \"@/model/category/categoryModel\";\r\nimport {\r\n agendaMeetingOperation,\r\n agendaMeetingOperations\r\n} from \"@/model/agenda/meeting/agendaMeetingModel\";\r\nimport {\r\n agendaItemOperation,\r\n agendaItemOperations,\r\n findAgendaItemOperation\r\n} from \"@/model/agenda/item/agendaItemModel\";\r\nimport {\r\n projectLabel,\r\n projectValidationColorClass,\r\n startProjectOption\r\n} from \"@/model/workflow/project/projectModel\";\r\n\r\n// utils\r\nimport { cloneDeep } from \"@/utils\";\r\n\r\n// design\r\nimport {\r\n iconAcquire,\r\n iconAdd,\r\n iconAgendaItem,\r\n iconAgendaSection,\r\n iconAsterisk,\r\n iconCheck,\r\n iconClose,\r\n iconDocument,\r\n iconDotsHorizontal,\r\n iconDownload,\r\n iconDraft,\r\n iconEdit,\r\n iconError,\r\n iconEvent,\r\n iconFileCheckIn,\r\n iconFileEdit,\r\n iconFileRelease,\r\n iconFileView,\r\n iconFolder,\r\n iconFolderMultiple,\r\n iconLink,\r\n iconLock,\r\n iconPaste,\r\n iconProjects,\r\n iconQuestion,\r\n iconReadOnly,\r\n iconRecall,\r\n iconRecord,\r\n iconRecordMultiple,\r\n iconReindex,\r\n iconSave,\r\n iconScanner,\r\n iconSubmit,\r\n iconTrash,\r\n iconUndo,\r\n iconUnLock,\r\n iconUploadFile,\r\n iconWarning\r\n} from \"@/design/icon/iconConst\";\r\n\r\nimport { getCategoryProjectTemplateDefinition } from \"@/services/api/apiContent\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\n// mixins\r\nimport { recordDetailMixin } from \"@/mixins/shared/record/recordDetailMixin\";\r\nimport { menuItemSettingsMixin } from \"@/mixins/shared/base/settings/menuItemSettingsMixin\";\r\nimport { buttonSettingsMixin } from \"@/mixins/shared/base/settings/buttonSettingsMixin\";\r\nimport { deleteSettingsMixin } from \"@/mixins/shared/base/settings/deleteSettingsMixin\";\r\nimport { fileCheckInMixin } from \"@/mixins/shared/file/fileCheckInMixin\";\r\nimport { folderRecordNavigatable } from \"@/mixins/shared/navigatable/folderRecordNavigatable\";\r\nimport { reactiveMixin } from \"@/mixins/shared/reactive/reactiveMixin\";\r\nimport { userMixin } from \"@/mixins/shared/user/userMixin\";\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\nimport { broadcastMixin } from \"@/mixins/shared/broadcast/broadcastMixin\";\r\nimport { moduleRecordNavigatable } from \"@/mixins/shared/navigatable/moduleRecordNavigatable\";\r\nimport { createDocumentViewerRoute } from \"@/router/document/documentRoutes\";\r\nimport { isAllowedAgendaItemOperation } from \"@/services/agenda/agendaRecordService\";\r\n\r\nconst { mapGetters } = createNamespacedHelpers(\"user\");\r\nconst { mapActions } = createNamespacedHelpers(\"agenda\");\r\n\r\n/**\r\n * Record Detail Action Mixin:\r\n * Description: defines basic Record Details interface & implementation\r\n */\r\nexport const recordDetailActionMixin = {\r\n mixins: [\r\n recordDetailMixin,\r\n menuItemSettingsMixin,\r\n buttonSettingsMixin,\r\n deleteSettingsMixin,\r\n fileCheckInMixin,\r\n folderRecordNavigatable,\r\n reactiveMixin,\r\n userMixin,\r\n principalMixin,\r\n broadcastMixin,\r\n moduleRecordNavigatable\r\n ],\r\n components: {\r\n BaseDropDownMenuButton: () =>\r\n import(\"@/components/shared/base/BaseDropDownMenuButton\"),\r\n BaseMenuItem: () => import(\"@/components/shared/base/BaseMenuItem\"),\r\n BaseButton: () => import(\"@/components/shared/base/BaseButton\"),\r\n BaseTooltipButton: () =>\r\n import(\"@/components/shared/base/BaseTooltipButton\"),\r\n LayoutPopoverMenu: () =>\r\n import(\"@/components/shared/core/layout/menu/LayoutPopoverMenu\"),\r\n ExpansionPanelsLayout: () =>\r\n import(\"@/components/shared/core/expansionPanel/ExpansionPanelsLayout\"),\r\n RecordBadgeIcon: () => import(\"@/components/record/RecordBadgeIcon\"),\r\n DialogOutline: () =>\r\n import(\"@/components/shared/core/dialogs/DialogOutline\"),\r\n PromptWithProgress: () =>\r\n import(\"@/components/shared/core/progress/PromptWithProgress\"),\r\n DocumentScan: () => import(\"@/views/document/DocumentScan\"),\r\n DocumentViewer: () => import(\"@/views/document/DocumentViewer\"),\r\n BaseAlert: () => import(\"@/components/shared/base/BaseAlert\"),\r\n RadioGroup: () => import(\"@/components/shared/core/radio/RadioGroup\"),\r\n ProgressDisplay: () =>\r\n import(\"@/components/shared/core/progress/ProgressDisplay\"),\r\n DocumentEditorDialog: () =>\r\n import(\"@/components/shared/core/dialogs/DocumentEditorDialog\"),\r\n DefaultPdfViewerDialog: () =>\r\n import(\"@/components/shared/core/dialogs/DefaultPdfViewerDialog\"),\r\n BaseCheckInOption: () =>\r\n import(\"@/components/shared/core/checkIn/CheckInOption\"),\r\n CheckInDialog: () =>\r\n import(\"@/components/shared/core/dialogs/CheckInDialog\"),\r\n ReleaseDialog: () =>\r\n import(\"@/components/shared/core/dialogs/ReleaseDialog\"),\r\n DownloadFileDialog: () =>\r\n import(\"@/components/shared/core/dialogs/DownloadFileDialog\"),\r\n PrintFileDialog: () =>\r\n import(\"@/components/shared/core/dialogs/PrintFileDialog\"),\r\n DeleteRecordDialog: () =>\r\n import(\"@/components/shared/core/dialogs/DeleteRecordDialog\"),\r\n DocumentLink: () => import(\"@/components/shared/core/link/DocumentLink\"),\r\n ImportFilePopoverMenu: () =>\r\n import(\"@/components/shared/core/menu/popover/ImportFilePopoverMenu\"),\r\n UploadCompoundDocumentDialog: () =>\r\n import(\"@/components/shared/core/dialogs/UploadCompoundDocumentDialog\"),\r\n AgendaItemReferDialog: () =>\r\n import(\"@/components/agenda/dialogs/AgendaItemReferDialog.vue\"),\r\n AgendaItemDeferDialog: () =>\r\n import(\"@/components/agenda/dialogs/AgendaItemDeferDialog.vue\"),\r\n ReIndexDialog: () =>\r\n import(\"@/components/shared/core/dialogs/ReIndexDialog\"),\r\n FormNewProject: () => import(\"@/components/project/new/FormNewProject\"),\r\n DetailsBannerLayout: () =>\r\n import(\"@/components/shared/core/banners/DetailsBannerLayout\"),\r\n AgendaTabsContent: () =>\r\n import(\"@/components/shared/core/agenda/AgendaTabsContent\"),\r\n SubmitRecallAgendaItemsDialog: () =>\r\n import(\"@/components/shared/core/dialogs/SubmitRecallAgendaItemsDialog\")\r\n },\r\n data() {\r\n return {\r\n // Record Operation icons\r\n iconDownload: iconDownload,\r\n iconAdd: iconAdd,\r\n iconFolder: iconFolder,\r\n iconFolderMultiple: iconFolderMultiple,\r\n iconDocument: iconFolder,\r\n iconRecord: iconRecord,\r\n iconRecordMultiple: iconRecordMultiple,\r\n iconEdit: iconEdit,\r\n iconSave: iconSave,\r\n iconUndo: iconUndo,\r\n iconTrash: iconTrash,\r\n iconLock: iconLock,\r\n iconUnLock: iconUnLock,\r\n iconReadOnly: iconReadOnly,\r\n iconDraft: iconDraft,\r\n iconLink: iconLink,\r\n iconProjects: iconProjects,\r\n iconFileCheckIn: iconFileCheckIn,\r\n iconAcquire: iconAcquire,\r\n iconUploadFile: iconUploadFile,\r\n iconScanner: iconScanner,\r\n iconAsterisk: iconAsterisk,\r\n iconQuestion: iconQuestion,\r\n iconError: iconError,\r\n iconClose: iconClose,\r\n iconValidate: iconCheck,\r\n iconFileRelease: iconFileRelease,\r\n iconFileEdit: iconFileEdit,\r\n iconFileView: iconFileView,\r\n iconPaste: iconPaste,\r\n iconReindex: iconReindex,\r\n iconMore: iconDotsHorizontal,\r\n iconWarning: iconWarning,\r\n iconDocumentAssembly: iconDocument,\r\n iconSubmit: iconSubmit,\r\n iconRecall: iconRecall,\r\n\r\n recordTypes: recordType,\r\n\r\n // Agenda\r\n iconAgendaMeeting: iconEvent,\r\n iconAgendaItem: iconAgendaItem,\r\n iconAgendaSection: iconAgendaSection,\r\n agendaPacketModel: createAgendaPacketOption(),\r\n agendaItemOperation: agendaItemOperation,\r\n\r\n // workflow\r\n iconWFProject: iconProjects,\r\n\r\n // Check In File\r\n visibleCheckInFileProgress: false,\r\n visibleCheckInFilePopoverMenu: false,\r\n\r\n // Delete record\r\n visibleDialogDelete: false,\r\n visibleDeleteProgress: false,\r\n deleteError: undefined,\r\n\r\n /**\r\n * alert in\r\n * @type {{type: string, message: string, dismissible: boolean}}\r\n */\r\n alertIn: undefined,\r\n\r\n isLoadingCreateRecord: false,\r\n isLoadingSaveRecord: false,\r\n\r\n loadingCategory: false,\r\n loadingFieldValueId: -1,\r\n\r\n // edit/wip Record/File/Document\r\n visibleDocumentEditorDialog: false,\r\n loadingDatabaseLookupData: false,\r\n\r\n visibleDefaultPdfViewerDialog: false,\r\n\r\n openScanDialog: false,\r\n\r\n // check in Variables\r\n visibleCheckInDialog: false,\r\n visibleDialogRelease: false,\r\n\r\n // Download/Print/Email\r\n visibleDownloadFileDialog: false,\r\n visiblePrintFileDialog: false,\r\n isEmail: false,\r\n\r\n //CompoundDocument\r\n visibleUploadCompoundDocumentDialog: false,\r\n\r\n isFileChanged: true,\r\n filePageCount: -1,\r\n\r\n // Meeting agenda\r\n agendaTemplate: undefined,\r\n agendaItemTemplate: undefined,\r\n\r\n agendaItemTemplates: [],\r\n agendaSectionTemplates: [],\r\n isDocumentAssembly: false,\r\n isRecallOperation: false,\r\n visibleSubmitRecallAgendaItemsDialog: false,\r\n\r\n categoryTypeId: -1,\r\n checkInOptionModel: createCheckInOption(),\r\n uploadedFile: undefined,\r\n\r\n /**\r\n * @type {{type: number, label: string, description: string, categoryType: number, icon: string}}\r\n */\r\n newAgendaDocumentType: undefined,\r\n sourceRecord: undefined,\r\n destinationRecord: undefined,\r\n visibleReferDialog: false,\r\n visibleDeferDialog: false,\r\n acquireNewFile: false,\r\n visibleReindexDialog: false,\r\n\r\n // workflow project\r\n isNewRecordProject: false,\r\n isValidFormNewProject: true,\r\n validProjectTasks: true,\r\n tab: null,\r\n currentTab: 0,\r\n inheritParentData: false\r\n };\r\n },\r\n computed: {\r\n ...mapGetters({ findField: \"findField\", enableWebScan: \"enableWebScan\" }),\r\n\r\n /**\r\n * is Event Document Assembly\r\n * @return {boolean}\r\n */\r\n isEventDocumentAssembly() {\r\n return isDocumentAssemblyEvent(this.record);\r\n },\r\n\r\n /**\r\n * Command Document Assembly\r\n * @return {string}\r\n */\r\n commandDocumentAssembly() {\r\n return \"Document Assembly\";\r\n },\r\n\r\n /**\r\n * agenda Meeting Actions\r\n * @return {{name: string, icon: string, description: string, label: string}[]}\r\n */\r\n agendaMeetingActions() {\r\n return (this?.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.MEETING\r\n ? agendaMeetingOperations\r\n : [];\r\n },\r\n\r\n agendaMeetingActionCount() {\r\n return this.agendaMeetingActions?.length ?? 0;\r\n },\r\n\r\n /**\r\n * Get Agenda Tabs\r\n * @return {{name: string, icon: string, type: number}[]}\r\n */\r\n agendaTabs() {\r\n return (this?.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.MEETING\r\n ? agendaMeetingTabOption\r\n : (this?.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.SECTION\r\n ? agendaSectionTabOption\r\n : agendaItemTabOption;\r\n },\r\n\r\n /**\r\n * Compute Visible Agenda Tabs\r\n * @return {boolean}\r\n */\r\n visibleAgendaTabs() {\r\n return (\r\n (this?.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.MEETING ||\r\n (this?.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.SECTION ||\r\n (this?.record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM\r\n );\r\n },\r\n\r\n /**\r\n * Compute visible Advance Agenda Tab Content\r\n * Advance Agenda Tabs includes RollCall, legislature note, clerk module\r\n * @return {boolean}\r\n */\r\n visibleAdvanceAgendaTabContent() {\r\n return (\r\n this.currentTab !== agendaMeetingTabOptions.meeting &&\r\n this.currentTab !== agendaMeetingTabOptions.section &&\r\n this.currentTab !== agendaMeetingTabOptions.item\r\n );\r\n },\r\n\r\n /**\r\n * agenda Item Actions\r\n * @return {{name: string, icon: string, description: string, label: string}[]}\r\n */\r\n agendaItemActions() {\r\n return (this?.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.ITEM\r\n ? agendaItemOperations\r\n : [];\r\n },\r\n\r\n agendaItemActionCount() {\r\n return this.agendaItemActions?.length ?? 0;\r\n },\r\n\r\n visibleAgendaOperationDivider() {\r\n return this.isEventDocumentAssembly\r\n ? false\r\n : this.agendaMeetingActionCount > 0 || this.agendaItemActionCount > 0;\r\n },\r\n\r\n /**\r\n * Determine the visibility of New Inherit Record menu item\r\n * @return {Boolean|boolean}\r\n */\r\n visibleNewInheritRecord() {\r\n return this.recordTypeId === recordType.FOLDER;\r\n },\r\n\r\n /**\r\n * source Control Actions\r\n * @return {{name: string, icon: string, label: string}[]}\r\n */\r\n sourceControlActions() {\r\n return recordOperations.filter(\r\n el =>\r\n el.name === recordOperation.CheckOut ||\r\n el.name === recordOperation.CheckOutForSign ||\r\n el.name === recordOperation.Release\r\n );\r\n },\r\n\r\n /**\r\n * record Attributes Operations\r\n * @return {{name: string, icon: string, label: string}[]}\r\n */\r\n recordAttributesOperations() {\r\n return recordOperations.filter(\r\n el =>\r\n el.name === recordOperation.Lock ||\r\n el.name === recordOperation.Unlock ||\r\n el.name === recordOperation.SetReadOnly ||\r\n el.name === recordOperation.SetDraft\r\n );\r\n },\r\n\r\n /**\r\n * record Send Operations\r\n * @return {{name: string, icon: string, label: string}[]}\r\n */\r\n recordSendOperations() {\r\n return recordOperations.filter(\r\n el =>\r\n el.name === recordOperation.Download ||\r\n el.name === recordOperation.Print ||\r\n el.name === recordOperation.Email\r\n );\r\n\r\n // not fully implemented\r\n // el.name === recordOperation.Email\r\n },\r\n\r\n /**\r\n * record Delete Operations\r\n * @return {{name: string, icon: string, label: string, tooltip: string}[]}\r\n */\r\n recordDeleteOperations() {\r\n return recordOperations.filter(el => {\r\n return (\r\n el.name === recordOperation.Delete\r\n //|| el.name === recordOperation.Purge\r\n );\r\n });\r\n },\r\n\r\n /**\r\n * is Allowed Author (still under development), so it is available for development only\r\n * @return {boolean}\r\n */\r\n isAllowedAuthor() {\r\n return isAllowedAuthor();\r\n },\r\n\r\n recordNew() {\r\n console.warn(`Abstract computed recordNew called`);\r\n return undefined;\r\n },\r\n\r\n recordNewCategory() {\r\n console.warn(`Abstract computed recordNewCategory called`);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * project New\r\n * @return {{recordId: Number, projectName: string, projectManager: string, comment: string, templateId: number, runOnlyOneProject: boolean, userTasks: {id: number, name: string, sequence: number, duration: {duration: string, calendar: string, fixed: boolean, milestone: boolean}, priority: number, reassignment: number, assignment: {assignee: string, fixed: boolean, method: number, roles: string}}[]}}\r\n */\r\n projectNew() {\r\n console.warn(`Abstract computed projectNew called`);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Template of the new project\r\n * @return {{id: number, name: string, assignAutoToOwner: boolean, calendar: string, canReassign: boolean, comment: string, created: string, definitionId: number, description: string, isDisabled: boolean, isHidden: boolean, notifyOnAborted: boolean, notifyOnAssignment: boolean, notifyOnAvailable: boolean, notifyOnCanceled: boolean, notifyOnCompletedFailure: boolean, notifyOnCompletedSuccess: boolean, projectManager: string, role: string, workflowName: string, workflowTypeId: number, userTaskTemplates: {id: number, name: string, sequence: number, priority: number, reassignment: number, assignment: {assignee: string, fixed: boolean, method: number, roles: string}}, duration: {calendar: string, duration: string, fixed: boolean, milestone: boolean}}}}\r\n */\r\n projectNewTemplate() {\r\n console.warn(\r\n `Abstract computed ${this.$options.name}.projectNewTemplate() called`\r\n );\r\n return undefined;\r\n },\r\n\r\n /**\r\n * project Header Icon Color\r\n * @return {string|undefined}\r\n */\r\n projectHeaderIconColorClass() {\r\n return projectValidationColorClass(this.isValidNewProject);\r\n },\r\n\r\n /**\r\n * project Validation Message\r\n * @return {string}\r\n */\r\n projectValidationMessage() {\r\n return \"Not valid project entries\";\r\n },\r\n\r\n /**\r\n * current 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, isDeleted: boolean, isDraft: boolean, isLocked: boolean, stateId: number, state: string, fieldValues: {id: number, name: string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id: number, sequence: number}[], operations: {name: string, allowed: boolean, valid: boolean}[]}|{id: number, name: string, categoryId: 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}}, 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, isLocked: boolean, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, stateId: number, state: string, fieldValues: {id: number, name: string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id: number, sequence: number}[], operations: {name: string, allowed: boolean, valid: boolean}[]}|*}\r\n */\r\n currentRecord() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.new:\r\n case recordMode.edit: {\r\n return this.recordNew;\r\n }\r\n default: {\r\n return this.record;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Compute If File is Checked Out For Sign\r\n * @return {boolean|boolean}\r\n */\r\n isCheckedOutForSign() {\r\n return IsCheckedOutForDigitalSigningByPrinciple(\r\n this.currentRecord,\r\n this.principal\r\n );\r\n },\r\n\r\n /**\r\n * Get a list of available record categories\r\n * @return {{id: number, name: string, formId: number, flags: number, categoryType: number, categoryTypeName: string}[]|*[]}\r\n */\r\n categories() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.edit: {\r\n return this.getUpdateRecordCategories(this.categoryTypeId);\r\n }\r\n case recordMode.new: {\r\n return this.getCreateRecordCategories(this.categoryTypeId);\r\n }\r\n default: {\r\n return this.userCategories;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * compute current Record Category\r\n * @return {{id: number, name: string, formId: number, flags: number, categoryType: number, categoryTypeName: string, fields: {id: number, name: string, label: string, fieldDataType: number, fieldDataTypeName: string, flags: number, immutable: boolean, isPersistentField: boolean, isRequired: boolean, isSystemCategoryType: boolean, isSystemField: boolean, isVolatile: boolean, requiredForAutoFiling: boolean, sequence: number, unselectable: boolean, searchOperators: {description: string, operator: string}[]}[]}|*}\r\n */\r\n currentRecordCategory() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.new:\r\n case recordMode.edit: {\r\n return this.recordNewCategory;\r\n }\r\n default: {\r\n return this.recordCategory;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * compute current Record Type name\r\n * @return {string|string}\r\n */\r\n currentRecordTypeName() {\r\n return (\r\n findRecordType(this.currentRecord?.recordTypeId ?? recordType.RECORD)\r\n ?.name ?? \"\"\r\n );\r\n },\r\n\r\n /**\r\n * current Record Mode\r\n * @return {Number|number}\r\n */\r\n currentRecordMode() {\r\n console.warn(`Abstract currentRecordMode`);\r\n return recordMode.view;\r\n },\r\n\r\n /**\r\n * current Record Mode name\r\n * @return {String|string}\r\n */\r\n recordModeName() {\r\n return (\r\n findRecordMode(this.currentRecordMode)?.name ??\r\n findRecordMode(recordMode.view).name\r\n );\r\n },\r\n\r\n /**\r\n * record Details Banner Title\r\n * @return {string}\r\n */\r\n recordDetailsBannerTitle() {\r\n return fullRecordName(this.currentRecord);\r\n },\r\n\r\n /**\r\n * compute visibility of Command New Record\r\n * @return {boolean}\r\n */\r\n visibleCommandNewRecord() {\r\n if (\r\n !(this.isAllowedAuthor && this.currentRecordMode === recordMode.view)\r\n ) {\r\n return false;\r\n }\r\n\r\n // Under compound document's files no new records\r\n if (this.recordAncestorTypeId === recordType.DOCUMENT) {\r\n return false;\r\n }\r\n\r\n // visible Command New Record only if any command below is visible\r\n return (\r\n this.visibleNewRecord(this.recordTypes.MEETING) ||\r\n this.visibleNewRecord(this.recordTypes.FOLDER) ||\r\n this.visibleNewDuplicateRecord(this.recordTypes.FOLDER) ||\r\n this.visibleNewRecord(this.recordTypes.DOCUMENT) ||\r\n this.visibleNewDuplicateRecord(this.recordTypes.DOCUMENT) ||\r\n this.visibleNewRecord(this.recordTypes.RECORD) ||\r\n this.visibleNewDuplicateRecord(this.recordTypes.RECORD) ||\r\n this.visibleNewRecord(this.recordTypes.SECTION) ||\r\n this.visibleNewRecord(this.recordTypes.ITEM) ||\r\n this.visibleNewAgendaDocument()\r\n );\r\n },\r\n\r\n /**\r\n * Determine Command Acquire visibility\r\n * @return {boolean}\r\n */\r\n visibleCommandAcquireRecord() {\r\n return (\r\n this.isAllowedAuthor &&\r\n this.currentRecordMode === recordMode.view &&\r\n !(\r\n this.recordTypeId === recordType.MEETING ||\r\n this.recordTypeId === recordType.SECTION ||\r\n (this.recordTypeId === recordType.FILE &&\r\n this.recordAncestorTypeId === recordType.MEETING)\r\n )\r\n );\r\n },\r\n\r\n /**\r\n * visible Command Record Actions\r\n * @return {boolean} true if visible\r\n */\r\n visibleCommandRecordActions() {\r\n return this.isAllowedAuthor && this.currentRecordMode === recordMode.view;\r\n },\r\n\r\n /**\r\n * visible Command Create Record\r\n * @return {boolean} true if visible\r\n */\r\n visibleCommandCreate() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.new: {\r\n return this.isAllowedAuthor;\r\n }\r\n case recordMode.newProject: {\r\n return this.isAvailableProjectsModule;\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * determine whether a new project is valid\r\n * @return {boolean} true if a new project is valid\r\n */\r\n isValidNewProject() {\r\n return this.isValidFormNewProject && this.validProjectTasks;\r\n },\r\n\r\n /**\r\n * enabled Command Create\r\n * @return {boolean} true if enabled\r\n */\r\n enabledCommandCreate() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.new: {\r\n return this.isNewRecordProject\r\n ? this.isValidFormRecord && this.isValidNewProject\r\n : this.isValidFormRecord;\r\n }\r\n case recordMode.newProject: {\r\n return this.isValidNewProject;\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * visible Command Validate\r\n * @return {boolean}\r\n */\r\n visibleCommandValidate() {\r\n return (this.currentRecordMode ?? recordMode.view) !== recordMode.view;\r\n },\r\n\r\n /**\r\n * visible Command Save Record\r\n * @return {boolean}\r\n */\r\n visibleCommandSaveRecord() {\r\n return this.isAllowedAuthor && this.currentRecordMode === recordMode.edit;\r\n },\r\n\r\n /**\r\n * visible Command Cancel Record Action\r\n * @return {boolean}\r\n */\r\n visibleCommandCancelRecordAction() {\r\n return this.currentRecordMode !== recordMode.view;\r\n },\r\n\r\n /**\r\n * command Validate Form Label\r\n * @return {string}\r\n */\r\n commandValidateFormLabel() {\r\n return `Validate`;\r\n },\r\n\r\n /**\r\n * command Validate Form ToolTip\r\n * @return {string}\r\n */\r\n commandValidateFormToolTip() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.edit:\r\n case recordMode.new: {\r\n return `${this.commandValidateFormLabel} ${this.recordModeName} ${this.currentRecord?.recordType} data entries`;\r\n }\r\n case recordMode.newProject: {\r\n return `${this.commandValidateFormLabel} ${this.recordModeName}`;\r\n }\r\n }\r\n return this.commandValidateFormLabel;\r\n },\r\n\r\n /**\r\n * command New Label\r\n * @return {string}\r\n */\r\n commandNewLabel() {\r\n return findRecordMode(recordMode.new)?.name;\r\n },\r\n\r\n /**\r\n * command Create Label\r\n * @return {string}\r\n */\r\n commandCreateLabel() {\r\n return `Create`;\r\n },\r\n\r\n /**\r\n * command Create Record ToolTip\r\n * @return {string}\r\n */\r\n commandCreateRecordToolTip() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.new: {\r\n return `${this.commandCreateLabel} ${this.currentRecordTypeName}`;\r\n }\r\n case recordMode.newProject: {\r\n return `${this.commandCreateLabel} ${this.recordModeName}`;\r\n }\r\n }\r\n return this.commandCreateLabel;\r\n },\r\n commandAcquireLabel() {\r\n return `Acquire`;\r\n },\r\n commandAcquireScanLabel() {\r\n return `Scan`;\r\n },\r\n commandEditRecordLabel() {\r\n return recordOperationLabel(recordOperation.Update);\r\n },\r\n commandEditRecordToolTip() {\r\n return `${this.commandEditRecordLabel} ${this.currentRecordTypeName}`;\r\n },\r\n commandSaveRecordLabel() {\r\n return `Save`;\r\n },\r\n commandSaveRecordToolTip() {\r\n return `${this.commandSaveRecordLabel} ${this.currentRecordTypeName}`;\r\n },\r\n commandCancelRecordAction() {\r\n return `Cancel`;\r\n },\r\n commandCancelRecordActionToolTip() {\r\n switch (this.currentRecordMode) {\r\n case recordMode.edit:\r\n case recordMode.new: {\r\n return `${this.commandCancelRecordAction} ${this.recordModeName} ${this.currentRecordTypeName}`;\r\n }\r\n case recordMode.newProject: {\r\n return `${this.commandCancelRecordAction} ${this.recordModeName}`;\r\n }\r\n }\r\n return this.commandCancelRecordAction;\r\n },\r\n\r\n /**\r\n * indicating whether scanning interface is available\r\n * @return {boolean} returns a boolean, true if scanning interface is available\r\n */\r\n visibleCommandScan() {\r\n if (!this.enableWebScan || !this.record) {\r\n return false;\r\n }\r\n switch (this.recordTypeId) {\r\n case recordType.DOCUMENT:\r\n case recordType.FILE:\r\n case recordType.RECORD: {\r\n return this.visibleRecordCommandOperation(recordOperation.Update);\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * determines whether Is Valid Scan Operation\r\n * @return {boolean} returns true if Is Valid Scan Operation\r\n */\r\n enabledCommandScan() {\r\n if (!this.visibleCommandScan || !this.record) {\r\n return false;\r\n }\r\n switch (this.recordTypeId) {\r\n case recordType.DOCUMENT:\r\n case recordType.FILE:\r\n case recordType.RECORD: {\r\n return this.enableRecordCommandOperation(recordOperation.Update);\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * visibility of Edit File Version\r\n * @return {(function(): boolean)|*}\r\n */\r\n visibleEditFileVersion() {\r\n return canEditFileVersionInDocumentEditor(this.record, this.principal);\r\n },\r\n\r\n /**\r\n * determines visibility of edit record command\r\n * @return {Boolean|boolean} true if edit record command is visible\r\n */\r\n visibleCommandEdit() {\r\n return (\r\n this.isAllowedAuthor &&\r\n this.currentRecordMode === recordMode.view &&\r\n this.visibleRecordCommandOperation(recordOperation.Update)\r\n );\r\n },\r\n\r\n /**\r\n * determines whether edit record command is enabled\r\n * @return {Boolean|boolean}\r\n */\r\n enableCommandEdit() {\r\n return (\r\n this.isAllowedAuthor &&\r\n this.currentRecordMode === recordMode.view &&\r\n this.enableRecordCommandOperation(recordOperation.Update)\r\n );\r\n },\r\n\r\n /**\r\n * compute edit Record id\r\n * @return {number} edit Record Version\r\n */\r\n editRecordId() {\r\n return this.record?.id ?? -1;\r\n },\r\n\r\n /**\r\n * compute edit Record Version\r\n * @return {number} edit Record Version\r\n */\r\n editRecordVersion() {\r\n return editRecordVersion(this.record);\r\n },\r\n\r\n /**\r\n * determines whether to auto-open Expansion panel\r\n * @return {boolean} true if auto-open Expansion Panel\r\n */\r\n openExpansionPanel() {\r\n return (\r\n (this?.record?.recordTypeId ?? -1) === recordType.RECORD ||\r\n !!this.localUploadedFile\r\n );\r\n },\r\n\r\n visibleCommandOpen() {\r\n return true;\r\n },\r\n\r\n /**\r\n * compute if record is Compound Document or child of compound Document\r\n * @return {boolean}\r\n */\r\n isCompoundRecord() {\r\n return (\r\n this.recordTypeId === recordType.DOCUMENT || isCompoundFile(this.record)\r\n );\r\n },\r\n\r\n /**\r\n * compute if File Upload is Allowed Directly\r\n * @return {boolean}\r\n */\r\n isAllowedDirectFileUpload() {\r\n return isDirectUploadAllowed(this.record);\r\n },\r\n\r\n /**\r\n * enable generation of New Record\r\n * @return {Boolean|boolean} true if enabled generation of New Record\r\n */\r\n enableNewRecord() {\r\n if (\r\n this.recordTypeId === recordType.RECORD ||\r\n this.recordTypeId === recordType.FILE ||\r\n this.recordTypeId === recordType.DOCUMENT\r\n ) {\r\n return this.record?.ancestor?.canUpdate ?? false;\r\n }\r\n\r\n return this.enableRecordCommandOperation(recordOperation.Update);\r\n },\r\n\r\n /**\r\n * Is Valid ReIndex Command\r\n * @return {boolean}\r\n */\r\n isValidReindex() {\r\n return (\r\n (this.record?.recordTypeId ?? -1) === recordType.FILE ||\r\n isCompoundDocument(this.record)\r\n );\r\n },\r\n\r\n /**\r\n * visible New Workflow Project\r\n * @return {boolean} true if visible New Workflow Project\r\n */\r\n visibleNewWorkflowProjectCommand() {\r\n return this.isAvailableProjectsModule;\r\n },\r\n\r\n /**\r\n * label of New Project command\r\n * @return {string} label of New Project command\r\n */\r\n commandNewProjectLabel() {\r\n return `New ${projectLabel}`;\r\n },\r\n\r\n /**\r\n * compute visibility of Switch: Start New Record Project\r\n * @return {boolean} true if Switch: Start New Record Project is visible\r\n */\r\n visibleSwitchStartNewRecordProject() {\r\n return (\r\n this.isAvailableProjectsModule &&\r\n this.currentRecordMode === recordMode.new\r\n );\r\n },\r\n\r\n /**\r\n * Label of switch: tart New Record Project\r\n * @return {string} formatted Label of switch\r\n */\r\n switchStartNewRecordProjectLabel() {\r\n return this.categoryStartProjectOption === startProjectOption.autoStart\r\n ? `Auto-Start Workflow Project`\r\n : `Start Workflow Project`;\r\n },\r\n\r\n /**\r\n * determine whether to enable Switch: StartNewRecordProject\r\n * @return {boolean} true if Switch: StartNewRecordProject is enabled\r\n */\r\n enabledSwitchStartNewRecordProject() {\r\n return (\r\n (this.visibleSwitchStartNewRecordProject ||\r\n this.currentRecordMode === recordMode.newProject) &&\r\n this.categoryStartProjectOption !== startProjectOption.autoStart\r\n );\r\n },\r\n\r\n /**\r\n * new record's category Workflow\r\n * @return {{startProjectOption: {value: number, name: string}, runOnlyOneProject: boolean, template: {id: number, name: string, description: string, workflowName: string, comment: string}}}\r\n */\r\n categoryWorkflow() {\r\n return this.recordNewCategory?.workflow;\r\n },\r\n\r\n /**\r\n * new record category's pre-defined project Start Option\r\n * @return {Number|number} start Project Option\r\n */\r\n categoryStartProjectOption() {\r\n return (\r\n this.categoryWorkflow?.startProjectOption?.value ??\r\n startProjectOption.none\r\n );\r\n },\r\n\r\n /**\r\n * compute whether New Workflow Project is available for current user\r\n * @return {boolean} true if New Workflow Project is available for current user\r\n */\r\n visibleNewWorkflowProject() {\r\n return this.currentRecordMode === recordMode.new\r\n ? this.isAvailableProjectsModule && this.isNewRecordProject\r\n : this.currentRecordMode === recordMode.newProject &&\r\n this.isAvailableProjectsModule;\r\n },\r\n\r\n /**\r\n * compute whether to expand a new Workflow Project expansion panel\r\n * @return {boolean}\r\n */\r\n expandNewWorkflowProject() {\r\n return (\r\n (this.visibleNewWorkflowProject &&\r\n this.currentRecordMode === recordMode.newProject) ||\r\n (this.currentRecordMode === recordMode.new &&\r\n (this.currentRecordCategory?.workflow?.template?.id ?? -1) > 0)\r\n );\r\n },\r\n\r\n /**\r\n * Visible Command Submit/Recall All Agenda Items\r\n * @return {boolean}\r\n */\r\n visibleSubmitRecallItemsOperation() {\r\n return (\r\n ((this.record?.recordTypeId ?? -1) === recordType.MEETING ||\r\n (this.record?.recordTypeId ?? -1) === recordType.SECTION) &&\r\n !(this.record?.isDeleted ?? true)\r\n );\r\n },\r\n\r\n /**\r\n * Tooltip Submit All Items\r\n * @return {string}\r\n */\r\n tooltipSubmitAllItems() {\r\n return `Submit All Agenda Items under this ${this.record?.recordType}`;\r\n },\r\n\r\n /**\r\n * Submit All Items\r\n * @return {string}\r\n */\r\n labelSubmitAllItems() {\r\n return `Submit All Items`;\r\n },\r\n\r\n /**\r\n * Tooltip Recall All Items\r\n * @return {string}\r\n */\r\n tooltipRecallAllItems() {\r\n return `Recall All Agenda Items under this ${this.record?.recordType}`;\r\n },\r\n\r\n /**\r\n * Label Recall All Items\r\n * @return {string}\r\n */\r\n labelRecallAllItems() {\r\n return `Recall All Items`;\r\n }\r\n },\r\n methods: {\r\n ...mapActions({\r\n getAgendaItemTemplates: \"getAgendaItemTemplates\"\r\n }),\r\n\r\n /**\r\n * Enabled Command Submit/Recall Agenda Items Operation\r\n * @param operation\r\n * @return {boolean}\r\n */\r\n enabledSubmitRecallItemsOperation(operation) {\r\n if (this.record?.isLocked) return false;\r\n\r\n if (!this.record?.canUpdate) return false;\r\n\r\n return this.categories\r\n .filter(el => el.categoryType === categoryType.item)\r\n .some(c => !isAllowedAgendaItemOperation(operation, c.Id));\r\n },\r\n\r\n /**\r\n * createRecord\r\n * remarks: all module *RecordDetails.vue has to implement it\r\n * @param payload\r\n */\r\n createRecord(payload) {\r\n console.warn(`Abstract createRecord() payload:`, payload);\r\n throw notImplementedMethod(`createRecord`);\r\n },\r\n\r\n /**\r\n * Handle Validate Project Tasks event\r\n * @param {Boolean} isValid is valid all tasks of current project\r\n */\r\n onValidateProjectTasks(isValid) {\r\n this.validProjectTasks = isValid;\r\n },\r\n\r\n /**\r\n * create Agenda Meeting\r\n * remarks: all module *RecordDetails.vue has to implement it\r\n * @param payload\r\n */\r\n createAgendaMeeting(payload) {\r\n console.warn(`Abstract createAgendaMeeting() payload:`, payload);\r\n throw notImplementedMethod(`createAgendaMeeting`);\r\n },\r\n\r\n /**\r\n * create Agenda Item\r\n * remarks: all module *RecordDetails.vue has to implement it\r\n * @param payload\r\n */\r\n createAgendaItem(payload) {\r\n console.warn(`Abstract createAgendaItem() payload:`, payload);\r\n throw notImplementedMethod(`createAgendaItem`);\r\n },\r\n\r\n /**\r\n * saveRecord\r\n * remarks: all module *RecordDetails.vue has to implement it\r\n * @param payload\r\n */\r\n saveRecord(payload) {\r\n console.warn(`Abstract saveRecord() payload:`, payload);\r\n throw notImplementedMethod(`saveRecord`);\r\n },\r\n\r\n /**\r\n * deleteRecord\r\n * remarks: all module *RecordDetails.vue has to implement it\r\n * @param payload\r\n */\r\n deleteRecord(payload) {\r\n console.warn(`Abstract deleteRecord() payload:`, payload);\r\n throw notImplementedMethod(`deleteRecord`);\r\n },\r\n\r\n /**\r\n * Delete Record Shortcut\r\n * Abstract method\r\n * @param {{id:Number, parentId: Number}} payload\r\n */\r\n deleteRecordShortcut(payload) {\r\n console.warn(\r\n \"Not implemented Abstract method: deleteRecordShortcut() \",\r\n payload.id\r\n );\r\n },\r\n\r\n /**\r\n * setNewRecordCategory\r\n * remarks: all modules *RecordDetails.vue have to implement it\r\n * @param payload\r\n */\r\n setNewRecordCategory(payload) {\r\n console.warn(`Abstract setNewRecordCategory() id:`, payload);\r\n },\r\n\r\n /**\r\n * setRecordTextFieldValue\r\n * remarks: all modules *RecordDetails.vue have to implement it\r\n * @param payload\r\n */\r\n setRecordTextFieldValue(payload) {\r\n console.warn(`Abstract setRecordTextFieldValue() id:`, payload);\r\n },\r\n\r\n /**\r\n * setDatabaseLookupData\r\n * remarks: all module *RecordDetails.vue has to implement it\r\n */\r\n setDatabaseLookupData() {\r\n console.warn(`Abstract setDatabaseLookupData() called`);\r\n },\r\n\r\n /**\r\n * Abstract method: checkInScannedFile\r\n * remarks: all modules *RecordDetails.vue have to implement it\r\n * @param {{insert: boolean, insertAtBeginning: boolean}|undefined} payload\r\n */\r\n checkInScannedFile(payload = undefined) {\r\n console.warn(`Abstract checkInScannedFile() called. payload:`, payload);\r\n },\r\n\r\n /**\r\n * update Record info\r\n * remarks: Abstract, has to be implemented by each module *DetailActionMixin\r\n * @param {{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, checkOutExtension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, comments: string, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}|{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}|{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array} | {agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}} record - Can be FileModel/RecordItemModel/DocumentModel - Without Fields\r\n */\r\n updateRecordInfo(record) {\r\n console.warn(`Not implemented updateRecordInfo() record:`, record);\r\n },\r\n\r\n /**\r\n * Abstract setFileVersions\r\n * @param id\r\n */\r\n setFileVersions(id) {\r\n console.warn(`Not implemented setFileVersions() record id :`, id);\r\n },\r\n\r\n /**\r\n * Abstract setDocuments\r\n * @param id\r\n */\r\n setDocuments(id) {\r\n console.warn(`Not implemented setDocuments() record id :`, id);\r\n },\r\n\r\n commandNewRecordLabel(recordType) {\r\n return `${findRecordType(recordType)?.name}`;\r\n },\r\n commandNewDuplicateRecordLabel(recordType) {\r\n return `Duplicate ${findRecordType(recordType)?.name}`;\r\n },\r\n commandNewRecordInheritLabel(recordType) {\r\n return `${findRecordType(recordType)?.name} (Inherit Parent Data)`;\r\n },\r\n\r\n /**\r\n * Abstract method: setNewRecord\r\n * remarks: all modules *RecordDetails.vue have to implement it\r\n * @param payload\r\n */\r\n setNewRecord(payload) {\r\n console.warn(`Abstract setNewRecord() payload:`, payload);\r\n throw notImplementedMethod(`setNewRecord`);\r\n },\r\n\r\n /**\r\n * Abstract\r\n * set new workflow project for current selected record\r\n */\r\n setNewWorkflowProject(payload) {\r\n console.warn(`Abstract setNewWorkflowProject()`);\r\n throw notImplementedMethod(`setNewWorkflowProject() payload:`, payload);\r\n },\r\n\r\n /**\r\n * Abstract\r\n * set Project New Template\r\n * @param {number} payload new project template id\r\n */\r\n setProjectNewTemplate(payload) {\r\n console.warn(`Abstract setProjectNewTemplate() payload:`, payload);\r\n throw notImplementedMethod(`setProjectNewTemplate`);\r\n },\r\n\r\n /**\r\n * start Workflow Project\r\n * @param {{recordId: Number, projectName: string, comment: string, templateId: number, runOnlyOneProject: boolean}} payload new Workflow Project\r\n */\r\n startWorkflowProject(payload) {\r\n console.warn(`Abstract startWorkflowProject() payload:`, payload);\r\n throw notImplementedMethod(`startWorkflowProject`);\r\n },\r\n\r\n /**\r\n * set New Record workflow Project\r\n * @param {{ project, projectTemplate }} payload\r\n */\r\n setNewRecordProject(payload) {\r\n console.warn(`Abstract setNewRecordProject() payload:`, payload);\r\n throw notImplementedMethod(`setNewRecordProject`);\r\n },\r\n\r\n /**\r\n * Abstract method: setEditRecord\r\n * remarks: all modules *RecordDetails.vue have to implement it\r\n * @param payload\r\n */\r\n setEditRecord(payload) {\r\n console.warn(`Abstract setEditRecord() payload:`, payload);\r\n throw notImplementedMethod(`setEditRecord`);\r\n },\r\n\r\n /**\r\n * Abstract method: setRecordMode\r\n * remarks: all modules *RecordDetails.vue have to implement it\r\n * @param payload\r\n */\r\n setRecordMode(payload) {\r\n console.warn(`Abstract setRecordMode() payload:`, payload);\r\n throw notImplementedMethod(`setRecordMode`);\r\n },\r\n\r\n /**\r\n * Abstract method: checkInEditedDocument which check In edited record file version\r\n * remarks: all modules *RecordDetails.vue have to implement it\r\n * @param {{checkInModel: {Extension: undefined, Draft: boolean, Comments: string, Enqueue: boolean}, id: (number|*|number), version: (*|number)}} payload\r\n * @return {Promise<{id: number, name: string, categoryId: number, children: number, createdBy: string, creationDate: string, extension: string, flags: number, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, isReadOnly: boolean, modificationDate: string, owner: string, pageCount: number, parentId: number, recordType: string, recordTypeId: number, state: string, stateId: number, version: number, versionDate: string, versionOwner: string}>}\r\n */\r\n checkInEditedDocument(payload) {\r\n console.warn(\r\n `Abstract checkInEditedDocument() called. payload:`,\r\n payload\r\n );\r\n throw notImplementedMethod(`checkInEditedDocument`);\r\n },\r\n\r\n /**\r\n * Abstract method: getRecordInfo which gets EditFileModel\r\n * remarks: all module *RecordDetails.vue has to implement it\r\n * @param {id:number} id Record id\r\n */\r\n getRecordInfo(id) {\r\n console.warn(`Abstract getRecordInfo called. payload:`, id);\r\n throw notImplementedMethod(`getRecordInfo`);\r\n },\r\n\r\n /**\r\n * post Agenda Meeting\r\n * @param {id:number} id Agenda Meeting id\r\n */\r\n postAgendaMeeting(id) {\r\n console.warn(`Abstract postAgendaMeeting called. payload:`, id);\r\n throw notImplementedMethod(`postAgendaMeeting`);\r\n },\r\n\r\n /**\r\n * un post Agenda Meeting\r\n * @param {id:number} id Agenda Meeting id\r\n */\r\n unPostAgendaMeeting(id) {\r\n console.warn(`Abstract unPostAgendaMeeting called. payload:`, id);\r\n throw notImplementedMethod(`unPostAgendaMeeting`);\r\n },\r\n\r\n /**\r\n * publish Agenda Meeting\r\n * @param {id:number} id Agenda Meeting id\r\n */\r\n publishAgendaMeeting(id) {\r\n console.warn(`Abstract publishAgendaMeeting called. payload:`, id);\r\n throw notImplementedMethod(`publishAgendaMeeting`);\r\n },\r\n\r\n /**\r\n * un publish Agenda Meeting\r\n * @param {id:number} id Agenda Meeting id\r\n */\r\n unPublishAgendaMeeting(id) {\r\n console.warn(`Abstract unPublishAgendaMeeting called. payload:`, id);\r\n throw notImplementedMethod(`unPublishAgendaMeeting`);\r\n },\r\n\r\n /**\r\n * submit Agenda Item\r\n * @param {id:number} id Agenda Item id\r\n */\r\n submitAgendaItem(id) {\r\n console.warn(`Abstract submitAgendaItem called. payload:`, id);\r\n throw notImplementedMethod(`submitAgendaItem`);\r\n },\r\n\r\n /**\r\n * recall Agenda Item\r\n * @param {id:number} id Agenda Item id\r\n */\r\n recallAgendaItem(id) {\r\n console.warn(`Abstract recallAgendaItem called. payload:`, id);\r\n throw notImplementedMethod(`recallAgendaItem`);\r\n },\r\n\r\n /**\r\n * create Agenda\r\n * @param {{meetingId: number, recordId: number, type: number}} payload\r\n * @return {Promise}\r\n */\r\n async createAgenda(payload) {\r\n console.warn(`Abstract createAgenda called. payload:`, payload);\r\n throw notImplementedMethod(`recallAgendaItem`);\r\n },\r\n\r\n /**\r\n * create Agenda Packet\r\n * @param {{meetingId: number, recordId: number, option: any}} payload\r\n * @return {Promise}\r\n */\r\n async createAgendaPacket(payload) {\r\n console.warn(`Abstract createAgendaPacket called. payload:`, payload);\r\n throw notImplementedMethod(`recallAgendaItem`);\r\n },\r\n\r\n /**\r\n * Abstract setChildRecords\r\n * @param {id:number} id\r\n */\r\n setChildRecords(id) {\r\n console.warn(`Not implemented setChildRecords() record id :`, id);\r\n throw notImplementedMethod(`setChildRecords`);\r\n },\r\n\r\n /**\r\n * Abstract Set Moved Record\r\n * @param {{type:string, record:Object}} payload\r\n */\r\n setMovedRecord(payload) {\r\n console.warn(`Abstract setMovedRecord() payload:`, payload);\r\n },\r\n\r\n /**\r\n * Abstract Refer Agenda Item\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:Number}} payload\r\n * @return {Promise}\r\n */\r\n async referAgendaItem(payload) {\r\n console.warn(\r\n `Abstract ${this.$options.name}.referAgendaItem() called. payload:`,\r\n payload\r\n );\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Abstract Defer Agenda Item\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:Number}} payload\r\n * @return {Promise}\r\n */\r\n async deferAgendaItem(payload) {\r\n console.warn(\r\n `Abstract ${this.$options.name}.deferAgendaItem() called. payload:`,\r\n payload\r\n );\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Abstract Set Local Uploaded File\r\n * @param {File} file\r\n */\r\n setLocalUploadedFile(file) {\r\n console.warn(`Abstract setLocalUploadedFile() payload:`, file);\r\n },\r\n\r\n /**\r\n * Abstract ReIndex Document\r\n * @param {Number} id\r\n */\r\n reindexDocument(id) {\r\n console.warn(`Abstract reindexDocument() payload:`, id);\r\n },\r\n\r\n /**\r\n * Submit Meeting Agenda Items\r\n * @param id\r\n * @return {undefined}\r\n */\r\n submitMeetingAgendaItems(id) {\r\n console.warn(`Abstract submitMeetingAgendaItems() payload:`, id);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Submit Section Agenda Items\r\n * @param id\r\n * @return {undefined}\r\n */\r\n submitSectionAgendaItems(id) {\r\n console.warn(`Abstract submitSectionAgendaItems() payload:`, id);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Recall Meeting Agenda Items\r\n * @param id\r\n * @return {undefined}\r\n */\r\n recallMeetingAgendaItems(id) {\r\n console.warn(`Abstract recallMeetingAgendaItems() payload:`, id);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Recall Section Agenda Items\r\n * @param id\r\n * @return {undefined}\r\n */\r\n recallSectionAgendaItems(id) {\r\n console.warn(`Abstract recallSectionAgendaItems() payload:`, id);\r\n return undefined;\r\n },\r\n\r\n /**\r\n * Abstract ReIndex Document\r\n * @param {Number} id\r\n */\r\n reindexFile(id) {\r\n console.warn(`Abstract reindexFile() payload:`, id);\r\n },\r\n\r\n /**\r\n * Handle event onSaveRecord\r\n */\r\n async onSaveRecord() {\r\n try {\r\n this.isLoadingSaveRecord = true;\r\n\r\n // Check recordNew categoryId\r\n if (\r\n (this.recordNew?.categoryId ?? -1) !==\r\n (this.recordNewCategory?.id ?? -1)\r\n ) {\r\n console.warn(\r\n `Changed this.recordNew.categoryId:`,\r\n this.recordNewCategory.id\r\n );\r\n this.recordNew.categoryId = this.recordNewCategory.id;\r\n }\r\n\r\n const payload = {\r\n record: this.recordNew,\r\n category: this.recordNewCategory\r\n };\r\n\r\n await this.saveRecord(payload);\r\n\r\n this.showSnackbarSuccess(\r\n `Saved ${this.record?.recordType} ${this.record?.name}`,\r\n true\r\n );\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't save ${this.record?.recordType}. ${e.toString()}`,\r\n true\r\n );\r\n } finally {\r\n this.isLoadingSaveRecord = false;\r\n this.inheritParentData = false;\r\n }\r\n },\r\n\r\n /**\r\n * Handle event onCreate\r\n */\r\n async onCreate() {\r\n const mode = findRecordMode(this.currentRecordMode);\r\n\r\n try {\r\n this.isLoadingCreateRecord = true;\r\n\r\n if (this.currentRecordMode === recordMode.newProject) {\r\n await this.onStartWorkflowProject();\r\n return;\r\n }\r\n\r\n if (\r\n (this.recordNew?.categoryId ?? -1) !==\r\n (this.recordNewCategory?.id ?? -1)\r\n ) {\r\n console.warn(\r\n `Changed this.recordNew.categoryId:`,\r\n this.recordNewCategory.id\r\n );\r\n this.recordNew.categoryId = this.recordNewCategory.id;\r\n }\r\n\r\n // create Record\r\n switch (this.recordNew.recordTypeId) {\r\n case recordType.MEETING: {\r\n const payload = {\r\n record: this.recordNew,\r\n category: this.recordNewCategory,\r\n agendaTemplateId: this.agendaTemplate?.id ?? -1\r\n };\r\n await this.createAgendaMeeting(payload);\r\n break;\r\n }\r\n case recordType.ITEM: {\r\n const payload = {\r\n record: this.recordNew,\r\n category: this.recordNewCategory,\r\n agendaTemplateIndex:\r\n this.agendaItemTemplates?.indexOf(this.agendaItemTemplate) ?? 0\r\n };\r\n await this.createAgendaItem(payload);\r\n break;\r\n }\r\n\r\n case recordType.FILE: {\r\n //First Create Record\r\n const payload = {\r\n record: this.recordNew,\r\n category: this.recordNewCategory\r\n };\r\n const record = await this.createRecord(payload);\r\n\r\n //2nd Upload File to created Record\r\n const uploadPayload = UploadOptionModel(\r\n this.checkInOptionModel.checkInComment,\r\n this.checkInOptionModel.isCheckInOCR,\r\n this.checkInOptionModel.isCheckInDraft\r\n );\r\n await this.checkInFile({\r\n id: record?.id ?? -1,\r\n file: this.uploadedFile ?? this.localUploadedFile,\r\n uploadFileModel: uploadPayload\r\n });\r\n break;\r\n }\r\n\r\n default: {\r\n //If Inherit parent Data, set parent Id, so record is created under the folder\r\n this.recordNew.parentId = this.inheritParentData\r\n ? this.record?.id ?? -1\r\n : this.recordNew.parentId;\r\n\r\n const payload = {\r\n record: this.recordNew,\r\n category: this.recordNewCategory\r\n };\r\n\r\n await this.createRecord(payload);\r\n\r\n break;\r\n }\r\n }\r\n\r\n const recordNew = this.recordNew;\r\n\r\n /**\r\n * Start selected workflow project\r\n */\r\n if (this.isNewRecordProject) {\r\n const payload = {\r\n recordId: recordNew?.id ?? -1,\r\n projectName: this.projectNew?.projectName,\r\n comment: this.projectNew?.comment,\r\n templateId:\r\n this.projectNew?.templateId ?? this.projectNewTemplate?.id ?? -1,\r\n runOnlyOneProject: this.projectNew?.runOnlyOneProject,\r\n userTasks: getNewProjectUserTasks(this.projectNew)\r\n };\r\n\r\n const project = await this.startWorkflowProject(payload);\r\n console.log(`Started project:`, project);\r\n }\r\n\r\n // Try to select created record\r\n if ((recordNew?.id ?? -1) > 0) {\r\n if (!this.newAgendaDocumentType) {\r\n this.showSnackbarSuccess(\r\n `Created ${recordNew.recordType} ${recordNew.name}`,\r\n true\r\n );\r\n\r\n // Locate created record\r\n await this.navigateToModuleRecord(recordNew);\r\n }\r\n\r\n //\r\n // create Agenda Document/Packet\r\n //\r\n if (this.newAgendaDocumentType) {\r\n const agendaDocumentTypeLabel = this.newAgendaDocumentType.label;\r\n try {\r\n if (\r\n this.newAgendaDocumentType.type ===\r\n agendaDocumentType.agendaPacket\r\n ) {\r\n const numberingOptions = getAgendaPacketNumberingOptions(\r\n this.agendaPacketModel\r\n );\r\n const numberingPosition =\r\n this.agendaPacketModel.currentTab ===\r\n agendaPacketTabOptions.noNumbering\r\n ? 0\r\n : this.agendaPacketModel.numberPosition + 1;\r\n\r\n const optionModel = AgendaPacketQueryModel(\r\n this.agendaPacketModel.currentTab,\r\n numberingPosition,\r\n numberingOptions,\r\n this.agendaPacketModel.includePageSeparator,\r\n this.agendaPacketModel.includeLinkAgenda,\r\n this.agendaPacketModel.includeLinkBackUp,\r\n this.agendaPacketModel.linkStaticText,\r\n this.agendaPacketModel.agendaItemTitle,\r\n this.agendaPacketModel.linkNote\r\n );\r\n console.log(\r\n `${this.$options.name} onCreateRecord() optionModel`,\r\n optionModel\r\n );\r\n const payload = {\r\n meetingId: recordNew?.parentId ?? -1,\r\n recordId: recordNew?.id ?? -1,\r\n option: optionModel\r\n };\r\n await this.createAgendaPacket(payload);\r\n } else {\r\n const payload = {\r\n meetingId: recordNew?.parentId ?? -1,\r\n recordId: recordNew?.id ?? -1,\r\n type: this.newAgendaDocumentType.type\r\n };\r\n await this.createAgenda(payload);\r\n }\r\n\r\n // Locate created record\r\n await this.navigateToModuleRecord(recordNew);\r\n\r\n this.showSnackbarSuccess(\r\n `Generated ${agendaDocumentTypeLabel}`,\r\n true\r\n );\r\n } catch (e) {\r\n // Locate created record\r\n await this.navigateToModuleRecord(recordNew);\r\n\r\n this.showSnackbarWarning(\r\n `Couldn't create ${agendaDocumentTypeLabel}`,\r\n true\r\n );\r\n }\r\n }\r\n } else {\r\n this.showSnackbarWarning(\r\n `Couldn't create ${recordNew?.recordType}`,\r\n true\r\n );\r\n }\r\n } catch (e) {\r\n const msg =\r\n this.currentRecordMode === recordMode.newProject\r\n ? `Couldn't create ${mode.name}`\r\n : `Couldn't create ${mode.name} ${this.recordNew?.recordType}`;\r\n\r\n console.error(msg, e);\r\n\r\n this.showSnackbarError(`${msg}. ${e.toString()}`, true);\r\n } finally {\r\n this.isLoadingCreateRecord = false;\r\n this.newAgendaDocumentType = undefined;\r\n this.clearUploadedFileData();\r\n this.inheritParentData = false;\r\n }\r\n },\r\n\r\n /**\r\n * Cancel Record Action event handler\r\n */\r\n onCancelRecordAction() {\r\n const modeName = this.recordModeName;\r\n const recordType = this.currentRecordTypeName;\r\n\r\n try {\r\n this.cancelRecordAction();\r\n this.clearUploadedFileData();\r\n this.showSnackbarSuccess(`Canceled ${modeName} ${recordType}`, true);\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't ${\r\n this.commandCancelRecordAction\r\n } ${modeName} ${recordType}. ${e?.toString()}`,\r\n true\r\n );\r\n } finally {\r\n this.inheritParentData = false;\r\n this.isDocumentAssembly = false;\r\n }\r\n },\r\n\r\n /**\r\n * cancel Record Action\r\n */\r\n cancelRecordAction() {\r\n this.setRecordMode(recordMode.view);\r\n },\r\n\r\n /**\r\n * set Read Only Record\r\n * Abstract method\r\n * @param {number} id\r\n */\r\n setReadOnlyRecord(id) {\r\n throw notImplementedMethod(`setReadOnlyRecord() id: ${id}`);\r\n },\r\n\r\n /**\r\n * Lock Read\r\n * Abstract method\r\n * @param {number} id\r\n */\r\n lockRecord(id) {\r\n throw notImplementedMethod(`lockRecord() id: ${id}`);\r\n },\r\n\r\n /**\r\n * UnLock Record\r\n * Abstract method\r\n * @param {number} id\r\n */\r\n unLockRecord(id) {\r\n throw notImplementedMethod(`unLockRecord() id: ${id}`);\r\n },\r\n\r\n /**\r\n * Abstract Check-Out File\r\n * @param {Number|number} id\r\n */\r\n checkOutFile(id) {\r\n throw notImplementedMethod(`checkOutFile() id: ${id}`);\r\n },\r\n\r\n /**\r\n * Abstract Check-Out the File as a PDF document, so that e-signature can be applied locally at the client station\r\n * @param {Number|number} id\r\n */\r\n checkOutFileForSign(id) {\r\n throw notImplementedMethod(`checkOutFileForSign() id: ${id}`);\r\n },\r\n\r\n /**\r\n * Abstract Release File\r\n * @param {Number|number} id\r\n */\r\n releaseFile(id) {\r\n throw notImplementedMethod(`releaseFile() id: ${id}`);\r\n },\r\n\r\n /**\r\n * Draft Read\r\n * Abstract method\r\n * @param {number} id\r\n */\r\n setDraftRecord(id) {\r\n throw notImplementedMethod(`setDraftRecord() id: ${id}`);\r\n },\r\n\r\n /**\r\n * determines visibility of new record command\r\n * @param {number} newTypeId record type id\r\n * @param {Boolean} isDocumentAssembly\r\n * @return {boolean|Boolean} true if new record command is visible\r\n */\r\n visibleNewRecord(newTypeId, isDocumentAssembly = false) {\r\n if (!this.isAllowedAuthor) return false;\r\n\r\n const selectedTypeId = this.recordTypeId;\r\n\r\n switch (newTypeId) {\r\n case recordType.FOLDER: {\r\n if (!(selectedTypeId === recordType.FOLDER)) {\r\n return false;\r\n }\r\n break;\r\n }\r\n case recordType.DOCUMENT: {\r\n if (\r\n !(\r\n selectedTypeId === recordType.FOLDER ||\r\n selectedTypeId === recordType.ITEM ||\r\n selectedTypeId === recordType.DOCUMENT ||\r\n selectedTypeId === recordType.RECORD ||\r\n (selectedTypeId === recordType.FILE &&\r\n this.recordAncestorTypeId !== recordType.MEETING)\r\n )\r\n ) {\r\n return false;\r\n }\r\n break;\r\n }\r\n case recordType.RECORD: {\r\n if (\r\n !(\r\n selectedTypeId === recordType.FOLDER ||\r\n selectedTypeId === recordType.ITEM ||\r\n selectedTypeId === recordType.RECORD ||\r\n (selectedTypeId === recordType.FILE &&\r\n this.recordAncestorTypeId !== recordType.MEETING)\r\n )\r\n ) {\r\n return false;\r\n }\r\n break;\r\n }\r\n case recordType.MEETING: {\r\n if (isDocumentAssembly || isDocumentAssemblyEvent(this.record)) {\r\n return selectedTypeId === recordType.FOLDER;\r\n }\r\n if (\r\n !(\r\n selectedTypeId === recordType.FOLDER ||\r\n selectedTypeId === recordType.MEETING\r\n )\r\n ) {\r\n return false;\r\n }\r\n break;\r\n }\r\n case recordType.SECTION: {\r\n if (!(selectedTypeId === recordType.SECTION)) {\r\n return false;\r\n }\r\n break;\r\n }\r\n case recordType.ITEM: {\r\n if (\r\n !(\r\n selectedTypeId === recordType.SECTION ||\r\n selectedTypeId === recordType.ITEM\r\n )\r\n ) {\r\n return false;\r\n }\r\n break;\r\n }\r\n }\r\n return true;\r\n },\r\n\r\n /**\r\n * Determine the visibility of New Duplicate Record menu item\r\n * @param {Number|number} typeId\r\n * @return {Boolean|boolean}\r\n */\r\n visibleNewDuplicateRecord(typeId) {\r\n if (!this.isAllowedAuthor) return false;\r\n\r\n if (typeId === this.recordTypeId) {\r\n return true;\r\n }\r\n\r\n if (\r\n typeId === recordType.RECORD &&\r\n this.recordTypeId === recordType.FILE\r\n ) {\r\n if (this.recordAncestorTypeId !== recordType.DOCUMENT) return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Determine the visibility of New Agenda Document menu item\r\n * @param {Boolean} hideForDocumentAssembly - Hide Command if true\r\n * @return {Boolean|boolean}\r\n */\r\n visibleNewAgendaDocument(hideForDocumentAssembly = false) {\r\n if (!this.isAllowedAuthor) return false;\r\n\r\n /* if (isDocumentAssemblyEvent(this.record)) {\r\n if (this.recordTypeId === recordType.MEETING)\r\n return !hideForDocumentAssembly;\r\n }*/\r\n\r\n if (this.recordTypeId === recordType.MEETING) {\r\n return isDocumentAssemblyEvent(this.record)\r\n ? !hideForDocumentAssembly\r\n : true;\r\n }\r\n\r\n return (\r\n this.recordTypeId === recordType.FILE &&\r\n this.recordAncestorTypeId === recordType.MEETING\r\n );\r\n },\r\n\r\n commandNewAgendaDocumentLabel(agendaTypeId) {\r\n let label = findAgendaDocumentType(agendaTypeId)?.label;\r\n\r\n // Check if this.isEventDocumentAssembly is true and adjust the label\r\n if (this.isEventDocumentAssembly) {\r\n // Remove \"agenda\" from the label\r\n label = label.replace(/agenda\\s*/i, \"\"); // Removing \"agenda\" (case insensitive)\r\n }\r\n\r\n return label;\r\n },\r\n\r\n iconNewAgendaDocument(agendaTypeId) {\r\n return findAgendaDocumentType(agendaTypeId)?.icon;\r\n },\r\n\r\n /**\r\n * handle event on New Agenda Document\r\n * @param {Number|number} agendaTypeId agenda Type id\r\n * @return {Promise}\r\n */\r\n async onNewAgendaDocument(agendaTypeId) {\r\n const newRecordType = findRecordType(recordType.RECORD)?.name ?? \"Record\";\r\n\r\n try {\r\n this.newAgendaDocumentType = findAgendaDocumentType(agendaTypeId);\r\n\r\n if (!this.newAgendaDocumentType) {\r\n throw `Unable to find Agenda Document Type by agendaTypeId: ${agendaTypeId}`;\r\n }\r\n\r\n this.categoryTypeId = this.newAgendaDocumentType.categoryType;\r\n\r\n const newCategoryId = this.newAgendaDocumentCategoryId(\r\n this.categoryTypeId\r\n );\r\n\r\n await this.setNewRecordCategory(newCategoryId);\r\n\r\n const parentId =\r\n this.recordTypeId === recordType.MEETING\r\n ? this.record?.id ?? -1\r\n : this.record?.parentId ?? -1;\r\n\r\n const payload = {\r\n record: newRecord(\r\n recordType.RECORD,\r\n parentId,\r\n this.recordNewCategory,\r\n this.currentUser?.principal\r\n ),\r\n category: this.recordNewCategory\r\n };\r\n\r\n //\r\n // TODO: set agendaTypeId, so when CREATE button is selected,\r\n // after record is created then generate agenda document starts\r\n // and after agenda document generation, agenda document will be\r\n // auto-check-in\r\n //\r\n this.setNewRecord(payload);\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't set ${newRecordType}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * new Agenda Document Category\r\n * @param categoryTypeId category Type id\r\n * @return {number} Agenda Document Category id\r\n */\r\n newAgendaDocumentCategoryId(categoryTypeId) {\r\n const categories = this.getCreateRecordCategories(categoryTypeId) ?? [];\r\n\r\n return (categories?.length ?? 0) > 0\r\n ? categories[0]?.id\r\n : this.recordCategory?.id;\r\n },\r\n\r\n /**\r\n * Handle event set New Record\r\n * @param {number} recordTypeId Record Type id\r\n */\r\n async onNewRecord(recordTypeId) {\r\n const newRecordType =\r\n findRecordType(recordTypeId)?.name ??\r\n findRecordType(recordType.RECORD)?.name;\r\n\r\n try {\r\n /**\r\n * set a new record category type\r\n * @type {number}\r\n */\r\n this.categoryTypeId = this.newRecordCategoryTypeId(recordTypeId);\r\n\r\n /**\r\n * set a new record Parent id\r\n * @type {number}\r\n */\r\n const parentId = this.newRecordParentId(recordTypeId);\r\n\r\n /**\r\n * Handle new agenda item\r\n */\r\n if (recordTypeId === recordType.ITEM) {\r\n const sectionId =\r\n this.recordTypeId === recordType.SECTION\r\n ? this.record?.id ?? -1\r\n : this.record?.parentId ?? -1;\r\n await this.loadAgendaSectionItemTemplates(sectionId);\r\n }\r\n\r\n /**\r\n * set acquire a new file flag\r\n * @type {boolean}\r\n */\r\n this.acquireNewFile = recordTypeId === recordType.FILE;\r\n\r\n /**\r\n * Set new record's category\r\n * @type {number}\r\n */\r\n const newCategoryId = this.newRecordCategoryId(\r\n recordTypeId,\r\n this.categoryTypeId\r\n );\r\n\r\n await this.setNewRecordCategory(newCategoryId);\r\n\r\n const recordNew = newRecord(\r\n recordTypeId,\r\n parentId,\r\n this.recordNewCategory,\r\n this.currentUser?.principal\r\n );\r\n\r\n await this.setNewRecordAndProject(recordNew);\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't set ${newRecordType}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * new Record ParentId\r\n * @param {number} recordTypeId record Type id\r\n * @return {number}\r\n */\r\n newRecordParentId(recordTypeId) {\r\n const selRecordTypeId = this.recordTypeId;\r\n const selAncestorTypeId = this.recordAncestorTypeId;\r\n\r\n switch (recordTypeId) {\r\n case recordType.FOLDER: {\r\n switch (selRecordTypeId) {\r\n case recordType.FOLDER: {\r\n return this?.record?.id ?? -1;\r\n }\r\n default: {\r\n if (this.recordAncestorTypeId === recordType.FOLDER) {\r\n return this?.record?.ancestor?.id ?? -1;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case recordType.RECORD:\r\n case recordType.FILE: {\r\n switch (selRecordTypeId) {\r\n case recordType.RECORD: {\r\n return this.record?.parentId ?? -1;\r\n }\r\n case recordType.ITEM:\r\n case recordType.FOLDER: {\r\n return this?.record?.id ?? -1;\r\n }\r\n default: {\r\n if (\r\n selAncestorTypeId === recordType.FOLDER ||\r\n selAncestorTypeId === recordType.ITEM\r\n ) {\r\n return this.record?.ancestor?.id ?? -1;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case recordType.DOCUMENT: {\r\n switch (selRecordTypeId) {\r\n case recordType.DOCUMENT: {\r\n return this?.record?.parentId ?? -1;\r\n }\r\n case recordType.ITEM:\r\n case recordType.FOLDER: {\r\n return this?.record?.id ?? -1;\r\n }\r\n default: {\r\n if (\r\n selAncestorTypeId === recordType.FOLDER ||\r\n selAncestorTypeId === recordType.ITEM\r\n ) {\r\n return this.record?.ancestor?.id ?? -1;\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case recordType.MEETING: {\r\n switch (selRecordTypeId) {\r\n case recordType.MEETING: {\r\n return this?.record?.parentId ?? -1;\r\n }\r\n case recordType.FOLDER: {\r\n return this?.record?.id ?? -1;\r\n }\r\n }\r\n break;\r\n }\r\n case recordType.SECTION: {\r\n switch (selRecordTypeId) {\r\n case recordType.MEETING: {\r\n return this.record?.parentId ?? -1;\r\n }\r\n case recordType.SECTION: {\r\n return this.record?.id ?? -1;\r\n }\r\n }\r\n break;\r\n }\r\n case recordType.ITEM: {\r\n switch (selRecordTypeId) {\r\n case recordType.ITEM: {\r\n return this.record?.parentId ?? -1;\r\n }\r\n case recordType.SECTION: {\r\n return this.record?.id ?? -1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n throw `${findRecordType(recordTypeId)?.name ??\r\n \"?\"} cannot be created when a ${findRecordType(selRecordTypeId)?.name ??\r\n \"?\"} is selected.`;\r\n },\r\n\r\n /**\r\n * get new Record Category Type id\r\n * @param {number} newRecordTypeId new Record Type id\r\n * @return {number} new Record Category Type id\r\n */\r\n newRecordCategoryTypeId(newRecordTypeId) {\r\n switch (newRecordTypeId) {\r\n case recordType.ITEM: {\r\n return categoryType.item;\r\n }\r\n case recordType.MEETING: {\r\n return categoryType.meeting;\r\n }\r\n case recordType.SECTION: {\r\n return categoryType.section;\r\n }\r\n case recordType.DOCUMENT:\r\n case recordType.RECORD: {\r\n if (\r\n this.recordTypeId === recordType.ITEM ||\r\n this.recordAncestorTypeId === recordType.ITEM\r\n ) {\r\n return categoryType.backupMaterial;\r\n }\r\n break;\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n /**\r\n * Get new Record Category\r\n * @param {number} newRecordTypeId new Record Type id\r\n * @param {number} categoryTypeId category Type id\r\n * @return {number} new Record Category id\r\n */\r\n newRecordCategoryId(newRecordTypeId, categoryTypeId) {\r\n const categories = this.getCreateRecordCategories(categoryTypeId);\r\n\r\n switch (newRecordTypeId) {\r\n case recordType.MEETING:\r\n case recordType.SECTION:\r\n case recordType.ITEM: {\r\n return categories?.length ?? 0 > 0 ? categories[0]?.id : -1;\r\n }\r\n case recordType.DOCUMENT:\r\n case recordType.RECORD: {\r\n if (\r\n this.recordTypeId === recordType.ITEM ||\r\n this.recordAncestorTypeId === recordType.ITEM\r\n ) {\r\n return categories?.length ?? 0 > 0 ? categories[0]?.id : 0;\r\n }\r\n break;\r\n }\r\n }\r\n return this.recordCategory?.id ?? 0;\r\n },\r\n\r\n /**\r\n * Handle event set New Duplicate Record\r\n * @param {number} recordTypeId\r\n * @param {Boolean} inheritParentData\r\n * @return {Promise}\r\n */\r\n async onNewDuplicateRecord(recordTypeId, inheritParentData = false) {\r\n const newRecordType = findRecordType(recordTypeId)?.name ?? \"Record\";\r\n\r\n try {\r\n this.categoryTypeId = this.recordCategory?.categoryType ?? -1;\r\n\r\n await this.setNewRecordCategory(this.recordCategory?.id ?? -1);\r\n\r\n const recordNew = await duplicateRecord(\r\n this.record,\r\n this.recordNewCategory,\r\n recordTypeId,\r\n this.currentUser?.principal\r\n );\r\n\r\n // Used to set Record Parent Id to Selected Folder Id when creating record/Document with inherit data\r\n this.inheritParentData = inheritParentData;\r\n\r\n await this.setNewRecordAndProject(recordNew);\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't duplicate ${newRecordType}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * on New Workflow Project event handler\r\n */\r\n async onNewWorkflowProject() {\r\n try {\r\n await this.setNewWorkflowProject();\r\n this.validateNewProject();\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't set new project. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Handle event Edit record\r\n */\r\n onRecordEdit() {\r\n try {\r\n this.categoryTypeId = this.editRecordCategoryId();\r\n\r\n const payload = {\r\n record: editRecord(this.record),\r\n category: cloneDeep(this.recordCategory)\r\n };\r\n\r\n this.setEditRecord(payload);\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't edit ${this.record?.recordType} ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * get edit Record Category id\r\n * @return {number|number} edit Record Category id\r\n */\r\n editRecordCategoryId() {\r\n switch (this.recordTypeId) {\r\n case recordType.MEETING:\r\n case recordType.SECTION:\r\n case recordType.ITEM: {\r\n return (\r\n this.findCategory(this.record?.categoryId ?? -1)?.categoryType ?? -1\r\n );\r\n }\r\n case recordType.DOCUMENT:\r\n case recordType.FILE:\r\n case recordType.RECORD: {\r\n const ancestorType = this.recordAncestorTypeId;\r\n if (\r\n ancestorType === recordType.ITEM ||\r\n ancestorType === recordType.MEETING\r\n ) {\r\n return (\r\n this.findCategory(this.record?.categoryId ?? -1)?.categoryType ??\r\n -1\r\n );\r\n }\r\n break;\r\n }\r\n }\r\n return -1;\r\n },\r\n\r\n /**\r\n * show Delete RecordD dialog\r\n */\r\n showDeleteRecordDialog() {\r\n try {\r\n this.deleteError = undefined;\r\n this.visibleDialogDelete = true;\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't delete ${this.fullRecordName} ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * close Delete record dialog\r\n */\r\n closeDeleteRecordDialog() {\r\n this.visibleDialogDelete = false;\r\n this.alertIn = undefined;\r\n },\r\n\r\n /**\r\n * show Download File Dialog\r\n */\r\n showDownloadFileDialog() {\r\n try {\r\n this.visibleDownloadFileDialog = true;\r\n } catch (e) {\r\n const action = findRecordOperation(recordOperation.Download)?.label;\r\n this.showSnackbarError(\r\n `Couldn't ${action} ${this.fullRecordName} ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * close Download File Dialog\r\n */\r\n closeDownloadFileDialog() {\r\n this.visibleDownloadFileDialog = false;\r\n },\r\n\r\n /**\r\n * show Print File Dialog\r\n */\r\n showPrintFileDialog() {\r\n try {\r\n this.visiblePrintFileDialog = true;\r\n } catch (e) {\r\n const action = findRecordOperation(recordOperation.Print)?.label;\r\n this.showSnackbarError(\r\n `Couldn't ${action} ${this.fullRecordName} ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * close Print File Dialog\r\n */\r\n closePrintFileDialog() {\r\n this.visiblePrintFileDialog = false;\r\n },\r\n\r\n /**\r\n * Handle event onEditFileVersion\r\n */\r\n onEditFileVersion() {\r\n try {\r\n switch (this.recordTypeId) {\r\n case recordType.RECORD: {\r\n this.showDocumentEditorDialog();\r\n break;\r\n }\r\n case recordType.FILE: {\r\n if (this.record?.stateId ?? -1 === recordState.checkedOut) {\r\n this.showDocumentEditorDialog();\r\n } else {\r\n this.showDocumentEditorDialog();\r\n break;\r\n }\r\n break;\r\n }\r\n case recordType.DOCUMENT: {\r\n this.showDocumentEditorDialog();\r\n break;\r\n }\r\n default: {\r\n this.showSnackbarError(\r\n `Invalid operation, since ${this.fullRecordName} is ${\r\n findRecordState(this.record?.stateId ?? recordType.RECORD)?.name\r\n }`,\r\n true\r\n );\r\n break;\r\n }\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't Edit File Version: ${this.fullRecordName}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * show Document Editor Dialog\r\n */\r\n showDocumentEditorDialog() {\r\n this.visibleDocumentEditorDialog = true;\r\n this.openScanDialog = false;\r\n //\r\n // perform any cleanup here ...\r\n //\r\n },\r\n\r\n /**\r\n * close Document Editor Dialog\r\n */\r\n closeDocumentEditorDialog() {\r\n this.visibleDocumentEditorDialog = false;\r\n this.openScanDialog = false;\r\n //\r\n // perform any cleanup here ...\r\n //\r\n },\r\n\r\n /**\r\n * Open Upload Compound Document Dialog\r\n */\r\n openUploadCompoundDocumentDialog() {\r\n this.visibleUploadCompoundDocumentDialog = true;\r\n },\r\n\r\n /**\r\n * Close Upload Compound Document Dialog\r\n */\r\n closeUploadCompoundDocumentDialog() {\r\n this.visibleUploadCompoundDocumentDialog = false;\r\n },\r\n\r\n /**\r\n * Open Default Pdf Viewer Dialog\r\n */\r\n openDefaultPdfViewerDialog() {\r\n this.visibleDefaultPdfViewerDialog = true;\r\n },\r\n\r\n /**\r\n * Close Default Pdf Viewer Dialog\r\n */\r\n closeDefaultPdfViewerDialog() {\r\n this.visibleDefaultPdfViewerDialog = false;\r\n },\r\n\r\n /**\r\n * Handle event Acquire file by Scanning pages\r\n */\r\n onAcquireScan() {\r\n try {\r\n console.log(`onAcquireScan() file to: ${this.fullRecordName}`);\r\n\r\n if (!this.record) {\r\n throw `There is no current record.`;\r\n }\r\n\r\n switch (this.recordTypeId) {\r\n case recordType.RECORD: {\r\n this.visibleDocumentEditorDialog = true;\r\n break;\r\n }\r\n case recordType.FILE: {\r\n if ((this.record?.stateId ?? -1) === recordState.checkedOut) {\r\n this.openScanDialog = true;\r\n this.visibleDocumentEditorDialog = true;\r\n console.log(\r\n `onEditFileVersion() file to: ${this.fullRecordName} visibleDocumentEditorDialog:`,\r\n this.visibleDocumentEditorDialog\r\n );\r\n } else {\r\n this.visibleDocumentEditorDialog = true;\r\n break;\r\n }\r\n break;\r\n }\r\n case recordType.DOCUMENT: {\r\n this.visibleDocumentEditorDialog = true;\r\n break;\r\n }\r\n default: {\r\n throw `Invalid operation, since ${this.fullRecordName} is ${\r\n findRecordState(this.record?.stateId ?? recordState.created)?.name\r\n }`;\r\n }\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't ${this.commandAcquireScanLabel} ${\r\n this.fullRecordName\r\n } ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Handle event recordSetReadOnly\r\n * @return {Promise}\r\n */\r\n async recordSetReadOnly() {\r\n try {\r\n await this.setReadOnlyRecord(this.id);\r\n\r\n if (this.record?.isReadOnly ?? false) {\r\n this.showSnackbarSuccess(`${this.fullRecordName} is Read Only`, true);\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is Not Read Only`,\r\n true\r\n );\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't set Read Only Mode ${this.fullRecordName}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n /**\r\n * Handle event recordSetDraft\r\n * @return {Promise}\r\n */\r\n async recordSetDraft() {\r\n try {\r\n await this.setDraftRecord(this.id);\r\n\r\n if (this.record?.isDraft ?? false) {\r\n this.showSnackbarSuccess(`${this.fullRecordName} is Draft`, true);\r\n } else {\r\n this.showSnackbarWarning(`${this.fullRecordName} is Not Draft`, true);\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't set Draft ${this.fullRecordName}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n /**\r\n * Handle event recordLock\r\n * @return {Promise}\r\n */\r\n async recordLock() {\r\n try {\r\n await this.lockRecord(this.id);\r\n\r\n if (this.record?.isLocked ?? false) {\r\n this.showSnackbarSuccess(`${this.fullRecordName} is Locked`, true);\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is Not Locked`,\r\n true\r\n );\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't Lock ${this.fullRecordName}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n /**\r\n * Handle event recordUnLock\r\n * @return {Promise}\r\n */\r\n async recordUnLock() {\r\n try {\r\n await this.unLockRecord(this.id);\r\n\r\n if (!this.record?.isLocked ?? false) {\r\n this.showSnackbarSuccess(`${this.fullRecordName} is Un Locked`, true);\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is NOT Un Locked`,\r\n true\r\n );\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't Un Lock ${this.fullRecordName}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Check Out the current File\r\n * @return {Promise<{name: string, params: {id: number}, query: {searchTerm: string, documentVersion: number}}>}\r\n */\r\n async recordCheckOut(defaultPdfViewer = false) {\r\n try {\r\n await this.checkOutFile(this.id);\r\n\r\n if (\r\n (this.record?.stateId ?? recordState.created) ===\r\n recordState.checkedOut\r\n ) {\r\n this.showSnackbarSuccess(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n this.postMessageToListener(this.record, false);\r\n\r\n if (defaultPdfViewer) {\r\n const documentViewerRoute = createDocumentViewerRoute(\r\n this.record,\r\n this.fullTextSearchCriteria\r\n );\r\n const routeUrl = this.$router.resolve(documentViewerRoute).href;\r\n console.log(routeUrl);\r\n setTimeout(() => {\r\n window.open(routeUrl, \"_blank\");\r\n }, 100);\r\n this.visibleDefaultPdfViewerDialog = false;\r\n }\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't Check Out ${this.fullRecordName}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Check Out the File as a PDF document, so that e-signature can be applied locally at the client station\r\n * @return {Promise}\r\n */\r\n async recordCheckOutForSign() {\r\n try {\r\n await this.checkOutFileForSign(this.id);\r\n\r\n if (\r\n (this.record?.stateId ?? recordState.created) ===\r\n recordState.checkedOut\r\n ) {\r\n this.showSnackbarSuccess(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n this.postMessageToListener(this.record, false);\r\n\r\n console.log(\"Current record:\", this.record);\r\n\r\n this.showDownloadFileDialog();\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't Check Out ${this.fullRecordName}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Release current record/file\r\n * @return {Promise<{type: string, message: string, outcome: string}>}\r\n */\r\n async recordRelease() {\r\n try {\r\n const operation = findRecordOperation(recordOperation.Release);\r\n const action = `${operation?.label} ${\r\n this.record?.recordType\r\n }: '${fullRecordVersionName(this.record)}'`;\r\n console.log(`${this.$options.name} recordRelease()`);\r\n await this.releaseFile(this.id);\r\n if (\r\n (this.record?.stateId ?? recordState.created) ===\r\n recordState.checkedIn\r\n ) {\r\n this.postMessageToListener(this.record, false);\r\n }\r\n return createActionResultSuccess(action);\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n }\r\n },\r\n\r\n /**\r\n * Delete current record\r\n * @return {Promise}\r\n */\r\n async recordDelete() {\r\n const parentId = this.record?.parentId ?? -1;\r\n this.postMessageToListener(this.record, true);\r\n\r\n if (this.record?.isLink ?? false) {\r\n const payload = {\r\n id: this.record?.id ?? -1,\r\n parentId: parentId\r\n };\r\n await this.deleteRecordShortcut(payload);\r\n } else await this.deleteRecord(this.record);\r\n\r\n // Locate parent of deleted record\r\n if (this.canNavigateToModuleItem(parentId)) {\r\n await this.$router.push(this.createModuleItemContentRoute(parentId));\r\n }\r\n },\r\n\r\n /**\r\n * on Record Action\r\n * @param {String} action action name\r\n * @return {Promise}\r\n */\r\n async onRecordAction(action) {\r\n try {\r\n switch (action) {\r\n case recordOperation.CheckOut: {\r\n await this.recordCheckOut();\r\n break;\r\n }\r\n case recordOperation.CheckOutForSign: {\r\n await this.recordCheckOutForSign();\r\n break;\r\n }\r\n case recordOperation.Release: {\r\n this.isFileChanged = true;\r\n this.visibleDialogRelease = true;\r\n break;\r\n }\r\n case recordOperation.Lock: {\r\n await this.recordLock();\r\n break;\r\n }\r\n case recordOperation.Unlock: {\r\n await this.recordUnLock();\r\n break;\r\n }\r\n case recordOperation.SetDraft: {\r\n await this.recordSetDraft();\r\n break;\r\n }\r\n case recordOperation.SetReadOnly: {\r\n await this.recordSetReadOnly();\r\n break;\r\n }\r\n case recordOperation.Download: {\r\n this.showDownloadFileDialog();\r\n break;\r\n }\r\n case recordOperation.Print: {\r\n this.showPrintFileDialog();\r\n break;\r\n }\r\n case recordOperation.Delete: {\r\n this.showDeleteRecordDialog();\r\n break;\r\n }\r\n case recordOperation.Email: {\r\n this.onEmailFile();\r\n break;\r\n }\r\n default: {\r\n this.showSnackbarWarning(`TODO: ${action}`, true);\r\n }\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Unable to ${action}: '${this.fullRecordName}'. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Handle event on Agenda Meeting Operation\r\n * @param {String|string} operation Agenda Meeting Operation name\r\n */\r\n async onAgendaMeetingOperation(operation) {\r\n try {\r\n switch (operation) {\r\n case agendaMeetingOperation.publish: {\r\n await this.agendaMeetingPublish();\r\n break;\r\n }\r\n case agendaMeetingOperation.unpublish: {\r\n await this.agendaMeetingUnPublish();\r\n break;\r\n }\r\n case agendaMeetingOperation.post: {\r\n await this.agendaMeetingPost();\r\n break;\r\n }\r\n case agendaMeetingOperation.unpost: {\r\n await this.agendaMeetingUnPost();\r\n break;\r\n }\r\n case agendaMeetingOperation.mediaManagerImport: {\r\n //await this.importFromMediaManager();\r\n this.showSnackbarWarning(`TODO: ${operation}`, true);\r\n break;\r\n }\r\n case agendaMeetingOperation.mediaManagerExport: {\r\n //await this.exportToMediaManager();\r\n this.showSnackbarWarning(`TODO: ${operation}`, true);\r\n break;\r\n }\r\n default: {\r\n this.showSnackbarWarning(`Unknown operation: ${operation}`, true);\r\n }\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Unable to ${operation}: '${this.fullRecordName}'. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Handle event on Agenda Item Operation\r\n * @param {String|string} operation Agenda Item Operation name\r\n */\r\n\r\n async onAgendaItemOperation(operation) {\r\n try {\r\n switch (operation) {\r\n case agendaItemOperation.submit: {\r\n await this.agendaItemSubmit();\r\n break;\r\n }\r\n case agendaItemOperation.recall: {\r\n await this.agendaItemRecall();\r\n break;\r\n }\r\n case agendaItemOperation.refer: {\r\n const payload = {\r\n type: contextMenuRecordOperation.Copy,\r\n record: this.record\r\n };\r\n this.setMovedRecord(payload);\r\n this.showSnackbarSuccess(\r\n `Successfully Referred: ${this.movedRecord?.record?.name ?? \"\"}`,\r\n true\r\n );\r\n break;\r\n }\r\n case agendaItemOperation.defer: {\r\n const payload = {\r\n type: contextMenuRecordOperation.Cut,\r\n record: this.record\r\n };\r\n this.setMovedRecord(payload);\r\n this.showSnackbarSuccess(\r\n `Successfully Deferred: ${this.movedRecord?.record?.name ?? \"\"}`,\r\n true\r\n );\r\n\r\n break;\r\n }\r\n default: {\r\n this.showSnackbarWarning(`Unknown operation: ${operation}`, true);\r\n }\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Couldn't ${operation} ${this.fullRecordName}'. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * publish current Agenda Meeting\r\n * @return {Promise}\r\n */\r\n async agendaMeetingPublish() {\r\n await this.publishAgendaMeeting(this.record?.id ?? -1);\r\n if ((this.record?.stateId ?? -1) === recordState.published) {\r\n this.showSnackbarSuccess(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * un Publish current Agenda Meeting\r\n * @return {Promise}\r\n */\r\n async agendaMeetingUnPublish() {\r\n await this.unPublishAgendaMeeting(this.record?.id ?? -1);\r\n if ((this.record?.stateId ?? -1) !== recordState.published) {\r\n this.showSnackbarSuccess(\r\n `${this.fullRecordName} is Un-${\r\n findRecordState(recordState.published)?.name\r\n }`,\r\n true\r\n );\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * post current Agenda Meeting\r\n * @return {Promise}\r\n */\r\n async agendaMeetingPost() {\r\n await this.postAgendaMeeting(this.record?.id ?? -1);\r\n if ((this.record?.stateId ?? -1) === recordState.posted) {\r\n this.showSnackbarSuccess(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * un Post current Agenda Meeting\r\n * @return {Promise}\r\n */\r\n async agendaMeetingUnPost() {\r\n await this.unPostAgendaMeeting(this.record?.id ?? -1);\r\n if ((this.record?.stateId ?? -1) !== recordState.posted) {\r\n this.showSnackbarSuccess(\r\n `${this.fullRecordName} Un-${\r\n findRecordState(recordState.posted)?.name\r\n }`,\r\n true\r\n );\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Submit agenda Item\r\n * @return {Promise}\r\n */\r\n async agendaItemSubmit() {\r\n await this.submitAgendaItem(this.record?.id ?? -1);\r\n if ((this.record?.stateId ?? -1) === recordState.submitted) {\r\n this.showSnackbarSuccess(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Recall agenda Item\r\n * @return {Promise}\r\n */\r\n async agendaItemRecall() {\r\n await this.recallAgendaItem(this.record?.id ?? -1);\r\n if ((this.record?.stateId ?? -1) !== recordState.submitted) {\r\n this.showSnackbarSuccess(`${this.fullRecordName} recalled`, true);\r\n } else {\r\n this.showSnackbarWarning(\r\n `${this.fullRecordName} is ${this.record?.state}`,\r\n true\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Get record Operation Icon\r\n * @param {string} operation record Operation name\r\n * @return {String|string|undefined}\r\n */\r\n recordOperationIcon(operation) {\r\n return recordOperationIcon(this.record, operation);\r\n },\r\n\r\n /**\r\n * record Operation Label\r\n * @param {string} operation record Operation name\r\n * @return {string} record Operation Label\r\n */\r\n recordOperationLabel(operation) {\r\n return recordOperationLabel(operation);\r\n },\r\n\r\n /**\r\n * Record Operation Tooltip\r\n * @param operation\r\n * @return {*}\r\n */\r\n recordOperationTooltip(operation) {\r\n return recordOperationTooltip(operation);\r\n },\r\n\r\n /**\r\n * on Upload File event handler\r\n * @param {File} file\r\n * @param {Boolean} isInsertFile\r\n * @param {Boolean} insertAtBeginning\r\n * @param {{isCheckInDraft: boolean, isCheckInOCR : boolean, checkInComment : string}} checkInOption\r\n * @return {Promise<{type: string, message: string, outcome: string}>}\r\n */\r\n async onUploadFile(file, isInsertFile, insertAtBeginning, checkInOption) {\r\n try {\r\n this.uploadFileError = undefined;\r\n this.setUploadFileProgress(0);\r\n\r\n const operation = findRecordOperation(recordOperation.Update);\r\n const action = `${operation?.label} File ${\r\n this.record?.recordType\r\n }: '${fullRecordVersionName(this.record)}'`;\r\n console.log(`${this.$options.name} onUploadFile()`);\r\n\r\n await this.performCheckIn(\r\n file,\r\n isInsertFile,\r\n insertAtBeginning,\r\n checkInOption\r\n );\r\n\r\n this.showSnackbarSuccess(\r\n `${this.uploadFileProgress}% Uploaded file`,\r\n true\r\n );\r\n return createActionResultSuccess(action);\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n } finally {\r\n this.setUploadFileProgress(0);\r\n this.postMessageToListener(this.record, true);\r\n }\r\n },\r\n\r\n /**\r\n * Handle event onCategoryChanged\r\n * @param {Number|number} id Category id\r\n * @return {Promise}\r\n */\r\n async onCategoryChanged(id) {\r\n try {\r\n if (\r\n id === this.recordNew?.categoryId &&\r\n id === this.recordNewCategory?.id\r\n ) {\r\n return;\r\n }\r\n\r\n this.loadingCategory = true;\r\n\r\n console.log(`*->${this.$options.name}.onCategoryChanged(${id})`);\r\n\r\n await this.setNewRecordCategory(id);\r\n\r\n console.log(\r\n `*->${this.$options.name}.onCategoryChanged(${id}) this.recordNewCategory:`,\r\n this.recordNewCategory\r\n );\r\n\r\n if (this.isAvailableProjectsModule) {\r\n const workflow = this.recordNewCategory?.workflow;\r\n\r\n if (this.isNewRecordProject) {\r\n if (this.projectNew) {\r\n await this.setProjectNewTemplate(workflow?.template?.id ?? -1);\r\n } else {\r\n await this.setNewWorkflowProject();\r\n }\r\n this.validateNewProject();\r\n } else {\r\n this.autoSwitchStartNewRecordProjectOn(\r\n workflow?.startProjectOption?.value\r\n );\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n this.showSnackbarError(e, true);\r\n } finally {\r\n this.loadingCategory = false;\r\n }\r\n },\r\n\r\n /**\r\n * Handle event Workflow Project Template Changed\r\n * @param {number} templateId Workflow Project Template id\r\n * @return {Promise}\r\n */\r\n async onProjectTemplateChanged(templateId) {\r\n try {\r\n console.log(\r\n `${this.$options.name}.onProjectTemplateChanged() templateId:`,\r\n templateId\r\n );\r\n\r\n await this.setProjectNewTemplate(templateId);\r\n\r\n console.log(\r\n `${this.$options.name}.onProjectTemplateChanged() this.projectNewTemplate:`,\r\n this.projectNewTemplate\r\n );\r\n } catch (e) {\r\n console.error(e.toString());\r\n this.showSnackbarError(e.toString(), true);\r\n }\r\n },\r\n\r\n /**\r\n * Handle event onAgendaTemplateChanged\r\n * @param agendaTemplate\r\n * @return {Promise}\r\n */\r\n async onAgendaTemplateChanged(agendaTemplate) {\r\n try {\r\n this.agendaTemplate = agendaTemplate;\r\n // Apply Agenda Template - Meeting Record\r\n const record = this.agendaTemplate?.record;\r\n await this.onCategoryChanged(record?.categoryId ?? -1);\r\n copyAgendaTemplateRecord(record, this.currentRecord);\r\n } catch (e) {\r\n console.error(e.toString());\r\n this.showSnackbarError(e.toString(), true);\r\n }\r\n },\r\n\r\n async onAgendaItemTemplateChanged(agendaItemTemplate) {\r\n try {\r\n this.agendaItemTemplate = agendaItemTemplate;\r\n\r\n const index = this.agendaItemTemplates.indexOf(agendaItemTemplate);\r\n console.log(`AgendaItemTemplate index:`, index);\r\n\r\n // Apply Agenda Template - Meeting Record\r\n const record = agendaItemTemplate?.record;\r\n await this.onCategoryChanged(record?.categoryId ?? -1);\r\n copyAgendaTemplateRecord(record, this.currentRecord);\r\n } catch (e) {\r\n console.error(e.toString());\r\n this.showSnackbarError(e.toString(), true);\r\n }\r\n },\r\n\r\n /**\r\n * Handles event onMoreText\r\n * @param field\r\n * @return {Promise}\r\n */\r\n async onMoreText(field) {\r\n try {\r\n this.loadingFieldValueId = field?.id ?? -1;\r\n\r\n await this.setRecordTextFieldValue(field?.id ?? -1);\r\n } catch (e) {\r\n console.error(e.toString());\r\n } finally {\r\n this.loadingFieldValueId = -1;\r\n }\r\n },\r\n\r\n /**\r\n * Handles event onDatabaseLookup\r\n * @return {Promise}\r\n */\r\n async onDatabaseLookup() {\r\n try {\r\n this.loadingDatabaseLookupData = true;\r\n await this.setDatabaseLookupData();\r\n } catch (e) {\r\n this.showSnackbarError(e.toString(), true);\r\n } finally {\r\n this.loadingDatabaseLookupData = false;\r\n }\r\n },\r\n\r\n /**\r\n * Abstract close Dropdown Menu Acquire\r\n */\r\n closeUploadFileDropdownParentMenu() {\r\n console.warn(`Abstract closeUploadFileDropdownParentMenu() called`);\r\n },\r\n\r\n /**\r\n * Abstract close Dropdown Menu Actions\r\n */\r\n closeCheckInFileDropdownParentMenu() {\r\n console.warn(`Abstract closeCheckInFileDropdownParentMenu() called`);\r\n },\r\n\r\n /**\r\n * Handle on validate form event\r\n * Performs Record's data entry validation\r\n * @return {boolean}\r\n */\r\n onValidateForm() {\r\n let result = false;\r\n\r\n try {\r\n if (this.currentRecordMode === recordMode.newProject) {\r\n if (this.$refs.formNewProject) {\r\n result =\r\n this.$refs.formNewProject.validate() && this.validProjectTasks;\r\n\r\n const resultMsg = result ? \"Valid\" : \"Not valid\";\r\n const msg = `${resultMsg} ${this.recordModeName} entries`;\r\n\r\n if (result) {\r\n this.showSnackbarSuccess(msg, true);\r\n } else {\r\n this.showSnackbarError(msg, true, 2000);\r\n }\r\n } else {\r\n this.showSnackbarError(\r\n `Not found referenced formNewProject`,\r\n true,\r\n 2000\r\n );\r\n }\r\n return result;\r\n }\r\n\r\n if (this.$refs.formRecord) {\r\n result = this.$refs.formRecord.validate();\r\n\r\n const resultMsg = result ? \"Valid\" : \"Not valid\";\r\n const msg = `${resultMsg} ${this.recordModeName} ${this.currentRecord?.recordType} entries`;\r\n\r\n if (result) {\r\n this.showSnackbarSuccess(msg, true);\r\n } else {\r\n this.showSnackbarError(msg, true, 2000);\r\n }\r\n } else {\r\n this.showSnackbarError(`Not found referenced formRecord`, true, 2000);\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(\r\n `Unable to ${this.commandValidateFormToolTip}. ${e.toString()}`,\r\n true\r\n );\r\n }\r\n return result;\r\n },\r\n\r\n /**\r\n * Opens Check In Dialogue if File Modified, else open Release Dialog\r\n */\r\n openCheckInDialog() {\r\n try {\r\n // console.log(`openCheckInDialog() this.record:`, this.record);\r\n\r\n this.isFileChanged = this.record?.localFile?.isModified ?? false;\r\n this.filePageCount = this.record?.localFile?.pageCount ?? 0;\r\n\r\n this.isFileChanged\r\n ? (this.visibleCheckInDialog = true)\r\n : (this.visibleDialogRelease = true);\r\n\r\n // console.log(\r\n // `openCheckInDialog() this.isFileChanged:`,\r\n // this.isFileChanged\r\n // );\r\n // console.log(\r\n // `openCheckInDialog() this.filePageCount:`,\r\n // this.filePageCount\r\n // );\r\n } catch (e) {\r\n this.showSnackbarError(`openCheckInDialog() ${e}`, true);\r\n }\r\n },\r\n /**\r\n * Check in record\r\n * @param checkInModel\r\n * @param checkInOption\r\n */\r\n async checkInEditedFile(checkInModel, checkInOption) {\r\n try {\r\n // reset here all necessary variables\r\n checkInModel.visibleCheckInProgress = true;\r\n this.resetDialogErrors(checkInModel);\r\n\r\n const id = this.record?.id ?? -1;\r\n const model = CheckInOptionModel(\r\n checkInModel.checkInExtension.value,\r\n checkInOption.checkInComment,\r\n checkInOption.isCheckInOCR,\r\n checkInOption.isCheckInDraft\r\n );\r\n\r\n const payload = {\r\n id: id,\r\n version: this.record?.version ?? -1,\r\n checkInModel: model\r\n };\r\n\r\n console.log(\r\n `${this.$options.name}.checkInEditedFile() payload:`,\r\n payload\r\n );\r\n\r\n //\r\n // REMARKS: it is recommended\r\n //\r\n // 1. - execute an action, which should update store by colling mutations accordingly\r\n await this.checkInEditedDocument(payload);\r\n\r\n // 2. - check from store current record (have all changes been committed successfully?)\r\n const stateId = this.record?.stateId ?? -1;\r\n\r\n // 3. - update UI using an expected outcome ...\r\n if (stateId === recordState.checkedIn) {\r\n checkInModel.visibleCheckInProgress = false;\r\n this.visibleCheckInDialog = false;\r\n this.postMessageToListener(this.record, true);\r\n } else {\r\n console.log(findRecordState(recordState.checkedIn));\r\n checkInModel.currentError = `${this.recordDetailsBannerTitle} not ${\r\n findRecordState(recordState.checkedIn)?.name\r\n }. ${findRecordType(this.recordTypeId)?.name} state: ${\r\n findRecordState(stateId)?.name\r\n }`;\r\n }\r\n } catch (e) {\r\n checkInModel.currentError = e.toString();\r\n this.showSnackbarError(e.toString(), true);\r\n }\r\n },\r\n /**\r\n * Reset All the errors before Checking In\r\n * @param checkInModel\r\n */\r\n resetDialogErrors(checkInModel) {\r\n if (checkInModel) {\r\n checkInModel.currentError = undefined;\r\n }\r\n },\r\n\r\n /**\r\n * Handle Event onRecordChanged\r\n * @param {{RecordInfo: ({agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, checkOutExtension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, comments: string, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}|{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}|{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array} | {agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}), HasVersionChanged: boolean}} changedRecordModel\r\n */\r\n async onRecordChanged(changedRecordModel) {\r\n try {\r\n const record = changedRecordModel.RecordInfo;\r\n const hasNewVersion = changedRecordModel.HasVersionChanged;\r\n\r\n console.log(\r\n `Component: ${this.$options.name} onRecordChanged() record:`,\r\n record\r\n );\r\n\r\n this.updateRecordInfo(record);\r\n\r\n const recordId = record?.id ?? -1;\r\n const isCurrent = this.record?.id === recordId;\r\n if (isCurrent) {\r\n if (this.isFileWithNewVersion(record, hasNewVersion)) {\r\n await this.setFileVersions(recordId);\r\n }\r\n if (this.isCompoundDocumentWithNewFiles(record, hasNewVersion)) {\r\n // True when a document checked in from embedded viewer\r\n await this.setDocuments(recordId); // USE COMPOUND CHILDREN\r\n }\r\n }\r\n } catch (e) {\r\n this.showSnackbarError(e.toString(), true);\r\n }\r\n },\r\n\r\n async loadAgendaSectionItemTemplates(sectionId) {\r\n try {\r\n this.agendaItemTemplates =\r\n (await this.getAgendaItemTemplates(sectionId))?.data ?? [];\r\n } catch (e) {\r\n this.showSnackbarError(e.toString(), true);\r\n }\r\n },\r\n\r\n getCreateRecordCategories(categoryTypeId = -1) {\r\n return categoryTypeId < 0\r\n ? this.createRecordCategories ?? []\r\n : this.createRecordCategoriesByCategoryType(categoryTypeId) ?? [];\r\n },\r\n\r\n getUpdateRecordCategories(categoryTypeId = -1) {\r\n return categoryTypeId < 0\r\n ? this.updateRecordCategories ?? []\r\n : this.updateRecordCategoriesByCategoryType(categoryTypeId) ?? [];\r\n },\r\n\r\n /**\r\n * Upload File To Compound Document\r\n * @param {Number|number} insertPosition\r\n * @param {{isCheckInDraft: boolean, isCheckInOCR : boolean, checkInComment : string}} checkInOption\r\n * @param {File} file\r\n * @returns {Promise<{type: string, message: string, outcome: string}>} Action Result\r\n */\r\n async uploadFileToCompoundDocument(insertPosition, checkInOption, file) {\r\n try {\r\n this.uploadFileError = undefined;\r\n this.setUploadFileProgress(0);\r\n\r\n const operation = findRecordOperation(recordOperation.Update);\r\n const action = `${operation?.label} File To ${\r\n this.record?.recordType\r\n }: '${fullRecordVersionName(this.record)}'`;\r\n console.log(`${this.$options.name} uploadFileToCompoundDocument()`);\r\n\r\n console.log(\r\n `${this.$options.name} uploadFileToCompoundDocument() Insert Position`,\r\n insertPosition\r\n );\r\n console.log(\r\n `${this.$options.name} uploadFileToCompoundDocument() checkInOption: `,\r\n checkInOption\r\n );\r\n console.log(\r\n `${this.$options.name} uploadFileToCompoundDocument() file: `,\r\n file\r\n );\r\n\r\n console.log(\r\n `${this.$options.name} uploadFileToCompoundDocument() Should Overwrite: `,\r\n isCompoundFile(this.record) &&\r\n insertPosition === this.compoundFileOverwrite\r\n );\r\n\r\n if (\r\n isCompoundFile(this.record) &&\r\n insertPosition === this.compoundFileOverwrite\r\n ) {\r\n await this.performCheckIn(file, false, false, checkInOption);\r\n } else {\r\n const fileId = isCompoundFile(this.record)\r\n ? this.record?.ancestor?.id ?? -1\r\n : this.record?.id ?? -1;\r\n\r\n await this.uploadCompoundDocumentFile({\r\n id: fileId,\r\n file: file,\r\n insertBeforePage: insertPosition,\r\n enqueue: checkInOption.isCheckInOCR,\r\n comments: checkInOption.checkInComment\r\n });\r\n\r\n // navigate to Main Document Path\r\n //\r\n // TODO: Sameed use:\r\n // this.navigateToModuleRecord();\r\n //\r\n // instead:\r\n //\r\n // Necessary call, especially when compound file is selected and upload is performed without OVERWRITE\r\n if (\r\n isCompoundFile(this.record) &&\r\n this.canNavigateToModuleItem(fileId)\r\n ) {\r\n await this.$router.push(this.createModuleItemContentRoute(fileId));\r\n }\r\n }\r\n\r\n this.showSnackbarSuccess(\r\n `${this.uploadFileProgress}% Uploaded file`,\r\n true\r\n );\r\n return createActionResultSuccess(action);\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n } finally {\r\n this.setUploadFileProgress(0);\r\n }\r\n },\r\n\r\n /**\r\n *\r\n * @param {{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, checkOutExtension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, comments: string, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array} | {agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array} | {agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}} updatedRecordInfo - Can be FileModel/RecordItemModel/DocumentModel\r\n * @param {Boolean} hasVersionChanged\r\n */\r\n postMessageToListener(updatedRecordInfo, hasVersionChanged) {\r\n const recordModel = ChangedRecordInfoModel(\r\n updatedRecordInfo,\r\n hasVersionChanged\r\n );\r\n console.log(\r\n `${this.$options.name}: postMessageToListener recordModel:`,\r\n recordModel\r\n );\r\n this.postMessage(recordModel);\r\n },\r\n\r\n /**\r\n * Verify if the Record is File and has new Version/s\r\n * @param record\r\n * @param {Boolean} hasNewVersion\r\n * @return {Boolean}\r\n */\r\n isFileWithNewVersion(record, hasNewVersion) {\r\n console.log(\r\n `Component: ${this.$options.name} isFileWithNewVersion() setFileVersion:`,\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.FILE &&\r\n hasNewVersion\r\n );\r\n return (\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.FILE &&\r\n hasNewVersion\r\n );\r\n },\r\n\r\n /**\r\n * Verify if Record is Compound Document and has new Files/Children\r\n * @param {{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, checkOutExtension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, comments: string, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array} | {agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array} | {agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}} record - Can be FileModel/RecordItemModel/DocumentModel\r\n * @param {Boolean} hasNewFiles\r\n * @return {Boolean} {false}\r\n */\r\n isCompoundDocumentWithNewFiles(record, hasNewFiles) {\r\n return isCompoundDocument(record) && hasNewFiles;\r\n },\r\n\r\n /**\r\n * Sets Agenda Packet Model value received by event\r\n * @param model {{downOptions: [{disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}], item: boolean, includeLinkBackUp: boolean, pagesSuffixValue: string, itemTitleLengthValue: string, itemTitle: boolean, pagePrefixValue: string, linkNote: string, includeLinkAgenda: boolean, upOptions: [{disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}, {disabled: boolean, text: string, value: number}], itemTitlePrefixValue: string, currentTab: number, pagesPrefixValue: string, includePageSeparator: boolean, numberPosition: number, linkStaticText: string, itemSuffixValue: string, pages: boolean, pageSuffixValue: string, itemPrefixValue: string, page: boolean, agendaItemTitle: string}}\r\n */\r\n onAgendaPacketOptionsChanged(model) {\r\n this.agendaPacketModel = model;\r\n },\r\n\r\n /**\r\n * Validate if Operation is Refer or Defer\r\n * @return {string}\r\n */\r\n isReferOrDefer() {\r\n try {\r\n const type =\r\n this.movedRecord?.moveType ?? contextMenuRecordOperation.Copy;\r\n if (type === contextMenuRecordOperation.Copy)\r\n return findAgendaItemOperation(agendaItemOperation.refer).label;\r\n else return findAgendaItemOperation(agendaItemOperation.defer).label;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * Verify is Allowed Commit Refer/Defer\r\n * @return {boolean}\r\n */\r\n isAllowedCommitReferDefer() {\r\n try {\r\n const recordTypeId = this.record?.recordTypeId ?? -1;\r\n\r\n return (\r\n recordTypeId === recordType.SECTION ||\r\n recordTypeId === recordType.ITEM\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * Compute if Enable Commit Refer/Defer\r\n * @return {boolean}\r\n */\r\n enableCommitReferDefer() {\r\n try {\r\n if (!this.movedRecord?.record) return false;\r\n\r\n return (this.movedRecord?.record?.id ?? -1) !== (this.record?.id ?? -1);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * On Commit Refer Defer Command\r\n * @return {Promise}\r\n */\r\n async onCommitReferDefer() {\r\n try {\r\n const operation = this.isReferOrDefer();\r\n\r\n this.sourceRecord = this.movedRecord.record ?? undefined;\r\n this.destinationRecord = this.record ?? undefined;\r\n\r\n const sectionId =\r\n this.destinationRecord.recordTypeId === recordType.SECTION\r\n ? this.destinationRecord.id\r\n : this.destinationRecord.ancestor.id;\r\n\r\n await this.loadAgendaSectionItemTemplates(sectionId);\r\n\r\n if (\r\n operation === findAgendaItemOperation(agendaItemOperation.refer).label\r\n )\r\n this.visibleReferDialog = true;\r\n else this.visibleDeferDialog = true;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * Event On Item Refer\r\n * @param option\r\n * @param templateIndex\r\n * @return {Promise<{type: string, message: string, outcome: string}>}\r\n */\r\n async onItemRefer(option, templateIndex) {\r\n try {\r\n console.log(\r\n `${this.$options.name} onItemDefer() Insert Option`,\r\n option\r\n );\r\n console.log(\r\n `${this.$options.name} onItemDefer() templateIndex: `,\r\n templateIndex\r\n );\r\n\r\n const operation = findAgendaItemOperation(agendaItemOperation.refer);\r\n const action = `${operation?.label} ${\r\n this.sourceRecord?.recordType\r\n }: '${fullRecordVersionName(this.sourceRecord)}'`;\r\n\r\n const payload = {\r\n sourceId: this.sourceRecord?.id ?? -1,\r\n destinationId: this.destinationRecord?.id ?? -1,\r\n option: option,\r\n index: templateIndex\r\n };\r\n\r\n const result = await this.referAgendaItem(payload);\r\n\r\n await this.$router.push(\r\n this.createModuleItemContentRoute(result?.data?.id ?? -1)\r\n );\r\n\r\n this.clearSavedRecord();\r\n\r\n return createActionResultSuccess(action);\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n }\r\n },\r\n\r\n /**\r\n * Event On Item Defer\r\n * @param option\r\n * @param templateIndex\r\n * @return {Promise<{type: string, message: string, outcome: string}>}\r\n */\r\n async onItemDefer(option, templateIndex) {\r\n try {\r\n console.log(\r\n `${this.$options.name} onItemDefer() Insert Option`,\r\n option\r\n );\r\n console.log(\r\n `${this.$options.name} onItemDefer() templateIndex: `,\r\n templateIndex\r\n );\r\n\r\n const operation = findAgendaItemOperation(agendaItemOperation.defer);\r\n const action = `${operation?.label} ${\r\n this.sourceRecord?.recordType\r\n }: '${fullRecordVersionName(this.sourceRecord)}'`;\r\n\r\n const payload = {\r\n sourceId: this.sourceRecord?.id ?? -1,\r\n destinationId: this.destinationRecord?.id ?? -1,\r\n option: option,\r\n index: templateIndex\r\n };\r\n\r\n await this.deferAgendaItem(payload);\r\n\r\n await this.$router.push(\r\n this.createModuleItemContentRoute(this.sourceRecord?.id)\r\n );\r\n\r\n this.clearSavedRecord();\r\n\r\n return createActionResultSuccess(action);\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n }\r\n },\r\n\r\n /**\r\n * Clear Store Data\r\n */\r\n clearSavedRecord() {\r\n try {\r\n const payload = {\r\n type: undefined,\r\n record: undefined\r\n };\r\n this.setMovedRecord(payload);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * Event On Upload File Changed\r\n * @param {{File}} file\r\n */\r\n onUploadFileChanged(file) {\r\n this.uploadedFile = file;\r\n },\r\n\r\n /**\r\n * Event On Check-In Option Changed\r\n * @param {{isCheckInDraft: boolean, isCheckInOCR : boolean, checkInComment : string}} model\r\n */\r\n onCheckInOptionChanged(model) {\r\n this.checkInOptionModel = model;\r\n },\r\n\r\n /**\r\n * Reset Upload Local File Data\r\n */\r\n clearUploadedFileData() {\r\n this.acquireNewFile = false;\r\n this.uploadedFile = undefined;\r\n },\r\n\r\n /**\r\n * On Command ReIndex Action\r\n */\r\n onReindexAction() {\r\n this.visibleReindexDialog = true;\r\n },\r\n\r\n /**\r\n * close Re-Index Dialog\r\n */\r\n closeReIndexDialog() {\r\n this.visibleReindexDialog = false;\r\n },\r\n\r\n /**\r\n * ReIndex Record\r\n */\r\n async onReindex() {\r\n try {\r\n const operation = findRecordOperation(recordOperation.Reindex);\r\n const action = `${operation?.label}: 'Adding ${fullRecordName(\r\n this.record\r\n )}' to the indexing Queue`;\r\n\r\n const id = this.record?.id ?? -1;\r\n const isDocument =\r\n this.record?.recordTypeId === recordType.DOCUMENT ?? false;\r\n if (isDocument) {\r\n await this.reindexDocument(id);\r\n } else await this.reindexFile(id);\r\n return createActionResultSuccess(action);\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n }\r\n },\r\n\r\n /**\r\n * Start Workflow Project\r\n */\r\n async onStartWorkflowProject() {\r\n try {\r\n /**\r\n * define new project payload\r\n * @type {{recordId: (Number|number|number), comment: string, runOnlyOneProject: boolean, userTasks: ({id: number, name: string, sequence: number, duration: string, priority: number, reassignment: number, assignment: {assignee: string, fixed: boolean, method: number, roles: string}}[]|*[]), projectName: string, templateId: (number|number)}}\r\n */\r\n const payload = {\r\n recordId: this.projectNew?.recordId ?? this.currentRecord?.id ?? -1,\r\n projectName: this.projectNew?.projectName,\r\n comment: this.projectNew?.comment,\r\n templateId:\r\n this.projectNew?.templateId ?? this.projectNewTemplate?.id ?? -1,\r\n runOnlyOneProject: this.projectNew?.runOnlyOneProject,\r\n userTasks: getNewProjectUserTasks(this.projectNew)\r\n };\r\n\r\n console.log(\r\n `${this.$options.name}.onStartWorkflowProject() this.projectNew:`,\r\n this.projectNew\r\n );\r\n console.log(\r\n `${this.$options.name}.onStartWorkflowProject() payload:`,\r\n payload\r\n );\r\n\r\n // this.showSnackbarWarning(\r\n // `TODO: Started project: (${this.projectNew.projectName})`,\r\n // true\r\n // );\r\n\r\n const project = await this.startWorkflowProject(payload);\r\n\r\n this.showSnackbarSuccess(\r\n `Started project: (${project?.projectId}) ${project?.projectName}`,\r\n true\r\n );\r\n\r\n this.setRecordMode(recordMode.view);\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n },\r\n\r\n /**\r\n * set new Record And workflow project\r\n * @param recordNew\r\n * @return {Promise}\r\n */\r\n async setNewRecordAndProject(recordNew) {\r\n let project = undefined;\r\n let projectTemplate = undefined;\r\n\r\n if (this.isAvailableProjectsModule) {\r\n /**\r\n * workflow of selected new record category\r\n * @type {{startProjectOption: {value: number, name: string}, runOnlyOneProject: boolean, template: {id: number, name: string, description: string, workflowName: string, comment: string}}}\r\n */\r\n const workflow = this.recordNewCategory?.workflow;\r\n\r\n console.log(\r\n `${this.$options.name}.onNewDuplicateRecord() workflow:`,\r\n workflow\r\n );\r\n\r\n this.autoSwitchStartNewRecordProjectOn(\r\n workflow?.startProjectOption?.value\r\n );\r\n\r\n if (this.isNewRecordProject) {\r\n const categoryId = this.recordNewCategory?.id ?? -1;\r\n const templateId = workflow?.template?.id ?? -1;\r\n\r\n let definition = undefined;\r\n\r\n if (categoryId > 0 && templateId > 0) {\r\n definition = (\r\n await getCategoryProjectTemplateDefinition(categoryId)\r\n )?.data;\r\n projectTemplate = definition?.projectTemplate;\r\n }\r\n\r\n project = prepareNewProject(\r\n recordNew,\r\n projectTemplate,\r\n definition?.runOnlyOneProject ?? false,\r\n definition?.startProjectOption ?? startProjectOption.none\r\n );\r\n }\r\n }\r\n\r\n const payload = {\r\n record: recordNew,\r\n category: this.recordNewCategory,\r\n project: project,\r\n projectTemplate: projectTemplate\r\n };\r\n\r\n this.setNewRecord(payload);\r\n\r\n if (this.isNewRecordProject) {\r\n this.validateNewProject();\r\n }\r\n },\r\n\r\n /**\r\n * perform New Project form validation in order to display\r\n * user-friendly required fields\r\n */\r\n validateNewProject() {\r\n this.$refs.formNewProject?.validate();\r\n },\r\n\r\n /**\r\n * auto Switch Start New Record Project On\r\n * @param {number} option startProjectOption\r\n */\r\n autoSwitchStartNewRecordProjectOn(option) {\r\n if (\r\n option === startProjectOption.autoStart ||\r\n option === startProjectOption.showPredefinedProjectTemplate\r\n ) {\r\n this.isNewRecordProject = true;\r\n }\r\n },\r\n\r\n /**\r\n * Set current (selected) tab\r\n * @param {{Number}} type tab-type (item,section,rollCall etc)\r\n */\r\n setCurrentTab(type) {\r\n this.currentTab = type;\r\n },\r\n\r\n /**\r\n * On Email Record\r\n */\r\n onEmailFile() {\r\n this.isEmail = true;\r\n this.visibleDownloadFileDialog = true;\r\n },\r\n\r\n /**\r\n * On Create Document Template\r\n * @return {Promise}\r\n */\r\n async onCreateDocumentTemplate() {\r\n this.isDocumentAssembly = true;\r\n await this.onNewRecord(recordType.MEETING);\r\n },\r\n\r\n /**\r\n * Event On Submit Agenda Items\r\n */\r\n onSubmitAgendaItems() {\r\n this.isRecallOperation = false;\r\n this.visibleSubmitRecallAgendaItemsDialog = true;\r\n },\r\n\r\n /**\r\n * Event On Recall Agenda Items\r\n */\r\n onRecallAgendaItems() {\r\n this.isRecallOperation = true;\r\n this.visibleSubmitRecallAgendaItemsDialog = true;\r\n },\r\n\r\n /**\r\n * Event on Close Submit Recall Agenda Items Dialog\r\n */\r\n closeSubmitRecallAgendaItemsDialog() {\r\n this.isRecallOperation = false;\r\n this.visibleSubmitRecallAgendaItemsDialog = false;\r\n },\r\n\r\n /**\r\n * Event on Items Submit Recall\r\n * @param operation\r\n * @return {Promise<{type: string, message: string, outcome: string}>}\r\n */\r\n async onItemsSubmitRecall(operation) {\r\n try {\r\n const action = `${operation?.label} Agenda Item`;\r\n\r\n const id = this.record?.id ?? -1;\r\n\r\n const isSubmitOperation =\r\n operation?.name === agendaItemOperation.submit;\r\n\r\n this.record?.recordTypeId === recordType.MEETING\r\n ? isSubmitOperation\r\n ? await this.submitMeetingAgendaItems(id)\r\n : await this.recallMeetingAgendaItems(id)\r\n : isSubmitOperation\r\n ? await this.submitSectionAgendaItems(id)\r\n : await this.recallSectionAgendaItems(id);\r\n\r\n return createActionResultSuccess(action);\r\n } catch (e) {\r\n return createActionResultError(e?.toString());\r\n }\r\n }\r\n },\r\n\r\n watch: {\r\n /**\r\n * watch visibleUploadFilePopoverMenu in order to close the Upload File Popover Parent Menu\r\n * @param newValue\r\n * @param oldValue\r\n */\r\n visibleUploadFilePopoverMenu(newValue, oldValue) {\r\n // Ensure that the Upload File Dropdown Parent Menu is closed too\r\n if (!newValue && oldValue) {\r\n this.closeUploadFileDropdownParentMenu();\r\n }\r\n },\r\n\r\n /**\r\n * watch visibleCheckInFilePopoverMenu in order to close Check In File Popover Parent Menu\r\n * @param newValue\r\n * @param oldValue\r\n */\r\n visibleCheckInFilePopoverMenu(newValue, oldValue) {\r\n // Set default Check In File Select Option when CheckInFilePopoverMenu is shown\r\n if (newValue && !oldValue) {\r\n this.checkInFileOption = this.defaultCheckInFileOption;\r\n }\r\n\r\n // Ensure that CheckInFile Dropdown ParentMenu is closed too\r\n if (!newValue && oldValue) {\r\n this.closeCheckInFileDropdownParentMenu();\r\n }\r\n },\r\n\r\n /**\r\n * watch currentRecordMode\r\n * @param {number} newValue\r\n */\r\n currentRecordMode(newValue) {\r\n if (newValue === recordMode.view) {\r\n console.log(\r\n `${this.$options.name} currentRecordMode() record Mode: View `\r\n );\r\n //\r\n // reset related local Record Mode data\r\n //\r\n this.agendaTemplate = undefined;\r\n this.agendaItemTemplate = undefined;\r\n this.newAgendaDocumentType = undefined;\r\n\r\n this.categoryTypeId = -1;\r\n this.agendaItemTemplates = [];\r\n this.agendaSectionTemplates = [];\r\n\r\n this.isDocumentAssembly = false;\r\n\r\n //reset Local File value when record mode changed\r\n this.setLocalUploadedFile(undefined);\r\n\r\n this.clearUploadedFileData();\r\n }\r\n },\r\n\r\n /**\r\n * watch record changes\r\n */\r\n async record(newValue, oldValue) {\r\n console.log(`watch ${this.$options.name}.record newValue:`, newValue);\r\n console.log(`watch ${this.$options.name}.record oldValue:`, oldValue);\r\n\r\n if (\r\n (newValue?.recordTypeId ?? recordType.RECORD) !==\r\n (oldValue?.recordTypeId ?? -1)\r\n ) {\r\n this.tab = null;\r\n this.currentTab =\r\n (this.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.MEETING\r\n ? agendaMeetingTabOptions.meeting\r\n : (this.record?.recordTypeId ?? recordType.RECORD) ===\r\n recordType.SECTION\r\n ? agendaMeetingTabOptions.section\r\n : agendaMeetingTabOptions.item;\r\n }\r\n\r\n // if record is folder or item, and local file presents, open a new record with that local file\r\n if (isDirectUploadAllowed(this.record) && this.localUploadedFile) {\r\n await this.onNewRecord(this.recordTypes.FILE);\r\n }\r\n\r\n /**\r\n * When a selected Record is changed, append that to folder Drawer List\r\n * This makes the record visible/selected even when not fetched\r\n */\r\n if (\r\n // Condition makes sure only child is appended to the list\r\n this.record?.parentId ===\r\n Number(this.$router?.currentRoute?.params?.expandedId ?? -2)\r\n )\r\n this.appendRecords?.([this.record]);\r\n },\r\n\r\n /**\r\n * watch isNewRecordProject boolean flag\r\n * @param {boolean} newValue\r\n */\r\n async isNewRecordProject(newValue) {\r\n console.log(`watch ${this.$options.name}.isNewRecordProject:`, newValue);\r\n\r\n let payload = {\r\n project: undefined,\r\n projectTemplate: undefined\r\n };\r\n\r\n /**\r\n * set New Record Project\r\n */\r\n if (newValue) {\r\n const categoryId = this.recordNewCategory?.id ?? -1;\r\n const projectTemplateId =\r\n this.recordNewCategory?.workflow?.template?.id ?? -1;\r\n\r\n let definition = undefined;\r\n let projectTemplate = undefined;\r\n\r\n if (categoryId > 0 && projectTemplateId > 0) {\r\n definition = (await getCategoryProjectTemplateDefinition(categoryId))\r\n ?.data;\r\n projectTemplate = definition?.projectTemplate;\r\n }\r\n\r\n const project = prepareNewProject(\r\n this.recordNew,\r\n projectTemplate,\r\n definition?.runOnlyOneProject ?? false,\r\n definition?.startProjectOption ?? startProjectOption.none\r\n );\r\n\r\n payload = {\r\n project: project,\r\n projectTemplate: projectTemplate\r\n };\r\n\r\n this.setNewRecordProject(payload);\r\n this.validateNewProject();\r\n } else {\r\n this.setNewRecordProject(payload);\r\n }\r\n },\r\n\r\n /**\r\n * visibleDownloadFileDialog - if closed, set isEmail to false\r\n * @param value\r\n */\r\n visibleDownloadFileDialog(value) {\r\n if (!value) this.isEmail = false;\r\n }\r\n },\r\n created() {\r\n /***\r\n * MainApp Broadcast Event listener, gets the message and update record respectively\r\n * @param {{data:{RecordInfo: ({agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, checkOutExtension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, comments: string, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}|{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}|{agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, extension: string, version: number, versionDate: string, versionOwner: string, pageCount: number, fileSize: number, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array} | {agendaItemOperations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, name: string, parentId: number, ancestor: {id: number, name: string, categoryId: number, recordType: {id: number, name: string}, code: number, flags: number, createdBy: {id: number, name: string}, updatedBy: {id: number, name: string}, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isHidden: boolean, isLocked: boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean}, categoryId: number, stateId: number, stateOwnerId: number, state: string, recordTypeId: number, recordType: string, createdBy: string, updatedBy: string, owner: string, creationDate: string, modificationDate: string, flags: number, children: number, isDraft: boolean, isReadOnly: boolean, isLocked: boolean, isDeleted: boolean, isComposite: boolean, isLink: boolean, localFile: {hasFile: boolean, isModified: boolean, pageCount: number, extension: {type: number, extensions: Array, description: string}}, searchFields: Array<{name: string, fieldDataType: number, fieldDataTypeName: string, operations: Array<{name: string, allowed: boolean, valid: boolean}>, id: number, value: string}>, operations: Array<{name: string, allowed: boolean, valid: boolean}>, meetingOperations: Array<{name: string, allowed: boolean, valid: boolean}>, fields: Array}), HasVersionChanged: boolean}}} message\r\n */\r\n this.$mainAppChannel.onmessage = async message => {\r\n try {\r\n console.log(\r\n `${this.$options.name}: this.$mainAppChannel.onmessage record.data:`,\r\n message?.data\r\n );\r\n if (message?.data?.RecordInfo) {\r\n await this.onRecordChanged(message?.data);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n }\r\n};\r\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable = VueConstructor>\n\nexport function factory (prop?: T, event?: string): Proxyable\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import {\r\n iconPostMeeting,\r\n iconUnPostMeeting,\r\n iconRecall,\r\n iconSubmit\r\n} from \"@/design/icon/iconConst\";\r\n\r\n/**\r\n * agenda Meeting Operation Type\r\n * @type {Readonly<{unpost: string, post: string, mediaManagerExport: string, unpublish: string, publish: string, mediaManagerImport: string}>}\r\n */\r\nconst agendaMeetingOperation = Object.freeze({\r\n post: \"EventPost\",\r\n unpost: \"EventUnpost\",\r\n publish: \"EventPublish\",\r\n unpublish: \"EventUnpublish\",\r\n mediaManagerImport: \"MediaManagerImport\",\r\n mediaManagerExport: \"MediaManagerExport\"\r\n});\r\n\r\n/**\r\n * agenda Meeting Operations\r\n * @type {{name: string, icon: string, description: string, label: string}[]}\r\n */\r\nconst agendaMeetingOperations = Object.freeze([\r\n {\r\n name: agendaMeetingOperation.post,\r\n label: \"Post\",\r\n description:\r\n \"Post Agenda Meeting, so that Agenda Meeting can be used by other departments\",\r\n icon: iconPostMeeting\r\n },\r\n {\r\n name: agendaMeetingOperation.unpost,\r\n label: \"Unpost\",\r\n description:\r\n \"Un-post Agenda Meeting, so that Agenda Meeting cannot be used by other departments\",\r\n icon: iconUnPostMeeting\r\n },\r\n {\r\n name: agendaMeetingOperation.publish,\r\n label: \"Publish\",\r\n description:\r\n \"Publish Agenda Meeting, so that Agenda Meeting can be used by public\",\r\n icon: iconSubmit\r\n },\r\n {\r\n name: agendaMeetingOperation.unpublish,\r\n label: \"Unpublish\",\r\n description:\r\n \"Un-publish Agenda Meeting, so that Agenda Meeting cannot be used by public\",\r\n icon: iconRecall\r\n }\r\n]);\r\n\r\n/**\r\n * find Agenda Meeting Operation\r\n * @param name name of Agenda Meeting Operation\r\n * @return {{name: string, icon: string, description: string, label: string}}\r\n */\r\nconst findAgendaMeetingOperation = name =>\r\n agendaMeetingOperations?.find(el => el.name === name);\r\n\r\nexport {\r\n agendaMeetingOperation,\r\n agendaMeetingOperations,\r\n findAgendaMeetingOperation\r\n};\r\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// services\r\nimport { isRecordExpandable } from \"@/services/record/recordService\";\r\n\r\n// mixins\r\nimport { moduleItemNavigatable } from \"@/mixins/shared/navigatable/moduleItemNavigatable\";\r\nimport {\r\n createModuleChildRecordContentRouteLocation,\r\n createModuleChildRecordShortcutContentRouteLocation,\r\n createModuleRecordRouteLocation\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Application module record navigatable behavior\r\n */\r\nexport const moduleRecordNavigatable = {\r\n mixins: [moduleItemNavigatable],\r\n methods: {\r\n /**\r\n * navigate To Module Record\r\n * @param record\r\n * @return {Promise}\r\n */\r\n async navigateToModuleRecord(record) {\r\n if (record && this.canNavigateToModuleRecord(record)) {\r\n await this.$router.push(this.createModuleRecordRouteLocation(record));\r\n }\r\n },\r\n\r\n /**\r\n * can Navigate To Module Record\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {boolean|Boolean}\r\n */\r\n canNavigateToModuleRecord(record) {\r\n return isRecordExpandable(record)\r\n ? this.canNavigateToModuleItem(record?.id ?? -1)\r\n : this.canNavigateToModuleChildRecord(record);\r\n },\r\n\r\n /**\r\n * navigate To Module Child Record By id\r\n * @param {Number|number} id record id\r\n * @param {Number|number} parentId parent record id\r\n * @return {Promise}\r\n */\r\n async navigateToModuleChildRecordById(id, parentId) {\r\n if (!this.canNavigateToChildRecordById(id, parentId)) {\r\n console.warn(\r\n `Couldn't navigate to ${this.appModuleName} by id: ${id} and expanded Id: ${parentId}`\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n await this.$router.push(\r\n this.createModuleChildRecordRouteLocationById(id, parentId)\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * create Module Child Record Content Route\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {{name: (String|string), params: {expandedId: (Number|number), id: (Number|number)}}}\r\n */\r\n createModuleChildRecordContentRouteLocation(record) {\r\n return record.isLink ?? false\r\n ? createModuleChildRecordShortcutContentRouteLocation(\r\n this.appModuleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n )\r\n : createModuleChildRecordContentRouteLocation(\r\n this.appModuleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n );\r\n },\r\n\r\n /**\r\n * create Module Record Route Location\r\n * @param {{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}[]}} record\r\n * @return {{name: (String|string), params: {id}}|{name: (String|string), params: {expandedId: (Number|number), id: (Number|number)}}}\r\n */\r\n createModuleRecordRouteLocation(record) {\r\n return createModuleRecordRouteLocation(this.appModuleName, record);\r\n },\r\n\r\n /**\r\n * create Module Child Record Target Route\r\n * @param {Number|number} id Record id\r\n * @param {Number|number} parentId parent record id\r\n * @return {{name: (String|string), params: {expandedId: (Number|number), id: (Number|number)}}}\r\n */\r\n createModuleChildRecordRouteLocationById(id, parentId) {\r\n return createModuleChildRecordContentRouteLocation(\r\n this.appModuleName,\r\n id,\r\n parentId\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Current Module child Record\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @return {Boolean|boolean}\r\n */\r\n canNavigateToModuleChildRecord(record) {\r\n return this.canNavigateToChildRecordById(\r\n this.appModuleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Module Child Record By id\r\n * @param {Number|Number} id record id\r\n * @param {Number|Number} parentId parent record id\r\n * @return {boolean} true if navigatable To Module Tree Item\r\n */\r\n canNavigateToModuleChildRecordById(id, parentId) {\r\n return this.canNavigateToChildRecordById(\r\n this.appModuleName,\r\n id,\r\n parentId\r\n );\r\n }\r\n }\r\n};\r\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","// router\r\nimport { createModuleRecordRouteLocation } from \"@/router/solution/solutionRoutes\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n// services\r\nimport { isRecordExpandable } from \"@/services/record/recordService\";\r\n\r\n// design\r\nimport { iconJumpToFolder } from \"@/design/icon/iconConst\";\r\n\r\n// mixins\r\nimport { appMixin } from \"@/mixins/shared/base/app/appMixin\";\r\nimport { routerMixin } from \"@/mixins/shared/router/routerMixin\";\r\nimport { findRecordType, recordType } from \"@/model/record/recordModel\";\r\nimport { publicAccessMixin } from \"@/mixins/public/publicAccessMixin\";\r\n\r\n/**\r\n * Contains options (adhere to the DRY principle) & code re-usability\r\n * for components that needs Folder module record navigatable behavior\r\n */\r\nexport const folderRecordNavigatable = {\r\n mixins: [appMixin, routerMixin, publicAccessMixin],\r\n computed: {\r\n commandSelectRecordIconName: () => iconJumpToFolder,\r\n /**\r\n * Visible Jump To File\r\n * @return {string|boolean}\r\n */\r\n visibleJumpToFile() {\r\n return this.isPublicAccess\r\n ? this.publicAccess.modules.visibleFolder\r\n : true;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * build Folder Module Select Record Route\r\n * @param {{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}[]}} record\r\n * @return {{name: (String|string), params: {id}}|{name: (String|string), params: {id}}}\r\n */\r\n folderModuleRecordRouteLocation(record) {\r\n return createModuleRecordRouteLocation(moduleNames.Folder, record);\r\n },\r\n\r\n /**\r\n * can Navigate To Folder Module Record\r\n * @param {{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}[]}} record\r\n * @return {boolean|*}\r\n */\r\n canNavigateToFolderModuleRecord(record) {\r\n return isRecordExpandable(record)\r\n ? this.canNavigateToFolderModuleRecordById(record?.id ?? -1)\r\n : this.canNavigateToFolderModuleChildRecordById(\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Folder Module Child Record By id\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 canNavigateToFolderModuleChildRecordById(id, expandedId) {\r\n return this.canNavigateToChildRecordById(\r\n moduleNames.Folder,\r\n id,\r\n expandedId\r\n );\r\n },\r\n\r\n /**\r\n * can Navigate To Folder Module Item\r\n * @param {Number} id Folder's record id\r\n * @return {boolean}\r\n */\r\n canNavigateToFolderModuleRecordById(id) {\r\n return this.canNavigateToModuleItemByModuleItemId(moduleNames.Folder, id);\r\n },\r\n\r\n /**\r\n * tooltip Navigate To Record (select/expand) record\r\n * @param {{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}[]}} record\r\n * @return {string} tooltip Navigate (select/expand) record\r\n */\r\n tooltipNavigateToRecord(record) {\r\n const action = isRecordExpandable(record) ? \"Expand\" : \"Select\";\r\n return `${action} ${record?.recordType}`;\r\n },\r\n\r\n /**\r\n * command Select Record Label\r\n * @param {{recordType: string, name: string, recordTypeId: number}} record\r\n * @return {string}\r\n */\r\n commandSelectRecordLabel(record) {\r\n const recordTypeName = findRecordType(\r\n record?.recordTypeId ?? recordType.RECORD\r\n )?.name;\r\n return this.appModuleName === moduleNames.Folder\r\n ? `Select ${recordTypeName}`\r\n : `Jump to ${recordTypeName}`;\r\n }\r\n }\r\n};\r\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record\n\nexport type Positionable = VueConstructor\n\nexport function factory (selected?: S[]): Positionable\nexport function factory (selected: undefined): OptionsVue\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n"],"sourceRoot":""}