{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/store/shared/mutationTypes/record/record-mutation-types.js","webpack:///./src/services/project/projectModuleService.js","webpack:///./src/model/user/userModel.js","webpack:///./src/services/record/recordCommonService.js","webpack:///./src/store/solution/mutation-types.js","webpack:///./src/design/gradients/gradientConst.js","webpack:///./src/services/record/recordService.js","webpack:///./src/services/category/categoryModuleService.js","webpack:///./src/model/public/publicAccessModel.js","webpack:///./src/services/config/configService.js","webpack:///./src/model/rules/ruleModel.js","webpack:///./src/services/user/userService.js","webpack:///./src/services/folder/folderModuleService.js","webpack:///./src/model/workflow/task/taskModel.js","webpack:///./src/store/solution/getters.js","webpack:///./src/store/solution/actions.js","webpack:///./src/store/solution/mutations.js","webpack:///./src/store/solution/index.js","webpack:///./src/store/category/getters.js","webpack:///./src/store/category/mutation-types.js","webpack:///./src/store/shared/actions/record/record-actions.js","webpack:///./src/services/api/apiAgenda.js","webpack:///./src/services/api/apiWorkflow.js","webpack:///./src/store/shared/actions/record/hierarchy-actions.js","webpack:///./src/store/category/actions.js","webpack:///./src/store/shared/mutations/record/record-mutations.js","webpack:///./src/store/category/mutations.js","webpack:///./src/store/category/index.js","webpack:///./src/store/search/getters.js","webpack:///./src/store/shared/actions/agenda/agenda-actions.js","webpack:///./src/store/search/actions.js","webpack:///./src/store/search/mutations.js","webpack:///./src/store/search/index.js","webpack:///./src/store/folder/getters.js","webpack:///./src/store/shared/actions/project/project-actions.js","webpack:///./src/store/folder/actions.js","webpack:///./src/store/shared/mutations/record/hierarchy-mutations.js","webpack:///./src/store/shared/mutations/project/project-mutations.js","webpack:///./src/store/folder/mutations.js","webpack:///./src/store/folder/index.js","webpack:///./src/store/inbox/getters.js","webpack:///./src/store/inbox/actions.js","webpack:///./src/store/inbox/mutations.js","webpack:///./src/store/inbox/index.js","webpack:///./src/store/project/getters.js","webpack:///./src/store/project/mutation-types.js","webpack:///./src/store/project/actions.js","webpack:///./src/store/project/mutations.js","webpack:///./src/store/project/index.js","webpack:///./src/store/agenda/getters.js","webpack:///./src/services/api/apiDocumentAssembly.js","webpack:///./src/store/agenda/actions.js","webpack:///./src/store/agenda/mutations.js","webpack:///./src/store/agenda/index.js","webpack:///./src/store/document/getters.js","webpack:///./src/store/document/mutation-types.js","webpack:///./src/store/document/actions.js","webpack:///./src/store/document/mutations.js","webpack:///./src/store/document/index.js","webpack:///./src/store/user/getters.js","webpack:///./src/services/api/apiAuth.js","webpack:///./src/store/user/actions.js","webpack:///./src/store/user/mutations.js","webpack:///./src/store/user/index.js","webpack:///./src/store/index.js","webpack:///./src/filters/dateFilter.js","webpack:///./src/model/workflow/project/projectTemplateModel.js","webpack:///./src/model/common/commands/commandModel.js","webpack:///./src/services/project/projectService.js","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/App.vue?2ef9","webpack:///./src/App.vue?315a","webpack:///./src/registerServiceWorker.js","webpack:///./src/plugins/vuetify.js","webpack:///./src/main.js","webpack:///./src/router/document/documentRoutes.js","webpack:///./src/model/viewer/viewerFileModel.js","webpack:///./src/store/user/mutation-types.js","webpack:///./src/services/inbox/inboxModuleService.js","webpack:///./src/design/icon/iconConst.js","webpack:///./src/utils/localStorageUtility.js","webpack:///./src/model/agenda/agendaModel.js","webpack:///./src/model/acquire/scan/scanningModel.js","webpack:///./src/services/api/apiCommon.js","webpack:///./src/services/agenda/agendaModuleService.js","webpack:///./src/model/category/categoryModel.js","webpack:///./src/store/inbox/mutation-types.js","webpack:///./src/store/shared/mutationTypes/record/hierarchy-mutation-types.js","webpack:///./src/model/workflow/project/projectModel.js","webpack:///./src/design/text/Text.js","webpack:///./src/router/folder/folderRoutes.js","webpack:///./src/router/category/categoryRoutes.js","webpack:///./src/router/search/searchRoutes.js","webpack:///./src/router/inbox/inboxRoutes.js","webpack:///./src/router/project/projectRoutes.js","webpack:///./src/router/agenda/agendaRoutes.js","webpack:///./src/router/user/userRoutes.js","webpack:///./src/router/index.js","webpack:///./src/services/inbox/taskService.js","webpack:///./src/model/solution/moduleModel.js","webpack:///./src/services/query/queryService.js","webpack:///./src/store/shared/mutationTypes/project/project-mutation-types.js","webpack:///./src/model/features/featuresModel.js","webpack:///./src/model/record/fileModel.js","webpack:///./src/model/field/fieldModel.js","webpack:///./src/design/colors/mdColors.js","webpack:///./src/services/error/errorService.js","webpack:///./src/services/solution/solutionService.js","webpack:///./src/router/solution/solutionRoutes.js","webpack:///./src/plugins/fontawesome.js","webpack:///./src/design/colors/Color.js","webpack:///./src/services/api/apiContent.js","webpack:///./src/utils/index.js","webpack:///./src/model/record/recordModel.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","SET_DRAWER_MINI","SET_RECORD_MODE","SET_RECORDS","APPEND_RECORDS","SET_RECORD","UPDATE_RECORD_LIST_BY_ID","SET_RECORD_NEW","SET_RECORD_CREATED","SET_RECORD_EDIT","SET_RECORD_EDITED","SET_RECORD_DELETED","SET_RECORD_NEW_CATEGORY","SET_RECORD_NEW_AND_CATEGORY","SET_RECORD_TEXT_FIELD_VALUE","SET_RECORD_LOOKUP_DATA","SET_MOVED_RECORD","SET_MOVED_RECORDS","SET_LOCAL_UPLOADED_FILE","SET_RECORD_DELETE_STATUS","UPDATE_RECORD_STATUS","UPDATE_RECORD_INFO","SET_RECORD_LOCK","SET_RECORD_READ_ONLY","SET_RECORD_DRAFT","SET_DOCUMENTS","SET_DOCUMENT","SET_DOCUMENT_SEARCH_CATEGORY","SET_DOCUMENT_CHILDREN","UPDATE_DOCUMENT_LIST_BY_ID","UPDATE_RECORD_FILE_VERSION","SET_UPLOAD_FILE_PROGRESS","SET_FILE_VERSIONS","SET_FILE_VERSION","SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION","moduleName","moduleNames","Projects","localStorageKey","freeze","projectId","storeSelectedModuleItemId","id","setLocalStorageItem","repoUserLocalStorageKey","toString","getStoredSelectedModuleItemId","getLocalStorageItem","isNaN","Number","systemOperations","none","categoryRead","categoryCreate","categoryUpdate","categoryDelete","fieldRead","fieldCreate","fieldUpdate","fieldDelete","formRead","formCreate","formUpdate","formDelete","templateRead","templateCreate","templateUpdate","templateDelete","motionActionRead","motionActionCreate","motionActionUpdate","motionActionDelete","voteActionRead","voteActionCreate","voteActionUpdate","userRead","userCreate","userUpdate","userDelete","userResetPassword","changePassword","changePermission","accessDeletedRecord","runImport","runBatchScan","runExportConfig","login","logout","runAgendaDesigner","barcodeCoversheet","accessWFProjects","runWFProjectEditor","accessAuditTrail","folderCreateAsUser","accessUserList","accessRollCall","accessClerkModule","accessLegislatorWorkPad","isValidRecordOperation","record","operation","_findOperation$valid","_findOperation","findOperation","operations","valid","find","op","toLowerCaseSafe","INITIALIZE_STATES","SET_APPLICATION","SET_DRAWER","SET_DRAWER_RIGHT","SET_DRAWER_ENABLE_MINI_DRAWER","SET_USES_APP_TABS","SET_USES_SIDEBAR_IMAGE","SET_DIALOG_TOOLBAR_STYLE","SET_COMMAND_COLOR","SET_COMMAND_BUTTONS_TEXT_STYLE","SET_COMMAND_BUTTONS_OUTLINED","SET_COMMAND_BUTTONS_ROUNDED","SET_COMMAND_BUTTONS_ELEVATION","SET_TOOLBAR_DETAILS_COLOR","SET_APP_BAR_COLLAPSE_ON_SCROLL","SET_RECORDS_FETCH_COUNT","indigoGradient","filterFilesAndDocuments","records","includeFields","docs","Array","isArray","forEach","el","createRecordInfo","getSearchFields","searchFields","_includeFields$length","fields","field","sf","fieldDataType","fieldType","DATE","toShortLocalString","fullRecordName","history","_store$getters$userP","_record$recordTypeId","_record$name","principal","store","getters","recordTypeId","recordType","RECORD","ITEM","stateId","recordState","submitted","numbering","FILE","IsCheckedOutForDigitalSigningByPrinciple","checkOutExtension","extension","isCompoundFile","_record$ancestor$reco","_record$ancestor","ancestor","DOCUMENT","isDirectUploadAllowed","_record$recordTypeId2","FOLDER","fullRecordVersionName","_store$getters$userP2","_record$name2","version","fullRecordHistoryVersionName","_record$name3","IsCheckedOutForDigitalSigning","_record$checkOutExten","toLowerCase","extensionName","pdf","_record$checkOutExten2","isStateOwner","fullNewRecordVersionExtensionName","_record$recordTypeId3","_record$name4","getRecordTypeName","_recordTypes$find$nam","_recordTypes$find","recordTypes","rt","_record$recordTypeId4","createRecordFileVersion","ri","fileSize","canCheckOutForSigning","outFileType","comments","_record$id","_record$name5","_record$parentId","_record$extension","_record$checkOutExten3","_record$recordTypeId5","_record$recordType","_record$categoryId","_record$createdBy","_record$pageCount","_record$children","_record$version","_record$versionDate","_record$versionOwner","_record$fileSize","_record$comments","_record$flags","_record$stateId","_record$owner","_record$state","_record$stateOwnerId","_record$isComposite","_record$isDeleted","_record$isDraft","_record$isLink","_record$isLocked","_record$isReadOnly","_record$localFile","_record$operations","_record$agendaItemOpe","_record$meetingOperat","_record$searchFields","_record$recordTypeId6","_record$numbering","_record$canUpdate","_record$canDelete","parentId","categoryId","creationDate","modificationDate","createdBy","pageCount","children","versionDate","versionOwner","flags","owner","state","stateOwnerId","isComposite","isDeleted","isDraft","isLink","isLocked","isReadOnly","localFile","agendaItemOperations","meetingOperations","hasImage","isViewableInDocumentViewer","isSingleFile","canUpdate","canDelete","cannotUpdateReason","cannotDeleteReason","updateRecordFileVersionInfo","newVersion","updateRecordInfo","updateRecordOperations","latest","_record$id2","_latest$id","_latest$operations","_latest$agendaItemOpe","_latest$meetingOperat","itemOperations","updateOperations","newOperations","newOperation","allowed","_record$id3","_latest$id2","_record$isLink2","_latest$checkOutExten","_latest$extension","_latest$categoryId","_latest$recordTypeId","_latest$recordType","_latest$pageCount","_latest$children","_latest$version","_latest$versionDate","_latest$versionOwner","_latest$fileSize","_latest$comments","_latest$flags","_latest$stateId","_latest$state","_findRecordState","_latest$stateDescript","_latest$owner","_latest$stateOwnerId","_latest$isComposite","_latest$isDeleted","_latest$isDraft","_ref","_latest$isLocked","_latest$isReadOnly","warn","created","findRecordState","stateDescription","findRecord","isRecordExpandable","_record$recordTypeId7","_record$extension2","tif","MEETING","SECTION","msg","canInsertImageFile","_record$recordTypeId8","ext","tiff","canOverwriteFileVersion","_record$recordTypeId9","isAllowedOperation","_findOperation$allowe","isValidOperation","setTextLoadedFieldValueFlag","_field$fieldDataType","_field$value","_field$textLoaded","textLoaded","TEXT","isTextLoaded","text","_text$length","maxMemoFieldLength","updatableRecordFieldValues","_record$fieldValues","updatableFields","fieldValues","fv","_fv$textLoaded","isPersistentField","isSystemField","createRecordCategoryFiledValue","sequence","_ref2","_field$label","_ref3","_field$fieldDataTypeN","_findFieldType","fieldValue","label","fieldDataTypeName","findFieldType","createRecordFlyingFiledValue","_field$name","_ref4","_field$fieldDataTypeN2","_findFieldType2","ensureValidRecordFiledValues","category","_category$fields","_record$flyingFields","cf","rfv","_rfv$id","_cf$id","flyingFields","rff","_rfv$id2","_rff$id","_rff$id2","findField","_field$id","_store$getters$userI","_store$getters$userI2","getRecordCategoryFieldValues","_category$fields2","defaultValue","newRecord","_findRecordType","_newRecordType$id","_newRecordType$name","_category$id","_findRecordState2","_principal$actorName","findRecordType","newRecordType","new","actorName","editRecord","cloneDeep","async","duplicateRecord","recordNew","_recordNew$fieldValue","copyRecordFieldValue","flyingField","_record$flyingFields2","v","ff","copyAgendaTemplateRecord","atRecord","method","_atRecord$fieldValues","_atRecord$flyingField","_atRecord$fieldValues2","recordId","fieldId","includePersistentField","_await$getRecordTextF","log","getRecordTextFieldValue","changeRecordCategory","categoryOld","categoryNew","_deepCopyArray","_record$fieldValues2","_deepCopyArray2","_record$flyingFields3","_categoryNew$id","_record$id4","oldFieldValues","deepCopyArray","sort","a","b","_a$sequence","_b$sequence","oldFlyingFields","categoryField","_categoryNew$fields","recordField","ofv","sequenceFlyingFields","_categoryOld$fields","ocf","off","_record$id5","findRecordFieldValue","_record$fieldValues3","_el$id","getInputMappings","_category$formLookup$","_category$formLookup","inputMappings","mappings","formLookup","mp","_mp$id","canPreview","_record$recordTypeId10","_record$localFile$has","_record$localFile2","hasFile","_record$children2","localFileFirstOrDefaultExtension","_record$localFile3","_extensions$length","_extensions$","extensions","localFileExists","_record$localFile$has2","_record$localFile4","canPreviewInDocumentViewer","_record$recordTypeId11","_record$extension3","_record$checkOutExten4","_record$checkOutExten5","_record$extension4","checkedOut","isDocumentViewerSupportingFileExtension","previewRecordVersion","_record$recordTypeId12","_record$localFile5","_record$version2","_record$version3","editRecordVersion","_record$recordTypeId13","_record$localFile6","_record$version4","checkedIn","_record$version5","_record$version6","visibleRecordCommandOperation","isSupportedRecordOperation","enableRecordCommandOperation","findRecordOperation","recordOperation","CheckIn","supportCheckIn","CheckOut","supportCheckOut","CheckOutForSign","supportCheckOutForSign","Release","supportRelease","Lock","supportLock","Unlock","SetDraft","supportSetDraft","SetReadOnly","supportSetReadOnly","Print","supportPrint","Download","supportDownload","Email","supportEmail","Reindex","supportReindex","Update","supportEdit","Delete","supportDelete","Purge","supportPurge","DigitalSigning","supportDigitalSigning","_record$recordTypeId14","isAllowedAuthor","_record$recordTypeId15","_record$recordTypeId16","isDevelopment","_record$recordTypeId17","_record$stateId2","deleted","_record$stateId3","_record$stateId4","_record$stateId5","_record$stateId6","_record$stateId7","_record$recordTypeId18","_record$recordTypeId19","_record$recordTypeId20","_record$recordTypeId21","_record$recordTypeId22","_record$stateOwnerId2","_principal$actorId","actorId","isCheckedOutByPrincipal","_record$stateId8","recordOperationIcon","_record$isReadOnly2","iconCheckbox","iconCheckboxBlank","_record$isDraft2","_op$icon","icon","isRecordOperationDanger","recordOperationLabel","_findRecordOperation$","_findRecordOperation","recordOperationTooltip","_findRecordOperation$2","_findRecordOperation2","tooltip","getImportedFileExtension","file","substring","lastIndexOf","isAncestorMeeting","_record$ancestor$reco2","_record$ancestor2","isCompoundDocument","_record$recordTypeId23","isDocumentAssemblyEvent","_recordEventModel$rec","recordEventModel","recordEventType","NONE","DOCUMENT_ASSEMBLY","recordAncestorEventType","isBackupMaterial","_record$ancestor$reco3","_record$ancestor3","Category","settingNames","searcher","company","contact","appBar","sideBar","buttons","searcherSettings","repository","appBarSettings","title","logo","logoSize","backgroundImageUrl","color","gradient","prominent","useTabs","collapseOnScroll","fadeImgOnScroll","shrinkOnScroll","sideBarSettings","enableMiniSidebar","buttonSettings","textStyle","outlined","rounded","elevation","companySettings","description","disclaimers","linkedIn","address","addressSettings","addressLine1","addressLine2","city","zip","country","contactSettings","phone","phoneDescription","email","emailDescription","moduleSettings","visibleFolder","visibleCategory","visibleMeetings","createPublicAccessSetting","settings","_settings$searcher$na","_settings$searcher","_settings$searcher$co","_settings$searcher2","_settings$searcher$re","_settings$searcher3","_settings$appBar$titl","_settings$appBar","_settings$appBar2","_settings$appBar$logo","_settings$appBar3","_settings$appBar4","_settings$appBar5","_settings$appBar6","_settings$appBar$prom","_settings$appBar7","_settings$appBar$useT","_settings$appBar8","_settings$appBar$coll","_settings$appBar9","_settings$appBar$fade","_settings$appBar10","_settings$appBar$shri","_settings$appBar11","_settings$sideBar","_settings$sideBar$ena","_settings$sideBar2","_settings$buttons","_settings$buttons$tex","_settings$buttons2","_settings$buttons$out","_settings$buttons3","_settings$buttons$rou","_settings$buttons4","_settings$buttons$ele","_settings$buttons5","_settings$company$log","_settings$company","_settings$company$nam","_settings$company2","_settings$company$des","_settings$company3","_settings$company$dis","_settings$company4","_settings$company$lin","_settings$company5","_settings$company$add","_settings$company6","_settings$company$add2","_settings$company7","_settings$company$add3","_settings$company8","_settings$company$add4","_settings$company9","_settings$company$add5","_settings$company10","_settings$company$add6","_settings$company11","_settings$contact$nam","_settings$contact","_settings$contact$des","_settings$contact2","_settings$contact$pho","_settings$contact3","_settings$contact$pho2","_settings$contact4","_settings$contact$ema","_settings$contact5","_settings$contact$ema2","_settings$contact6","_settings$modules$vis","_settings$modules","_settings$modules$vis2","_settings$modules2","_settings$modules$vis3","_settings$modules3","isPublicAccess","_process$env$VUE_APP_","_process$env","process","VUE_APP_PUBLIC_ACCESS","_process$env$NODE_ENV","_process$env2","NODE_ENV","apiUrl","ensureValidUrl","webApiUrl","wdvUrl","webCaptureUrl","downloadUrl","webApiTimeOut","trimLeft","trimRight","appName","appYear","publicAccess","urlName","trimSafe","setProductionSettings","url","setPublicAccessSettings","ruleNames","required","requiredByAutoFiling","storageKey","user","backupUser","usesAppTabs","usesSidebarImage","enableMiniDrawer","dialogToolbarStyle","buttonTextStyle","buttonOutlined","buttonRounded","buttonElevation","buttonColor","menuItemColor","toolbarDetailsColor","enableCategoryModule","enableSearchModule","enableTasksModule","enableProjectsModule","enableAgendaModule","enableWebScan","enableTextEditor","enableAnnotationEditor","recordsFetchCount","createStoreUser","token","tokenValidFrom","tokenValidTo","storeUser","JSON","stringify","removeLocalStorageItem","getStoredUser","item","parse","removeStoredUser","storeBackupUser","getStoredBackupUser","removeStoredBackupUser","storeUsesAppTabs","getStoredUsesAppTabs","storeAppBarCollapseOnScroll","appBarCollapseOnScroll","storeUsesSidebarImage","getStoredUsesSidebarImage","storeEnableMiniDrawer","storeDialogToolbarStyle","getDialogToolbarStyle","storeCommandButtonTextStyle","commandButtonTextStyle","storeCommandButtonOutlined","commandButtonOutlined","storeCommandButtonRounded","commandButtonRounded","storeCommandButtonElevation","commandButtonElevation","getStoredDataTableConfiguration","moduleItemId","tableName","buildDataTableNameKey","getDataTableRecordPropsConfiguration","buildDataTableRecordPropsNameKey","getDataTableFieldsConfiguration","buildDataTableFieldsNameKey","storeDataTableConfiguration","configuration","storeDataTableFieldsConfiguration","storeDataTableRecordPropsConfiguration","storeButtonColor","getStoredButtonColor","storeToolbarDetailsColor","getToolbarDetailsColor","storeEnableCategoryModule","getEnableCategoryModule","storeEnableSearchModule","getEnableSearchModule","storeEnableTasksModule","getEnableTasksModule","storeEnableProjectsModule","getEnableProjectsModule","storeEnableAgendaModule","getEnableAgendaModule","storeEnableTextEditor","storeEnableAnnotationEditor","getEnableTextEditor","getEnableAnnotationEditor","storeRecordsFetchCount","count","getRecordsFetchCount","Folder","folderId","expandedId","storeSelectedModuleExpandedId","getStoredSelectedModuleExpandedId","userTaskLabel","taskState","notStarted","queued","suspended","completed","canceled","faulted","invalidWorkflow","suspendedWorkflow","abandoned","taskStates","colorTheme","secondary","variantType","lighten","variantNumber","n4","colorMD","indigo","darken","n2","warning","n1","success","taskCreatedColorClass","getSuccessColorClass","dueDateTextClass","task","displayType","emphasis","_task$isDue","dueDate","isDue","getErrorColor","getWarningColor","Text","displayTypes","subtitle1","fontEmphasis","italic","getClassText","dueDateColorClass","_task$isDue2","getErrorColorClass","getWarningColorClass","overdueTextClass","_task$isOverdue","_Text","isOverdue","taskValidationColorClass","isValid","dueDateMessage","_task$isDue3","taskPriority","low","normal","high","taskPriorities","findTaskPriority","findTaskPriorityColor","_taskPriorities$find","priorityTextClass","findPriorityColor","priority","regular","priorityColorClass","_findPriorityColor","getClassColor","Color","findTaskState","findTaskStateColorClass","findTaskStateColor","getColorClass","_taskStates$find","noteColorClass","yellow","userTaskType","unspecified","toDo","approval","review","userTaskCommandType","reassign","release","take","userTaskCommands","iconAccountArrowRight","iconUndo","iconAccountCheck","findUserTaskCommand","userTaskTypes","commandAccept","commandReject","iconClear","iconCheck","findUserTaskType","typeId","findCommandTaskAcceptColorClass","_findUserTaskType","findCommandTaskRejectColorClass","_findUserTaskType2","taskLocalStorageKeys","taskFilterOption","taskHeaders","visible","align","sortable","assignmentMethod","auto","manual","self","assignmentMethods","findAssignmentMethod","am","isValidTaskEntries","_task$assignment","assignment","assignee","appModuleName","_state$appModule$name","_state$appModule","appModule","appModuleIcon","_state$appModule$icon","_state$appModule2","appModuleTitle","_state$appModule$titl","_state$appModule3","visibleLeftDrawer","_state$drawerLeft","drawerLeft","visibleRightDrawer","_state$drawerRight","drawerRight","_state$enableMiniDraw","_state$usesAppTabs","_state$appBarCollapse","_state$usesSidebarIma","_state$dialogToolbarS","dialogTitleColor","appBarColor","appBarGradient","dataTableToolbarColor","progressColor","buttonCancelColor","_state$buttonTextStyl","_state$buttonOutlined","_state$buttonRounded","_state$buttonElevatio","detailsToolbarColor","deleteColor","actions","mutations","isStringValueTrue","storeAppModuleName","payload","commandColor","_state$recordsFetchCo","green","primary","namespaced","drawerMini","selectedModuleItem","selectedModuleItemId","_state$category$id","_state$category","selectedModuleItemName","_state$category$name","_state$category2","documents","_state$documents","findDocument","_getters$documents","SET_CATEGORIES","SET_CATEGORY","scriptName","setRecord","context","_await$getRecord","_await$getCategory","_record","_record2","_await$getFileVersion","getRecord","getCategory","getFileVersion","commit","handleError","setRecordShortcut","_await$getRecordShort","_await$getCategory2","_record$categoryId2","_record3","getRecordShortcut","recordPayload","setDocument","_await$getDocument","_await$getCategory3","_document$categoryId","getDocument","setDocuments","countChildren","response","getChildren","catch","setChildrenDocuments","_payload$id","getRecordChildren","clearDocuments","setFileDocuments","files","setFileVersions","_response$data","getFileVersions","versions","fileVersions","setFileVersion","_payload$id2","_payload$version","_await$getFileVersion2","_await$getCategory4","_fileVersion$category","fileVersion","saveRecord","_payload$record$recor","_payload$record","_payload$record$name","_payload$record2","_payload$record$id","_payload$record3","_payload$record$flyin","_payload$record4","_payload$record$isLin","_payload$record5","_payload$record$paren","_payload$record6","model","apiUpdateRecord","updatePayload","deleteRecord","_payload$id3","apiDeleteRecord","setSearchCategory","resolutionFunc","categoryAll","lockRecord","apiLockRecord","_response$data2","_context$state","unLockRecord","apiUnLockRecord","_response$data3","_context$state2","setDraftRecord","apiSetDraftRecord","_response$data4","_context$state3","setReadOnlyRecord","apiSetReadOnlyRecord","_response$data5","_context$state4","uploadFile","_payload$id4","apiUploadFile","uploadFileModel","_event$total","total","progress","Math","round","loaded","uploadCompoundDocumentFile","_payload$id5","_payload$insertBefore","_payload$enqueue","_payload$comments","apiUploadCompoundDocumentFile","insertBeforePage","enqueue","_event$total2","compoundPayload","recordList","updateCompoundFileList","getRecordInfo","recordInfo","apiGetRecordInfo","checkOutFile","apiCheckOutFile","checkOutFileForSign","apiCheckOutFileForSign","releaseFile","apiReleaseFile","checkInFile","_payload$id6","apiCheckInFile","_event$total3","checkInEditedDocument","apiCheckInScannedFileToRecord","apiCheckInEditedDocument","_payload$id7","downloadImageFileVersion","apiDownloadImageFileVersion","_payload$id8","_payload$version2","setNewRecordCategory","recordNewCategory","setRecordTextFieldValue","_context$state$record","_context$state5","_response$data6","setDatabaseLookupData","_context$state6","_category$id2","_context$state7","lookup","checkInScannedFile","_context$state8","_context$state$record2","_context$state9","_response3","_response","_payload$insert","_payload$insertAtBegi","_response2","insert","insertAtBeginning","apiCheckInScannedFileToFile","_findRecordType$name","_findRecordType$name2","_findRecordType2","moveRecord","apiMoveRecord","copyRecord","apiCopyRecord","moveRecordShortcut","apiMoveRecordShortcut","copyRecordShortcut","apiCopyRecordShortcut","createShortcut","apiCreateShortcut","deleteRecordShortcut","apiDeleteRecordShortcut","restoreRecord","restoreDeletedRecord","meetingTemplates","agendaMeetings","agendaSections","agendaItems","getMeetingAgendaTemplates","getAxios","getMeetingAgendaTemplate","getAgendaMeetings","startPage","countPerPage","searchModel","post","publishMeeting","unPublishMeeting","postMeeting","unPostMeeting","getAgendaItemTemplates","sectionId","createAgendaItem","createItemModel","submitAgendaItem","recallAgendaItem","referAgendaItem","destinationId","option","templateIndex","deferAgendaItem","createAgendaDocument","meetingId","createDraftAgendaDocument","createOutlineAgendaDocument","createAgendaPacket","optionModel","getAgendaItemLegislatorNote","getAgendaSectionLegislatorNote","saveAgendaItemLegislatorNote","note","saveAgendaSectionLegislatorNote","deleteAgendaItemLegislatorNote","delete","deleteAgendaSectionLegislatorNote","getAgendaMeetingRollCall","saveAgendaMeetingRollCall","rollCall","submitMeetingAgendaItems","submitSectionAgendaItems","recallMeetingAgendaItems","recallSectionAgendaItems","moveMeetingContents","insertTreePosition","moveBackupMaterial","workflowUserTasks","workflowProjects","workflowTemplates","workflowProjectCategories","workflowRoles","getWorkflowUserTasks","getWorkflowUserTask","accept","takeTask","sendNotification","releaseTask","getWorkflowProjects","excludeCompleted","getWorkflowProject","getWorkflowProjectTemplates","getWorkflowCalendars","getWorkflowProjectTemplate","getWorkflowProjectCategories","getWorkflowProjectCategoryTemplates","startWorkflowProject","projectNew","deleteWorkflowProject","suspendWorkflowProject","resumeWorkflowProject","cancelWorkflowProject","getWorkflowRoles","getWorkflowUsers","roles","getManagerCandidates","templateId","getUserCandidates","taskId","assignManager","_payload$projectId","_payload$managerId","_payload$comment","_payload$sendNotifica","managerId","comment","notify","assignUser","_payload$taskId","_payload$userId","_payload$comment2","_payload$sendNotifica2","userId","setBreadcrumbs","_context$state$breadc","fetchBreadcrumbs","SET_BREADCRUMBS","breadcrumbs","setParentBreadcrumbs","_filter","_context$state$breadc2","filter","setChildRecords","_payload$recordIndex","startIndex","recordIndex","setSearchedChildRecords","_payload$WithInId","_payload$ChildrenOnly","_payload$ChildrenOnly2","queryModel","createQueryModel","withInId","WithInId","childrenOnly","ChildrenOnly","Value","searchRecordsWithIn","StartPage","CountPerPage","setDocumentChildren","setFoundDocuments","_payload$WithInId2","_payload$ChildrenOnly3","_payload$ChildrenOnly4","filterIncludeFields","Fields","createRecord","_payload$record$field","apiCreateRecord","createAgendaMeeting","_payload$record$paren2","_payload$agendaTempla","agendaTemplateId","_payload$record$name2","_payload$record7","_payload$record$recor2","_payload$record8","_payload$record$field2","_payload$record9","_payload$record$flyin2","_payload$record10","apiCreateAgendaMeeting","_payload$record$paren3","_payload$record11","_payload$record$name3","_payload$record12","_category$id3","_payload$agendaTempla2","_recordItem$recordTyp","_recordItem$fieldValu","_recordItem$flyingFie","recordItem","agendaTemplateIndex","apiCreateAgendaItem","setProjects","_context$state$projec","getProjects","SET_RECORD_PROJECTS","projects","setOpenProject","SET_RECORD_OPEN_PROJECTS","openProjects","setNewWorkflowProject","_context$state$record3","_await$getCategoryPro","_definition$runOnlyOn","_definition$startProj","recordMode","recordCategory","definition","getCategoryProjectTemplateDefinition","projectTemplate","project","prepareNewProject","runOnlyOneProject","startProjectOption","template","SET_PROJECT_NEW","projectLabel","setProjectNewTemplate","apiGetWorkflowProjectTemplate","SET_PROJECT_NEW_TEMPLATE","projectNewTemplate","_payload$recordId","_state$record","_state$projects2","apiStartWorkflowProject","_state$projects","getCategories","args","_context$state$catego","getCategoryDocuments","page","pageSize","searchTerm","formData","Id","Name","Owner","Creator","CreatedDateFrom","CreatedDateTo","ModifiedDateFrom","ModifiedDateTo","CategoryId","TypeId","StateId","Extension","Version","Pages","Include","fld","searchRecords","downloadFile","countRecords","getRecords","includeCurrentRecord","_state$record$id","breadcrumb","setCurrentRecord","_getRecords","recordFileVersion","setRecordMode","view","documentCategory","_payload$children","_children$length","childRecords","versionCategory","setRecordLock","_payload$isLocked","_getRecords2","updateRecordStatus","_payload$stateId","_findRecordState$name","_getRecords3","stateName","updateRecordInfos","_getRecords4","setRecordReadOnly","_payload$isReadOnly","_getRecords5","setRecordDraft","_payload$isDraft","_getRecords6","updateFileVersionInfo","_getRecords7","setUploadFileProgress","uploadFileProgress","setRecordNew","setRecordNewAndCategory","setRecordCreated","_recordNew$id","_state$record$parentI","_state$record2","_state$record$id2","_state$record3","setRecordEdit","edit","setRecordEdited","_getRecords8","_state$record4","_state$record$recordT","_state$record5","_state$versions","setRecordDeleted","_state$record$id3","_state$record6","_state$record7","index","indexOf","doc","_state$versions2","recordDeleted","_payload$value","setRecordLookupData","_fv$id","_fv$id3","_fv$id2","_fv$value","setCompoundDocumentNewFileVersions","newRecords","_state$record$id4","_state$record8","appendRecords","recordObj","categories","searchCategory","notifications","categoryTypes","postAgendaMeeting","unPostAgendaMeeting","publishAgendaMeeting","_response$data$id","_response$data$id2","unPublishAgendaMeeting","_response$data$id3","_response$data$id4","apiSubmitAgendaItem","apiRecallAgendaItem","createAgenda","_payload$type","findAgendaDocumentType","agendaDocumentType","agendaDocument","_payload$meetingId","agendaDraft","_payload$meetingId2","_payload$recordId2","agendaOutline","_payload$meetingId3","_payload$recordId3","_payload$meetingId4","_payload$recordId4","_payload$option","apiCreateAgendaPacket","_findAgendaDocumentTy","agendaPacket","apiReferAgendaItem","sourceId","apiDeferAgendaItem","getLegislatorNote","isAgendaItem","saveLegislatorNote","deleteLegislatorNote","getRollCall","saveRollCall","submitAgendaItemsMeeting","submitAgendaItemsSection","recallAgendaItemsMeeting","_response$data7","recallAgendaItemsSection","_response$data8","_response$data$parent","_response$data9","apiMoveMeetingContents","_response$data$parent2","_response$data10","apiMoveBackupMaterial","_state$drawerMini","_state$record$name","findProject","_getters$projects","_el$projectId","apiDeleteWorkflowProject","SET_PROJECT_DELETED","_payload$message","apiSuspendWorkflowProject","SET_PROJECT_SUSPENDED","apiCancelWorkflowProject","SET_PROJECT_CANCELED","apiResumeWorkflowProject","SET_PROJECT_RESUMED","reindexDocument","reindexFile","countRecordsWithIn","_state$breadcrumbs$le","_state$breadcrumbs","breadcrumbsCount","expandedRecord","setRecordProjects","setRecordOpenProjects","foundProject","setProjectNew","newProject","updateNewProject","setNewRecordProject","setProjectDeleted","_state$openProjects","setProjectCanceled","_state$openProjects2","status","projectState","setProjectSuspended","_state$projects3","_state$openProjects3","setProjectResumed","_state$projects4","_state$openProjects4","executing","updateTaskAssignee","userName","_state$task$actorId","_state$task","_state$task2","_state$task3","assignedTo","movedRecord","moveType","_payload$type2","_payload$records","batchMovedRecords","localUploadedFile","UPDATE_PROJECT_MANAGER","projectManagerName","managerName","SET_RECORD_NEW_PROJECT","fetchRecordListById","fetchDocumentListById","_state$task$taskId","_state$task$name","statusText","SET_TASKS","SET_TASK","_payload$note","_context$state$tasks","tasks","_payload$taskId2","_payload$note2","_context$state$tasks2","_payload$taskId3","_payload$note3","dispatch","_findUserTaskCommand","_payload$taskId4","_payload$note4","_findUserTaskCommand2","_payload$taskId5","_findUserTaskCommand3","MyWork","UPDATE_TASK_ASSIGNEE","_state$project$projec","_state$project","_state$project$projec2","_state$project2","projectName","findProjectCategory","_getters$projectCateg","projectCategories","_el$id2","SET_PROJECTS","SET_PROJECT","SET_PROJECT_TEMPLATES","SET_PROJECT_TEMPLATE","SET_WORKFLOW_ROLES","SET_WORKFLOW_CALENDARS","SET_PROJECT_CATEGORIES","SET_PROJECT_CATEGORY","SET_PROJECT_CATEGORY_TEMPLATES","payloadCategory","templates","_context$state$projec2","projectTemplates","projectTemplateLabel","_context$state$workfl","_context$state$workfl2","workflowCalendars","_payload$categoryId","_payload$templates","_state$projectCategor","pc","projectCategory","_payload$managerName","documentTemplates","getDocumentAssemblyTemplates","getDocumentAssemblyTemplate","_await$getMeetingAgen","_await$getDocumentAss","Agenda","SET_SEARCH_HIGHLIGHTS","uploadFileToEmptyRecordWip","insertFileOption","uploadFileToFileWip","uploadFileToCheckedOutFile","_event$total4","downloadFileAsPdf","downloadEmptyRecordWip","downloadEmptyRecordWipAsPDFDocument","downloadFileWip","downloadFileWipAsPDFDocument","downloadCompoundDocumentAsPdf","downloadFileVersion","downloadPdfFileVersion","_payload$version3","downloadFileVersionAsPdf","_payload$version4","downloadEditFile","downloadEditFileAsPdf","downloadExportFileVersion","_payload$version5","downloadExportFileVersionAsPdf","_payload$version6","releaseCheckedOutFile","releaseWIPFile","releaseWIPRecord","props","getSearchHighlights","checkInScannedFileToRecord","_payload$id9","_payload$id10","scanToCompoundDocument","_payload$id11","scanToCheckedInFile","_payload$id12","importAnnotations","pageOption","_event$total5","exportAnnotations","getOcrText","saveOcrText","searchHighlights","_state$user","features","_getters$principal$fe","_getters$principal","_getters$principal$re","_getters$principal2","_getters$principal$ac","_getters$principal3","_getters$principal$ac2","_getters$principal4","repositoryUid","_getters$principal$re2","_getters$principal5","isAdministrator","_getters$principal$is","_getters$principal6","_state$enableWebScan","isLicensedModule","_getters$modules","findFeature","_getters$features","f","_f$name","isSupportedModule","findModule","_module$public","public","Search","Tasks","feature","available","isAvailableFeature","isAvailableApplicationModule","isEnabledModule","isAllowedSystemOperation","isSupportedFeature","featureName","WebScan","used","repositories","formFields","findFormField","_getters$formFields","createRecordCategories","Create","createRecordCategoriesByCategoryType","categoryTypeId","_filter2","_getters$createRecord","categoryType","updateRecordCategories","_filter3","updateRecordCategoriesByCategoryType","_filter4","_getters$updateRecord","findCategory","_getters$fields","_getters$findField$is","_getters$findField","_getters$findField$is2","_getters$findField2","isAllowedViewField","isAllowedModifyField","_getters$principal$sy","_getters$principal7","so","countFields","_getters$fields$lengt","_getters$fields2","countCategories","_getters$categories$l","_getters$categories","isUserLoggedIn","_getters$principal$ac3","_getters$principal8","auth","credentials","FormData","append","password","loginWithToken","updateAuthorization","defaults","headers","common","enableFeature","supported","settingValue","commitUser","SET_USER_DATA","appModules","SET_USER_MODULES","isEmpty","SET_ENABLE_MODULE_CATEGORY","SET_ENABLE_MODULE_SEARCH","enableTasks","SET_ENABLE_MODULE_TASKS","enableProjects","SET_ENABLE_MODULE_PROJECTS","SET_ENABLE_MODULE_AGENDA","createUser","_data$principal$actor","_data$principal","_data$token","_data$validFrom","_data$validTo","validFrom","validTo","setUserCategoriesAndFields","getCategoryTypes","SET_CATEGORY_TYPES","getFields","SET_FIELDS","formatLoginError","_e$response","getRepositories","SET_REPOSITORIES","apiGetUserRepositoryName","types","CLEAR_USER_DATA","changeRepository","SET_CHANGE_REPOSITORY","cancelChangeRepository","storedUser","getField","SET_FORM_FIELD","saveUserToLocalStore","_principal$repository","_user$token","_user$tokenValidFrom","_user$tokenValidTo","saveUser","_state$user$principal","_state$user2","_state$user$principal2","_state$user3","location","reload","change","_state$user$principal3","_state$user4","_state$user$principal4","_state$user5","_state$user$token","_state$user6","_state$user$tokenVali","_state$user7","_state$user$tokenVali2","_state$user8","_state$user$principal5","_state$user9","_state$user$principal6","_state$user10","_state$formFields","_state$formFields2","formField","_ff$id","_ff$id2","SET_TEXT_EDITOR","SET_ANNOTATION_EDITOR","app","supportedScanning","Vue","use","Vuex","Store","solution","search","folder","inbox","agenda","recordAttributesOperations","isValidDate","date","Date","toLocaleString","month","day","year","toLocalDateTimeString","toLocalDateString","convertToYYYYMMDDHHMM","inputDateTime","datePart","timePart","split","time","period","hour","minute","isPM","formattedDate","padStart","formattedHour","formattedTime","projectTemplateOperation","select","open","projectTemplateOperations","iconProjects","iconTrash","findProjectTemplateOperation","formatProjectTemplateActionName","_findProjectTemplateO","projectTemplateEntity","commandNames","ok","cancel","close","save","add","details","refresh","reset","clear","jump","jumpTo","print","enter","logOut","configure","commandIcons","iconClose","iconSave","iconAdd","iconEdit","iconRefresh","iconPrinter","iconLogOut","iconConfigure","account","iconAccount","iconDatabase","commandStatus","unavailable","enabled","disabled","commandStatuses","findCommandStatus","_commandStatuses$find","_projectTemplate$proj","_projectTemplate$comm","_projectTemplate$id","_mapUserTasks","projectManager","userTasks","mapUserTasks","_template$id","_template$projectMana","_template$comment","_template$userTaskTem","_template$userTaskTem2","_mapUserTasks2","userTaskTemplates","_template$userTaskTem3","_template$userTaskTem4","map","duration","calendar","fixed","milestone","reassignment","getNewProjectUserTasks","_project$userTasks$ma","_project$userTasks","ut","_ut$duration","deleteProjectCommandStatus","_project$canAccess","_project$canCancel","_project$canSuspend","_project$isValid","_project$status","_findProjectState","reason","canAccess","canCancel","canSuspend","findProjectState","cancelProjectCommandStatus","_project$canAccess2","_project$canCancel2","_project$isValid2","_project$status2","_findProjectState2","suspendProjectCommandStatus","_project$canAccess3","_project$canSuspend2","_project$isValid3","_project$status3","_findProjectState3","resumeProjectCommandStatus","_project$canAccess4","_project$isValid4","_project$status4","_findProjectState4","changeOwnershipProjectCommandStatus","_project$canAccess5","_project$canChangeOwn","_project$isValid5","_project$status5","_findProjectState5","canChangeOwnership","getProjectTasksCalendarEvents","events","start","statusChanged","end","taskStatusTooltip","taskDueDateLocalDateTime","projectContextMenuItem","ShowDetails","DailyView","MonthlyView","WeeklyView","JumpToTask","JumpToRecord","Export","projectCalendarMenuItems","calendarType","iconFileDetails","iconView","iconRun","canJumpToTask","iconReport","projectTimelineMenuItems","_c","_self","staticRenderFns","component","register","ready","registered","cached","updatefound","updated","offline","Vuetify","icons","iconfont","theme","themes","light","colors","red","lighten1","dark","blue","lighten3","config","productionTip","$viewerChannel","BroadcastChannel","$mainAppChannel","FontAwesomeIcon","urlRuntimeSettings","urlPublicAccessSettings","runApp","router","beforeCreate","this","$store","vuetify","render","h","App","$mount","fetchSettings","fetch","json","fetchAllSettings","runtimeSettings","publicAccessSettings","runtime","setting","finally","documentViewerRouteName","createDocumentViewerRoute","fullTextSearch","params","query","documentVersion","createDocumentViewerFileHistoryRoute","isViewOnly","documentRoutes","path","createAppModuleRoutePath","createAppModuleRouteName","meta","requiresAuth","viewer","editor","canEditFileVersionInDocumentEditor","isEditableInDocumentEditor","principle","_findImageFileType$is","_findImageFileType","findImageFileType","isImageFormat","isFilePdf","isPdfExtension","ChangedRecordInfoModel","hasVersionChanged","RecordInfo","HasVersionChanged","iconMenuDown","iconMenu","iconChevronDown","iconChevronUp","iconChevronLeft","iconChevronRight","iconDotsHorizontal","iconDotsHorizontalCircleOutline","iconArrowRightDrop","iconArrowLeftDrop","iconArrowDownDrop","iconArrowUpCircle","iconArrowUpThin","iconManager","iconSearch","iconNavigateToDetails","iconMinus","iconCalendar","iconCalendarToday","iconNotification","iconNote","iconAttachment","iconTask","iconFileEdit","iconFileView","iconCaps","iconReindex","iconReload","iconHint","iconRestore","iconFolderOutline","iconCategories","iconEvents","iconTasks","iconFolder","iconFolderMultiple","iconFolderUpload","iconFile","iconFileMultiple","iconUploadFile","iconDocument","iconRecord","iconRecordMultiple","iconFilePreview","iconJumpToFolder","iconFolderRefresh","iconCopy","iconCut","iconPaste","iconPasteShortcut","iconJumpToOriginal","iconMenuRight","iconFilePdf","iconFileWord","iconExcel","iconFileJpg","iconFileGif","iconFileImage","iconFilePng","iconXml","iconHtml","iconGlobe","iconEvent","iconAgendaSection","iconAgendaItem","iconSubmit","iconRecall","iconRollCall","iconClerkModule","iconLegislatorsNotepad","iconPostMeeting","iconUnPostMeeting","iconPlay","iconCancel","iconSuspend","iconQuestion","iconWarning","iconInfo","iconError","iconExclamation","iconDateOn","iconEqual","iconGreaterThan","iconGreaterThanOrEqual","iconLessThan","iconLessThanOrEqual","iconAsterisk","iconFilter","iconFilterMenu","iconResetFilter","iconShowPassword","iconHidePassword","iconDatabaseLookup","iconFiles","iconDownload","iconPrint","iconScanner","iconSend","iconLink","iconAcquire","iconLock","iconUnLock","iconReadOnly","iconDraft","iconFileCheckOut","iconFileCheckOutForSign","iconFileCheckIn","iconFileRelease","iconExport","iconImport","iconZoomIn","iconZoomOut","iconFitToPage","iconResize","iconFitToWidth","iconRotateLeft","iconRotateRight","iconDropDownload","iconFullBack","iconFullForward","iconSingleForward","iconSingleBackward","iconPage","iconMovePage","iconAnnotation","iconRectangle","iconEllipse","iconSingleLine","iconMultipleLines","iconFreeHand","iconPolygon","iconHighlight","iconText","iconRedaction","iconStamp","iconPdf","iconImage","iconWord","iconJpg","iconHistory","iconPhoneWork","iconEmail","iconMapMarker","iconMessageText","iconMessageQuestion","iconOnHold","iconAccessDenied","localStorage","getItem","setItem","removeItem","_store$getters$userR2","_store$getters$userA","webEnabledAgenda","webEnabledAgendaMediaManager","webHtmlAgenda","webHtmlAgendaMediaManager","meetingMinutes","summary","webEnabled","webEnabledMediaManager","webHtmlEnabled","webHtmlMediaManager","agendaDocumentTypes","minutesSummary","agendaSystemDocuments","agendaPacketTabOptions","noNumbering","itemNumbering","overallNumbering","agendaPacketTabOption","findAgendaPacketTabType","AgendaPacketQueryModel","NumberingType","NumberPosition","NumberingOptions","InsertPageSeparator","IncludeAgendaItemLink","IncludeLinksBackToItem","LinkStaticText","LinkText","LinkNote","createAgendaPacketOption","numberPosition","currentTab","upOptions","downOptions","itemTitle","pages","itemPrefixValue","itemSuffixValue","itemTitlePrefixValue","itemTitleLengthValue","pagePrefixValue","pageSuffixValue","pagesPrefixValue","pagesSuffixValue","includeLinkBackUp","includePageSeparator","includeLinkAgenda","linkStaticText","agendaItemTitle","linkNote","agendaPacketContent","itemPrefix","itemSuffix","itemTitlePrefix","itemTitleLength","pagePrefix","pageSuffix","pageCountPrefix","pageCountSuffix","agendaMeetingTabOptions","meeting","section","clerkModule","legislatorsNotepad","agendaMeetingTabOption","agendaSectionTabOption","agendaItemTabOption","_axios","createAxios","interceptors","axios","baseURL","withCredentials","Accept","storeAgendaTemplateId","getStoredAgendaTemplateId","formId","formName","fieldLabel","recordNameRules","_category$requiredRec","_category$requiredRec2","rules","requiredRecordName","requiredRecordNameForAutoFiling","recordCategoryRules","general","system","backupMaterial","otherInfoItemsDocument","findCategoryType","ct","findCategoryTypeColorClass","findCategoryTypeColor","_categoryTypes$find","_category$operations$","_category$operations","projectStates","projectOverdueColor","projectOverdueColorClass","findProjectStateColorClass","findProjectStateColor","_projectStates$find","projectDateToShortLocalString","projectOperation","AccessProject","SuspendProject","RunProject","ResumeProject","CancelProject","DeleteProject","ReassignManager","ReassignTask","ExportProject","RepairProject","projectOperations","hint","findProjectOperation","projectLocalStorageKeys","projectFilterOption","projectHeaders","projectNameRules","projectTemplateRules","autoStart","showPredefinedProjectTemplate","projectValidationColorClass","display4","display3","display2","display1","headline","subtitle2","body1","body2","button","caption","overline","black","bold","medium","thin","alignments","justify","center","left","right","opacities","transforms","lowercase","uppercase","capitalize","underline","lineThrough","constructor","emphasize","alignment","transform","opacity","decoration","_defineProperty","breakpoint","textColorClass","getTextColorClass","colorText","isValidVariantType","variant","isValidVariantNumber","folderRoutes","createModuleRoutePath","routeParams","createModuleContentRouteName","createModuleParamsId","expandedRoutePath","createModuleExpandRecordContentRouteName","createModuleChildRecordParamsId","shortcutRoutePath","createModuleExpandRecordShortcutContentRouteName","categoryRoutes","searchRoutes","moduleTitles","inboxRoutes","projectRoutes","agendaRoutes","loginRoutes","VueRouter","base","routes","homeRoutes","notFoundRoutes","metaRequiresAuth","autoRoute","to","next","matched","some","route","redirectTo","fullPath","getAutoLoginUserInfo","userLoggedIn","hasToken","canAutoLogin","noToken","cannotAutoLoginReason","autoLogin","logCannotAutoLoginReason","loginInfo","beforeEach","from","formatStatus","_task$status","_findTaskState$name","_findTaskState","statusName","formatStatusDate","_task$status2","_findTaskState$name2","_findTaskState2","formatStatusDateAndTime","formatDueDate","formatOverdueText","formatPriority","_findTaskPriority","canAcceptTask","isValidTask","canRejectTask","canTakeTask","isSelfAssignment","canReassignTask","canReleaseTask","_task$assignmentMetho","_task$actorId","_task$canSelfRelease","assignmentMethodType","canSelfRelease","isTaskAssigned","_task$actorId2","selfReleaseDisabled","getTaskCalendarEvents","moduleIcons","Execute","WFx","LSx","_fields$length","createQueryFieldModel","include","operator","Operator","hasSearchableValue","_field$value$toString","_field$value2","LITERAL","isNumericFieldType","searchableNumericFieldValue","searchableFieldValue","_field$fieldDataType2","_field$value3","parseVal","parseInt","canSearchWithinRecord","hasSearchCriteria","criteria","excludeWithInId","_criteria$Id$length","_criteria$Id","_criteria$Name","_criteria$Owner","_criteria$Creator","_criteria$CreatedDate","_criteria$ModifiedDat","_criteria$TypeId","_criteria$StateId","_criteria$Extension","_criteria$Version","_criteria$Pages","_criteria$CategoryId","_criteria$Fields$filt","_criteria$Fields$filt2","_criteria$Id$0$Value","_criteria$Id$","itemCount","_el$Value$toString","_el$Value","formatSearchCriteria","fieldCriteriaToString","QuestysCMx","CmxBarcodeCoverSheets","CmxFastForms","CmxMSOfficeAddIn","OcrNuance","OcrTesseract","OcrTesseract02","OcrTesseract04","OcrTesseract06","OcrTesseract08","PDFViewer","WebClient","WebPortal","ScanIsis","featureStatus","_feature$total","_feature$used","licenced","isLicencedFeature","released","isReleasedFeature","notSupportedReason","createFeatureStatus","licenceUsed","licenceTotal","licenceUsage","statusLicenced","_feature$total2","fileType","unknown","word","wordX","excel","excelX","visio","powerPoint","powerPointX","rtf","xps","html","xhtml","mhtml","xml","svg","pcl","pcl6","outlook","imageTiff","imageJpeg","imageJpeg2000","imagePng","imageGif","imageBmp","imageEmf","imagePcx","imageTga","imagePcd","jpg","jpeg","png","gif","bmp","pcx","extensionAcronym","acronym","findExtension","fileTypes","canAnnotate","multiFramed","ImageJpeg","findFileType","ft","imageFileTypes","x","annotateFileTypes","isAnnotateFileTypeExtension","ex","findFileTypeIcon","_fileTypes$find$icon","_fileTypes$find","checkInFileOption","insertBeforeFirstPage","insertAfterLastPage","overwrite","checkInFileOptions","checkInWIPFileOptions","checkInSingleImageFileExtensions","checkInMultipleImageFileExtensions","checkInCompoundMultipleImageFileExtensions","downloadFileOption","asItIs","asPdf","beforeFirstPage","afterLastPage","findCheckInMultipleImageFileExtension","findCheckInSingleImageFileExtensions","getFileSize","bytes","decimals","sizes","size","unit","k","dm","floor","parseFloat","pow","toFixed","findCheckinFileOption","downloadFileMode","default","wip","viewerExport","fieldName","immutable","requiredForAutoFiling","unselectable","searchOperator","equal","on","like","contains","greaterThan","equalOrGreaterThan","lessThan","equalOrLessThan","searchOperators","rangeFromOperators","isRangeFromOperator","rangeToOperators","literalSearchOperators","textSearchOperators","numericSearchOperators","dateSearchOperators","bitSearchOperators","BIT","CURRENCY","INTEGER","NUMBER","fieldTypes","fieldTypeId","isRangeSearchable","defaultSearchOperator","defaultSearchRangeToOperator","fieldOperationName","update","_findFieldOperation$a","_findFieldOperation","_findFieldOperation$a2","_findFieldOperation2","_findFieldOperation$a3","_findFieldOperation3","_findFieldOperation$a4","_findFieldOperation4","findFieldOperation","_findFieldOperation$a5","_findFieldOperation5","_field$operations","accent","info","pink","purple","deepPurple","lightBlue","cyan","teal","lightGreen","lime","amber","orange","deepOrange","brown","blueGrey","grey","white","transparent","n3","n5","getMDColorClass","colorName","errorMsg","_error$response","_error$response2","_error$response3","_data$title","_data$detail","detail","isBlob","problem","trimEnd","br","errorMessage","findAppModule","getStoredAppModuleName","rootName","routeNames","home","root","notImplemented","error404","createAppModuleRoute","createModuleRecordRouteLocation","_record$parentId2","createModuleItemContentRouteLocation","createModuleChildRecordShortcutContentRouteLocation","createModuleChildRecordContentRouteLocation","paramName","_route$params","isNumber","_route$params$id$toSt","_route$params2","_route$params$expande","_route$params3","redirect","isFullscreen","library","faCheck","faCheckCircle","faAsterisk","faClock","faGlobe","faLock","faPencil","faLink","faTrash","faXmark","faTriangleExclamation","faHand","faEye","faEyeSlash","faInfo","faSignOut","fasIconName","check","asterisk","clock","globe","lock","pencil","link","trash","xmark","triangleExclamation","hand","eye","eyeSlash","signOut","faPrefix","checkCircle","faSolid","faRegular","createFontAwesomeSolidIcon","iconName","createFontAwesomeIcon","prefix","variantTypes","variantNumbers","getSuccessColor","getSecondaryColor","getSecondaryLightColor","getSecondaryLightColorClass","getSecondaryColorClass","number","emptyRecords","folders","getUserRepositoryName","fieldValueModels","_payload$queryModel","_payload$parentId","originalId","uploadFileOptionModel","onUploadProgress","Comments","Enqueue","draft","Draft","InsertFileOption","createRecordModel","updateRecord","updateRecordModel","put","_payload$destinationI","originalRecordId","_payload$parentId2","canCreateShortcut","_payload$parentId5","_payload$recordParent","_payload$destinationI2","recordParentId","_payload$recordParent2","_payload$destinationI3","_payload$count","_payload$checkInModel","_payload$compoundInse","checkInModel","compoundInsertOption","getDocumentFileCount","options","downloadOptions","responseType","includeRecordVersion","_payload$id13","_payload$id14","_payload$id15","_payload$id16","importOption","_payload$id17","_payload$version7","_payload$pageOption","_payload$id18","_payload$page","_payload$id19","_payload$text","_payload$page2","_payload$id20","_payload$id21","_payload$id22","_payload$id23","createMeetingModel","_","require","_value$toString","str","array","charList","replace","RegExp","chars","trim","toLower","isEarlierThan","date1","date2","d1","d2","timestamp","isValidDateObject","isDate","dateISOString","_isoDate$length","isoDate","toISOString","substr","isOddNumber","createBlob","_data$type","Blob","_object$constructor","maxNumber","numbers","max","updatedBy","modifiedBy","AGENDA_MEETING","findRecordTypeIcon","_findRecordType$icon","modified","locked","notLocked","dispositionApprovalPending","dispositionPending","inProgress","passed","defeated","archived","posted","published","unassigned","readOnly","notReadOnly","recordTypeStates","recordStates","recordModes","findRecordMode","searchableProperty","creator","createdDateFrom","createdDateTo","modifiedDateFrom","modifiedDateTo","None","Read","Move","Notify","AccessDraft","AccessHidden","AccessVersion","ShortcutCreate","RunImageRedaction","RunImageAnnotation","LegalHoldManagement","RetentionManagement","NonOwnerAccess","ViewDetails","Restore","recordOperations","searchableProperties","_findFieldType$search","_findFieldType$search2","_findFieldType$search3","_findFieldType3","_findFieldType$search4","_findFieldType4","_findFieldType$search5","_findFieldType5","_findFieldType$search6","_findFieldType6","_findFieldType$search7","_findFieldType7","_findFieldType$search8","_findFieldType8","_findFieldType$search9","_findFieldType9","_findFieldType$search10","_findFieldType10","_findFieldType$search11","_findFieldType11","_findFieldType$search12","_findFieldType12","_findFieldType$search13","_findFieldType13","findSearchableProperty","colorRecordReadOnly","colorRecordReadOnlyClass","colorRecordInheritedReadOnly","colorRecordInheritedReadOnlyClass","colorRecordDeleted","colorRecordDeletedClass","colorRecordLocked","colorRecordLockedClass","colorRecordNew","colorRecordNewClass","colorRecordCreated","colorRecordCreatedClass","colorRecordCheckedOut","colorRecordCheckedOutClass","colorMeetingPosted","colorMeetingPostedClass","colorMeetingPublishedClass","colorAgendaItemSubmittedClass","colorRecordCheckedIn","colorRecordCheckedInClass","contextMenuRecordOperation","Select","Copy","Cut","JumpOriginal","Paste","Shortcut","SubmitItems","RecallItems","contextMenuRecordOperations","findContextMenuOperation","batchRecordStatus","Ready","Completed","Failed","Canceled","batchRecordStatuses","iconColor","findBatchRecordStatus","treeInsertOptions","firstChild","lastChild","beforeSibling","afterSibling"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAGnBC,EAAqB,CACxB,IAAO,GAMJjB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASa,EAAe7B,GACvB,OAAOyB,EAAoBK,EAAI,OAAS,GAAG9B,IAAUA,GAAW,IAAM,CAAC,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,YAAYA,GAAW,MAI52V,SAASyB,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAUgC,QAGnC,IAAIC,EAASL,EAAiB5B,GAAY,CACzCK,EAAGL,EACHkC,GAAG,EACHF,QAAS,IAUV,OANAlB,EAAQd,GAAUW,KAAKsB,EAAOD,QAASC,EAAQA,EAAOD,QAASN,GAG/DO,EAAOC,GAAI,EAGJD,EAAOD,QAKfN,EAAoBS,EAAI,SAAuBlC,GAC9C,IAAImC,EAAW,GAIXC,EAAY,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,GACr0JR,EAAmB5B,GAAUmC,EAASvB,KAAKgB,EAAmB5B,IACzB,IAAhC4B,EAAmB5B,IAAkBoC,EAAUpC,IACtDmC,EAASvB,KAAKgB,EAAmB5B,GAAW,IAAIqC,SAAQ,SAASC,EAASC,GAIzE,IAHA,IAAIC,EAAO,QAAU,GAAGxC,IAAUA,GAAW,IAAM,CAAC,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,i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","file":"js/app.b9ad9e5e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-10da3e10\":\"44da4362\",\"chunk-21612e72\":\"4627c82f\",\"chunk-2a3692e6\":\"614fdb9d\",\"chunk-2d0af8da\":\"e9385bdb\",\"chunk-2d21e357\":\"6e6b65ad\",\"chunk-32fbc9dd\":\"0b0eed9d\",\"chunk-3d7c3364\":\"87c771c0\",\"chunk-4d65a96f\":\"fa085bd1\",\"chunk-4d86ec75\":\"f681ea2e\",\"chunk-63ae647e\":\"6a459cbf\",\"chunk-6da54489\":\"b2a5c035\",\"chunk-7119cbfc\":\"d45f29e2\",\"chunk-a7e704da\":\"d0802f5f\",\"chunk-b86f3980\":\"38d76ca7\",\"chunk-ba8feeda\":\"1564a0cd\",\"chunk-01d5b3cd\":\"6d6baf74\",\"chunk-22f6dcf0\":\"944ef081\",\"chunk-314a2f3a\":\"783228e6\",\"chunk-43077d08\":\"329ed7dc\",\"chunk-e583e7ac\":\"d603e863\",\"chunk-54860d36\":\"f79dfb30\",\"chunk-23a69ac4\":\"bc9a2246\",\"chunk-1916b671\":\"2805f49e\",\"chunk-0b821fda\":\"3aa94eaf\",\"chunk-2d214449\":\"51912ae5\",\"chunk-42a7635a\":\"bf78a0d5\",\"chunk-6448b0ca\":\"cfd273bd\",\"chunk-78a71648\":\"8e9401dc\",\"chunk-7f675ece\":\"9d12c68e\",\"chunk-3f979d3d\":\"359ee6db\",\"chunk-b774f9f8\":\"236ec796\",\"chunk-b174d53c\":\"0398c096\",\"chunk-69e22b56\":\"4b109641\",\"chunk-3a54f445\":\"e7b4e3e7\",\"chunk-2e7d4e38\":\"d7ad3537\",\"chunk-60eb0781\":\"9c5773dd\",\"chunk-081a8b39\":\"2d853352\",\"chunk-2d237cc4\":\"a2c3d915\",\"chunk-12e48817\":\"24ec832f\",\"chunk-53863600\":\"d30d0fe5\",\"chunk-2ab4834e\":\"4e177d1a\",\"chunk-45628822\":\"bdb37f54\",\"chunk-24d127c2\":\"0d83e0d5\",\"chunk-3020af77\":\"2a66510c\",\"chunk-3e4897d8\":\"a597c94f\",\"chunk-06ef5354\":\"28e23772\",\"chunk-19093dfa\":\"ded60b44\",\"chunk-adc9b3e4\":\"e94b7ec1\",\"chunk-a798f246\":\"0f5d0254\",\"chunk-2d237c86\":\"3d672480\",\"chunk-26cf347b\":\"74a58b76\",\"chunk-589806b1\":\"4110d494\",\"chunk-529f1a4e\":\"946d80d6\",\"chunk-3e3f81db\":\"8dfc7d97\",\"chunk-74476da0\":\"05951d1d\",\"chunk-516824de\":\"4cf55361\",\"chunk-68dd498e\":\"604d0b39\",\"chunk-6c73730c\":\"71d51a7a\",\"chunk-73546286\":\"853d3df8\",\"chunk-60451e9e\":\"f3f0aa6a\",\"chunk-026c4ab7\":\"037c0d38\",\"chunk-4bdf2a9c\":\"4df2b652\",\"chunk-6a1117e5\":\"928fa367\",\"chunk-0d645c3e\":\"87695670\",\"chunk-15ad3f0e\":\"b80dceb6\",\"chunk-1911c446\":\"70371a90\",\"chunk-23022c9c\":\"405575d9\",\"chunk-242fb94c\":\"67959ae4\",\"chunk-2490d27c\":\"5e1a7fd1\",\"chunk-2ae37302\":\"e075f9ed\",\"chunk-2d0c49a6\":\"f8a5cd2c\",\"chunk-2d0d79d9\":\"f2e6e4c6\",\"chunk-2f24f1d7\":\"fed871f4\",\"chunk-389098c5\":\"eb9ea05d\",\"chunk-3cdace70\":\"4c795a12\",\"chunk-415b3132\":\"09b6917e\",\"chunk-48ee1212\":\"0e9bf24f\",\"chunk-4abf2127\":\"f0d24a02\",\"chunk-56ae0030\":\"a2a5a5ca\",\"chunk-57792f16\":\"b863782b\",\"chunk-5e15b4ad\":\"3cd0ca7a\",\"chunk-6ff0f890\":\"66cdee79\",\"chunk-73302cca\":\"a1433d63\",\"chunk-7b5be366\":\"d16a3ce3\",\"chunk-976ebe24\":\"b6904bc7\",\"chunk-a5fcc4fc\":\"e596520e\",\"chunk-a84c630a\":\"97435739\",\"chunk-7acff3ea\":\"25dce743\",\"chunk-b94d3322\":\"c7c782bf\",\"chunk-bbc9d7b2\":\"1d5ffbc3\",\"chunk-d16b703e\":\"428bdf25\",\"chunk-d6bc3056\":\"2cb3293d\",\"chunk-e42ae23e\":\"135d1df1\",\"chunk-fd8221d2\":\"8ff708d7\",\"chunk-2d0d6410\":\"6950316a\",\"chunk-50c22f88\":\"134c62db\",\"chunk-646bf606\":\"49d27803\",\"chunk-04a4fbe6\":\"44b8cbf8\",\"chunk-0ddde60f\":\"8a713793\",\"chunk-132996cb\":\"8c7566d9\",\"chunk-133f2cb0\":\"27c0f304\",\"chunk-15e594d4\":\"8c556e9c\",\"chunk-165c2c7c\":\"b14bddef\",\"chunk-178a7a50\":\"7c5d0f89\",\"chunk-0ee0a043\":\"8f6e0783\",\"chunk-6183c412\":\"d2da0a3f\",\"chunk-2d0d7634\":\"b043a3ab\",\"chunk-2d2263f6\":\"c4ac675b\",\"chunk-2fe1bf91\":\"0df75dda\",\"chunk-4693f4db\":\"b244c5bd\",\"chunk-5501c07c\":\"1b1c72b1\",\"chunk-550240b6\":\"cb14b742\",\"chunk-585a4fda\":\"f48536b7\",\"chunk-5bdd5131\":\"7fc666e8\",\"chunk-61bc71ce\":\"91599d08\",\"chunk-2d0c2307\":\"876f30e2\",\"chunk-63c07a88\":\"9042b8c9\",\"chunk-0b6cf1f9\":\"643c78ef\",\"chunk-7051c506\":\"f39b4348\",\"chunk-7e0afd3a\":\"2c4d581f\",\"chunk-2b64d36e\":\"2c9c789b\",\"chunk-a0cf9ac2\":\"f4ad235e\",\"chunk-ab50f194\":\"0459e614\",\"chunk-2f77d9ba\":\"e9ea29c0\",\"chunk-adb3d110\":\"9110d275\",\"chunk-03c815fc\":\"f8998a7c\",\"chunk-a86fd336\":\"c1999ac5\",\"chunk-044fdcc1\":\"060c8e47\",\"chunk-190ddc2c\":\"35695ac8\",\"chunk-218d126a\":\"f57e3b4d\",\"chunk-57c7c38e\":\"96173c09\",\"chunk-7d4431db\":\"fa7955e6\",\"chunk-8c317486\":\"e09cfba2\",\"chunk-cd5cc2fe\":\"8cc66636\",\"chunk-ebd6cb68\":\"140f9e1d\",\"chunk-21b27216\":\"6f047e40\",\"chunk-2d1c7648\":\"5a5e0b18\",\"chunk-7e6aa6f6\":\"c87d9e58\",\"chunk-34f90b33\":\"ae482882\",\"chunk-a912a4b8\":\"5717f66d\",\"chunk-0af8e3eb\":\"dba65a95\",\"chunk-15a7b68c\":\"44f81a46\",\"chunk-0a5923fa\":\"8f7576e6\",\"chunk-1bc655d2\":\"f227b12d\",\"chunk-1eae607c\":\"26e250da\",\"chunk-263eeecf\":\"e3b504d9\",\"chunk-2d0b97c2\":\"2deb7015\",\"chunk-2d0be08c\":\"54c14076\",\"chunk-2fe24d7f\":\"366d2515\",\"chunk-354b057c\":\"b990a769\",\"chunk-38ff58c1\":\"2975cd54\",\"chunk-39e4e711\":\"fe85b9f6\",\"chunk-3dad61b8\":\"25c76ab2\",\"chunk-4011a07e\":\"7e8715ad\",\"chunk-5503c36c\":\"58eb202a\",\"chunk-585bd290\":\"bde405d2\",\"chunk-588492a8\":\"f06ace4c\",\"chunk-61198fab\":\"7a424e12\",\"chunk-2d0da5bd\":\"3f32750f\",\"chunk-dbccf4ba\":\"55cd8fdc\",\"chunk-6b81e720\":\"cdef044c\",\"chunk-6cf93164\":\"24207210\",\"chunk-7772536f\":\"0b547246\",\"chunk-7f96540f\":\"c9ec7d2f\",\"chunk-858f7766\":\"467ef947\",\"chunk-8d66a710\":\"d3926e43\",\"chunk-8f8fe4bc\":\"e3f8333c\",\"chunk-4fbc7c12\":\"d7bd8396\",\"chunk-9c332e26\":\"f7096909\",\"chunk-a9e6edda\":\"36389b0f\",\"chunk-eed8fa06\":\"ad9171e0\",\"chunk-f19d9144\":\"1c93901e\",\"chunk-f7a3031c\":\"064f4a18\",\"chunk-fc66719c\":\"858884c7\",\"chunk-274d7432\":\"b62c8ac2\",\"chunk-2d0ac54e\":\"82201c3f\",\"chunk-2d0c1b79\":\"f1b47e4f\",\"chunk-381ee4a2\":\"f0a9d116\",\"chunk-5ede0940\":\"016b2523\",\"chunk-618508b5\":\"043cd254\",\"chunk-7b1504ca\":\"be1b53fe\",\"chunk-a8175ed8\":\"41dd69af\",\"chunk-b510a8c0\":\"6cfde0c3\",\"chunk-d32d4e06\":\"d5fad580\",\"chunk-1089370b\":\"9ac8b914\",\"chunk-2d0bd599\":\"c0a2d4c2\",\"chunk-56dcb9d0\":\"033a6cd2\",\"chunk-7d1400a7\":\"0f9a0f6e\",\"chunk-7fd9cb45\":\"3bdba0c0\",\"chunk-01d17a0e\":\"571ecaaf\",\"chunk-2d0aada7\":\"5127b9e8\",\"chunk-2d0ac58f\":\"deb45b2a\",\"chunk-2d0e9574\":\"3b27a192\",\"chunk-2d21b89d\":\"12dafa4f\",\"chunk-9d4439d8\":\"ca2adaa4\",\"chunk-edcf31ba\":\"039be8f8\",\"chunk-c699fe68\":\"28d7c0c7\",\"chunk-e0d305e8\":\"23c9ae25\",\"chunk-2d0a3178\":\"41b57677\",\"chunk-026ad847\":\"7fa17290\",\"chunk-03432ab8\":\"208974ac\",\"chunk-073dec9d\":\"bf60e51c\",\"chunk-115f04f3\":\"212d1f63\",\"chunk-1c3403a0\":\"eae787e6\",\"chunk-1458f7ca\":\"5d02c89d\",\"chunk-1f19a094\":\"3e357fe9\",\"chunk-2ef690cf\":\"9bb00069\",\"chunk-328074a9\":\"bf09fcb6\",\"chunk-3784c248\":\"c33a741c\",\"chunk-3fa859e0\":\"81e7b918\",\"chunk-500eae0a\":\"b4050168\",\"chunk-54207ea2\":\"e3dc275c\",\"chunk-567d3afe\":\"01fde3d1\",\"chunk-586ea8cc\":\"5a24dcc5\",\"chunk-590689f8\":\"317d2765\",\"chunk-61217af1\":\"12c23200\",\"chunk-63a1dda8\":\"3dbd3554\",\"chunk-67249928\":\"9188ae7c\",\"chunk-7516dc23\":\"2460b983\",\"chunk-3e5929f2\":\"f49632f7\",\"chunk-07118b82\":\"bbcc6201\",\"chunk-0b037ccc\":\"4719fd05\",\"chunk-ad95734c\":\"48584e0b\",\"chunk-16afdc80\":\"b0934a62\",\"chunk-0f20de60\":\"c2b4c505\",\"chunk-117e04f2\":\"6ee24112\",\"chunk-465594b0\":\"0269914e\",\"chunk-7b8d1355\":\"10655993\",\"chunk-1913110b\":\"b2762898\",\"chunk-2ab01d25\":\"e151ae0f\",\"chunk-577f2bc8\":\"9072e392\",\"chunk-39525fbc\":\"556f320d\",\"chunk-7e95d539\":\"c4ee85ef\",\"chunk-d77fd36e\":\"73a62a6c\",\"chunk-2d3b8b73\":\"53e6e8ce\",\"chunk-0a222dc8\":\"e2797297\",\"chunk-1818ae66\":\"5d31ef19\",\"chunk-446e119e\":\"1735d8de\",\"chunk-77ec99fe\":\"60691553\",\"chunk-8fb4c8ae\":\"a1f2b703\",\"chunk-066b1d2c\":\"37476607\",\"chunk-7df2761e\":\"ab5534f7\",\"chunk-2a898e72\":\"5a8ebc92\",\"chunk-9b9c5588\":\"075dffaf\",\"chunk-88e6348c\":\"efa8b3be\",\"chunk-de915184\":\"1cbb5fdb\",\"chunk-25143513\":\"07de52a7\",\"chunk-5b70e188\":\"f68ae699\",\"chunk-4be47caa\":\"3f3a4245\",\"chunk-6be26281\":\"0e6c84b3\",\"chunk-2d0b32c5\":\"8e554bcd\",\"chunk-3e9a054d\":\"2abe4261\",\"chunk-2581e745\":\"da0d6e56\",\"chunk-a59039c6\":\"eb8cc524\",\"chunk-0d57b0e1\":\"77b92e83\",\"chunk-65ab0e82\":\"a7206e76\",\"chunk-6ce685e2\":\"215ef4d3\",\"chunk-de19f2c6\":\"27039771\",\"chunk-2d1a9a52\":\"fd4ec436\",\"chunk-45348902\":\"51fc7214\",\"chunk-eaf5cbc8\":\"4fd7810d\",\"chunk-0e873aae\":\"6d8c1dd3\",\"chunk-2aaf5128\":\"9a20fd16\",\"chunk-5e03e37c\":\"45cfd370\",\"chunk-b9c3e324\":\"eee8b4cf\",\"chunk-2787300e\":\"03a0e9fd\",\"chunk-2d21f89c\":\"4990cccd\",\"chunk-4ca07596\":\"884589c4\",\"chunk-3a572383\":\"4c5f5cbd\",\"chunk-6e1c78d4\":\"bdb65a54\",\"chunk-db2dc682\":\"94d8f924\",\"chunk-57466c4c\":\"e79ab728\",\"chunk-a997ba0a\":\"04e8d946\",\"chunk-1fcd9104\":\"711d14bd\",\"chunk-46cb692e\":\"9bfe381c\",\"chunk-4cc7b966\":\"92d7dc3c\",\"chunk-a452eb48\":\"ba6a4884\",\"chunk-12ef2c47\":\"c757f83d\",\"chunk-45d0104b\":\"30de0e0a\",\"chunk-38381273\":\"2acf3037\",\"chunk-6f37775a\":\"9bb9451c\",\"chunk-06904623\":\"9ec65fb8\",\"chunk-2d0cf2a8\":\"e2515aef\",\"chunk-4f24aead\":\"5eafbb78\",\"chunk-511b8034\":\"4b36e18c\",\"chunk-6395985b\":\"84b28c23\",\"chunk-7e9dafea\":\"1938736a\",\"chunk-84b72a78\":\"c54fe9e6\",\"chunk-9bda2eec\":\"314b8a80\",\"chunk-ab651540\":\"8639660f\",\"chunk-ce0aceb8\":\"62cdab0a\",\"chunk-fe2439a6\":\"84a54bda\",\"chunk-02f08cef\":\"3d200bdf\",\"chunk-2d0e4908\":\"7d59a2af\",\"chunk-2ee11b13\":\"b092c8b7\",\"chunk-a78b0200\":\"aab0e748\",\"chunk-175bacc7\":\"b36c197d\",\"chunk-2691ddd1\":\"181f069c\",\"chunk-2d0c4aa5\":\"2bc6b110\",\"chunk-2d216214\":\"f3e31d29\",\"chunk-2d216257\":\"69e90091\",\"chunk-2f9fd86d\":\"1ffe652f\",\"chunk-8a7c4c80\":\"6c820a4a\",\"chunk-2d0c553d\":\"dce88ff9\",\"chunk-2d0e491c\":\"fd0fd513\",\"chunk-786d0337\":\"8ddbc755\",\"chunk-2d216db0\":\"150dfe54\",\"chunk-3c0610d3\":\"f9f9043e\",\"chunk-3ff169e6\":\"9f850f36\",\"chunk-f45c3f42\":\"ad108fa1\",\"chunk-7b13d59e\":\"fb50346a\",\"chunk-943f1d4c\":\"47507d39\",\"chunk-5247536c\":\"cb390c99\",\"chunk-20e78176\":\"18d5d311\",\"chunk-47127a68\":\"35278a58\",\"chunk-927dd7ea\":\"a6640dd9\",\"chunk-0c969288\":\"93210466\",\"chunk-2d0e1823\":\"6789cee9\",\"chunk-7b7ef6d4\":\"4e35b4df\",\"chunk-c9f9a002\":\"cfe25917\",\"chunk-4c59b884\":\"1a65d156\",\"chunk-31137302\":\"d1441ae7\",\"chunk-2a9836b5\":\"a13b5c71\",\"chunk-6435db20\":\"a1ebf35a\",\"chunk-7c7ed617\":\"97dd3b71\",\"chunk-a17269b2\":\"63ab4c77\",\"chunk-451f0f32\":\"b7948ed8\",\"chunk-7e92635d\":\"1c25a63d\",\"chunk-f7133f82\":\"1eb2aa23\",\"chunk-6521aa8e\":\"187886b3\",\"chunk-78f9d3fc\":\"b7f392b3\",\"chunk-5227b500\":\"92932aa4\",\"chunk-10b2427c\":\"3267414a\",\"chunk-1f870c16\":\"3f0a42cf\",\"chunk-89bfa85e\":\"40cf17b4\",\"chunk-2d221da5\":\"9e0a76a5\",\"chunk-2d2131d5\":\"0953fde8\",\"chunk-d6e0f6d6\":\"c4b91eb3\",\"chunk-21da1d38\":\"5472de2f\",\"chunk-5f4a58b3\":\"5c1b738b\",\"chunk-6c96862f\":\"af99a120\",\"chunk-2d0cc5f6\":\"faae3234\",\"chunk-2d21f0fd\":\"dda6afbf\",\"chunk-7cec230d\":\"93596068\",\"chunk-cb1ca322\":\"0119af2b\",\"chunk-598c706e\":\"4bb997aa\",\"chunk-b3e69a66\":\"dfb060b4\",\"chunk-38a2c0d7\":\"5fecabcb\",\"chunk-41855ac2\":\"ab6988f0\",\"chunk-16323d68\":\"a62ef4ef\",\"chunk-2d0b3001\":\"2af5fcba\",\"chunk-3217fa38\":\"1152053c\",\"chunk-78f0cdff\":\"463ce158\",\"chunk-a0098f16\":\"1e1ca8a0\",\"chunk-3ad761dc\":\"000b2bf9\",\"chunk-4d1014e2\":\"b84d1427\",\"chunk-e99a07c8\":\"b919a23b\",\"chunk-f6ea2218\":\"9b5f3d09\",\"chunk-026c8b90\":\"a120545d\",\"chunk-38bbb2ca\":\"78521c0c\",\"chunk-402d3e5d\":\"b7b69102\",\"chunk-80601348\":\"6b3e933b\",\"chunk-c6625324\":\"5d468867\",\"chunk-d5a6f02a\":\"1f773688\",\"chunk-2d21d635\":\"3eefcd09\",\"chunk-3fc28478\":\"9af9e451\",\"chunk-0885064e\":\"c4a613ff\",\"chunk-08db7fff\":\"602a5b05\",\"chunk-0f2aa554\":\"e846503b\",\"chunk-6c25062c\":\"5ac9d0b3\",\"chunk-2d0c7cc8\":\"4929ea0a\",\"chunk-2d0d6f7d\":\"d523a91e\",\"chunk-16502fc9\":\"e6eb046c\",\"chunk-690fc7b4\":\"87ee9785\",\"chunk-29f94d75\":\"a9631d84\",\"chunk-306c2e66\":\"4bfc6afe\",\"chunk-6216f748\":\"3efd9cc1\",\"chunk-520f7c2b\":\"bedc49d0\",\"chunk-d009fc90\":\"833d727d\",\"chunk-24745f5d\":\"cf257ee0\",\"chunk-90827de4\":\"c6093395\",\"chunk-2d0a4438\":\"351149e1\",\"chunk-2d225646\":\"9276a350\",\"chunk-8a7f9d44\":\"ea065e29\",\"chunk-0214e4a3\":\"0a2e74e4\",\"chunk-087fe2f3\":\"19bcd1ec\",\"chunk-3bc9b868\":\"e99d8d6c\",\"chunk-4acb8b3a\":\"432bc965\",\"chunk-07d32537\":\"eb95a3bd\",\"chunk-3466e666\":\"d964116a\",\"chunk-3b8ea54a\":\"fca75606\",\"chunk-6716671e\":\"50395af3\",\"chunk-f1f64c06\":\"a8ac13ad\",\"chunk-9c39d692\":\"e1e1a55f\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-3d7c3364\":1,\"chunk-63ae647e\":1,\"chunk-b86f3980\":1,\"chunk-ba8feeda\":1,\"chunk-01d5b3cd\":1,\"chunk-314a2f3a\":1,\"chunk-43077d08\":1,\"chunk-54860d36\":1,\"chunk-23a69ac4\":1,\"chunk-1916b671\":1,\"chunk-0b821fda\":1,\"chunk-42a7635a\":1,\"chunk-6448b0ca\":1,\"chunk-78a71648\":1,\"chunk-7f675ece\":1,\"chunk-3f979d3d\":1,\"chunk-b774f9f8\":1,\"chunk-b174d53c\":1,\"chunk-3a54f445\":1,\"chunk-2e7d4e38\":1,\"chunk-60eb0781\":1,\"chunk-081a8b39\":1,\"chunk-12e48817\":1,\"chunk-53863600\":1,\"chunk-2ab4834e\":1,\"chunk-45628822\":1,\"chunk-24d127c2\":1,\"chunk-3020af77\":1,\"chunk-3e4897d8\":1,\"chunk-06ef5354\":1,\"chunk-adc9b3e4\":1,\"chunk-a798f246\":1,\"chunk-26cf347b\":1,\"chunk-589806b1\":1,\"chunk-3e3f81db\":1,\"chunk-516824de\":1,\"chunk-6c73730c\":1,\"chunk-73546286\":1,\"chunk-60451e9e\":1,\"chunk-026c4ab7\":1,\"chunk-4bdf2a9c\":1,\"chunk-6a1117e5\":1,\"chunk-0d645c3e\":1,\"chunk-15ad3f0e\":1,\"chunk-2490d27c\":1,\"chunk-2f24f1d7\":1,\"chunk-389098c5\":1,\"chunk-4abf2127\":1,\"chunk-57792f16\":1,\"chunk-73302cca\":1,\"chunk-7b5be366\":1,\"chunk-976ebe24\":1,\"chunk-7acff3ea\":1,\"chunk-b94d3322\":1,\"chunk-d16b703e\":1,\"chunk-e42ae23e\":1,\"chunk-fd8221d2\":1,\"chunk-50c22f88\":1,\"chunk-646bf606\":1,\"chunk-04a4fbe6\":1,\"chunk-0ddde60f\":1,\"chunk-133f2cb0\":1,\"chunk-15e594d4\":1,\"chunk-178a7a50\":1,\"chunk-6183c412\":1,\"chunk-4693f4db\":1,\"chunk-5bdd5131\":1,\"chunk-61bc71ce\":1,\"chunk-63c07a88\":1,\"chunk-7e0afd3a\":1,\"chunk-2b64d36e\":1,\"chunk-ab50f194\":1,\"chunk-2f77d9ba\":1,\"chunk-adb3d110\":1,\"chunk-03c815fc\":1,\"chunk-a86fd336\":1,\"chunk-044fdcc1\":1,\"chunk-190ddc2c\":1,\"chunk-218d126a\":1,\"chunk-57c7c38e\":1,\"chunk-7d4431db\":1,\"chunk-8c317486\":1,\"chunk-cd5cc2fe\":1,\"chunk-ebd6cb68\":1,\"chunk-21b27216\":1,\"chunk-7e6aa6f6\":1,\"chunk-34f90b33\":1,\"chunk-a912a4b8\":1,\"chunk-0af8e3eb\":1,\"chunk-1eae607c\":1,\"chunk-354b057c\":1,\"chunk-39e4e711\":1,\"chunk-3dad61b8\":1,\"chunk-61198fab\":1,\"chunk-dbccf4ba\":1,\"chunk-7772536f\":1,\"chunk-7f96540f\":1,\"chunk-4fbc7c12\":1,\"chunk-9c332e26\":1,\"chunk-a9e6edda\":1,\"chunk-eed8fa06\":1,\"chunk-f19d9144\":1,\"chunk-f7a3031c\":1,\"chunk-274d7432\":1,\"chunk-381ee4a2\":1,\"chunk-5ede0940\":1,\"chunk-618508b5\":1,\"chunk-7b1504ca\":1,\"chunk-a8175ed8\":1,\"chunk-1089370b\":1,\"chunk-56dcb9d0\":1,\"chunk-7d1400a7\":1,\"chunk-01d17a0e\":1,\"chunk-9d4439d8\":1,\"chunk-edcf31ba\":1,\"chunk-c699fe68\":1,\"chunk-026ad847\":1,\"chunk-03432ab8\":1,\"chunk-115f04f3\":1,\"chunk-1c3403a0\":1,\"chunk-1458f7ca\":1,\"chunk-1f19a094\":1,\"chunk-2ef690cf\":1,\"chunk-328074a9\":1,\"chunk-3fa859e0\":1,\"chunk-54207ea2\":1,\"chunk-586ea8cc\":1,\"chunk-63a1dda8\":1,\"chunk-67249928\":1,\"chunk-7516dc23\":1,\"chunk-3e5929f2\":1,\"chunk-0b037ccc\":1,\"chunk-ad95734c\":1,\"chunk-16afdc80\":1,\"chunk-0f20de60\":1,\"chunk-117e04f2\":1,\"chunk-7b8d1355\":1,\"chunk-1913110b\":1,\"chunk-2ab01d25\":1,\"chunk-577f2bc8\":1,\"chunk-39525fbc\":1,\"chunk-7e95d539\":1,\"chunk-d77fd36e\":1,\"chunk-2d3b8b73\":1,\"chunk-1818ae66\":1,\"chunk-446e119e\":1,\"chunk-77ec99fe\":1,\"chunk-8fb4c8ae\":1,\"chunk-066b1d2c\":1,\"chunk-7df2761e\":1,\"chunk-2a898e72\":1,\"chunk-9b9c5588\":1,\"chunk-88e6348c\":1,\"chunk-de915184\":1,\"chunk-25143513\":1,\"chunk-5b70e188\":1,\"chunk-4be47caa\":1,\"chunk-3e9a054d\":1,\"chunk-2581e745\":1,\"chunk-a59039c6\":1,\"chunk-0d57b0e1\":1,\"chunk-65ab0e82\":1,\"chunk-6ce685e2\":1,\"chunk-de19f2c6\":1,\"chunk-2d1a9a52\":1,\"chunk-45348902\":1,\"chunk-eaf5cbc8\":1,\"chunk-0e873aae\":1,\"chunk-2aaf5128\":1,\"chunk-5e03e37c\":1,\"chunk-b9c3e324\":1,\"chunk-2787300e\":1,\"chunk-4ca07596\":1,\"chunk-3a572383\":1,\"chunk-6e1c78d4\":1,\"chunk-db2dc682\":1,\"chunk-57466c4c\":1,\"chunk-a997ba0a\":1,\"chunk-1fcd9104\":1,\"chunk-46cb692e\":1,\"chunk-4cc7b966\":1,\"chunk-a452eb48\":1,\"chunk-12ef2c47\":1,\"chunk-45d0104b\":1,\"chunk-6f37775a\":1,\"chunk-06904623\":1,\"chunk-4f24aead\":1,\"chunk-511b8034\":1,\"chunk-84b72a78\":1,\"chunk-9bda2eec\":1,\"chunk-ab651540\":1,\"chunk-ce0aceb8\":1,\"chunk-fe2439a6\":1,\"chunk-02f08cef\":1,\"chunk-2ee11b13\":1,\"chunk-a78b0200\":1,\"chunk-2f9fd86d\":1,\"chunk-786d0337\":1,\"chunk-3c0610d3\":1,\"chunk-3ff169e6\":1,\"chunk-f45c3f42\":1,\"chunk-7b13d59e\":1,\"chunk-5247536c\":1,\"chunk-47127a68\":1,\"chunk-0c969288\":1,\"chunk-7b7ef6d4\":1,\"chunk-c9f9a002\":1,\"chunk-4c59b884\":1,\"chunk-31137302\":1,\"chunk-2a9836b5\":1,\"chunk-6435db20\":1,\"chunk-7c7ed617\":1,\"chunk-a17269b2\":1,\"chunk-451f0f32\":1,\"chunk-7e92635d\":1,\"chunk-6521aa8e\":1,\"chunk-78f9d3fc\":1,\"chunk-5227b500\":1,\"chunk-10b2427c\":1,\"chunk-1f870c16\":1,\"chunk-89bfa85e\":1,\"chunk-d6e0f6d6\":1,\"chunk-21da1d38\":1,\"chunk-5f4a58b3\":1,\"chunk-6c96862f\":1,\"chunk-7cec230d\":1,\"chunk-cb1ca322\":1,\"chunk-598c706e\":1,\"chunk-b3e69a66\":1,\"chunk-38a2c0d7\":1,\"chunk-41855ac2\":1,\"chunk-16323d68\":1,\"chunk-3217fa38\":1,\"chunk-78f0cdff\":1,\"chunk-a0098f16\":1,\"chunk-3ad761dc\":1,\"chunk-4d1014e2\":1,\"chunk-e99a07c8\":1,\"chunk-026c8b90\":1,\"chunk-402d3e5d\":1,\"chunk-80601348\":1,\"chunk-c6625324\":1,\"chunk-d5a6f02a\":1,\"chunk-3fc28478\":1,\"chunk-0885064e\":1,\"chunk-08db7fff\":1,\"chunk-0f2aa554\":1,\"chunk-690fc7b4\":1,\"chunk-29f94d75\":1,\"chunk-6216f748\":1,\"chunk-520f7c2b\":1,\"chunk-d009fc90\":1,\"chunk-24745f5d\":1,\"chunk-90827de4\":1,\"chunk-3bc9b868\":1,\"chunk-07d32537\":1,\"chunk-3b8ea54a\":1,\"chunk-f1f64c06\":1,\"chunk-9c39d692\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-10da3e10\":\"31d6cfe0\",\"chunk-21612e72\":\"31d6cfe0\",\"chunk-2a3692e6\":\"31d6cfe0\",\"chunk-2d0af8da\":\"31d6cfe0\",\"chunk-2d21e357\":\"31d6cfe0\",\"chunk-32fbc9dd\":\"31d6cfe0\",\"chunk-3d7c3364\":\"823b6d6d\",\"chunk-4d65a96f\":\"31d6cfe0\",\"chunk-4d86ec75\":\"31d6cfe0\",\"chunk-63ae647e\":\"f0222215\",\"chunk-6da54489\":\"31d6cfe0\",\"chunk-7119cbfc\":\"31d6cfe0\",\"chunk-a7e704da\":\"31d6cfe0\",\"chunk-b86f3980\":\"5e5f42f2\",\"chunk-ba8feeda\":\"26508e77\",\"chunk-01d5b3cd\":\"3f217134\",\"chunk-22f6dcf0\":\"31d6cfe0\",\"chunk-314a2f3a\":\"3c34c9ac\",\"chunk-43077d08\":\"1a88c80f\",\"chunk-e583e7ac\":\"31d6cfe0\",\"chunk-54860d36\":\"80726ac4\",\"chunk-23a69ac4\":\"c70a97fd\",\"chunk-1916b671\":\"f187ecb1\",\"chunk-0b821fda\":\"0673a5da\",\"chunk-2d214449\":\"31d6cfe0\",\"chunk-42a7635a\":\"7092870e\",\"chunk-6448b0ca\":\"18d2824b\",\"chunk-78a71648\":\"50b43b63\",\"chunk-7f675ece\":\"fd0c3efb\",\"chunk-3f979d3d\":\"1e4e65bb\",\"chunk-b774f9f8\":\"fb8678e4\",\"chunk-b174d53c\":\"1a88c80f\",\"chunk-69e22b56\":\"31d6cfe0\",\"chunk-3a54f445\":\"2de677d4\",\"chunk-2e7d4e38\":\"fae2608b\",\"chunk-60eb0781\":\"1e4e65bb\",\"chunk-081a8b39\":\"0673a5da\",\"chunk-2d237cc4\":\"31d6cfe0\",\"chunk-12e48817\":\"fb8678e4\",\"chunk-53863600\":\"1e4e65bb\",\"chunk-2ab4834e\":\"ffa2caea\",\"chunk-45628822\":\"823b6d6d\",\"chunk-24d127c2\":\"1ca3217e\",\"chunk-3020af77\":\"c8e2d21b\",\"chunk-3e4897d8\":\"823b6d6d\",\"chunk-06ef5354\":\"5be56bff\",\"chunk-19093dfa\":\"31d6cfe0\",\"chunk-adc9b3e4\":\"0454b365\",\"chunk-a798f246\":\"2119d7f4\",\"chunk-2d237c86\":\"31d6cfe0\",\"chunk-26cf347b\":\"c8e2d21b\",\"chunk-589806b1\":\"84ed8bcf\",\"chunk-529f1a4e\":\"31d6cfe0\",\"chunk-3e3f81db\":\"f0222215\",\"chunk-74476da0\":\"31d6cfe0\",\"chunk-516824de\":\"4dbe1429\",\"chunk-68dd498e\":\"31d6cfe0\",\"chunk-6c73730c\":\"fae2608b\",\"chunk-73546286\":\"1e4e65bb\",\"chunk-60451e9e\":\"1a88c80f\",\"chunk-026c4ab7\":\"4eb0deb2\",\"chunk-4bdf2a9c\":\"2c7585f9\",\"chunk-6a1117e5\":\"7f7935e9\",\"chunk-0d645c3e\":\"ac20dfe4\",\"chunk-15ad3f0e\":\"1404cbc0\",\"chunk-1911c446\":\"31d6cfe0\",\"chunk-23022c9c\":\"31d6cfe0\",\"chunk-242fb94c\":\"31d6cfe0\",\"chunk-2490d27c\":\"e9b89a0a\",\"chunk-2ae37302\":\"31d6cfe0\",\"chunk-2d0c49a6\":\"31d6cfe0\",\"chunk-2d0d79d9\":\"31d6cfe0\",\"chunk-2f24f1d7\":\"4fc3ce89\",\"chunk-389098c5\":\"b3e06822\",\"chunk-3cdace70\":\"31d6cfe0\",\"chunk-415b3132\":\"31d6cfe0\",\"chunk-48ee1212\":\"31d6cfe0\",\"chunk-4abf2127\":\"fedd3d63\",\"chunk-56ae0030\":\"31d6cfe0\",\"chunk-57792f16\":\"b3e06822\",\"chunk-5e15b4ad\":\"31d6cfe0\",\"chunk-6ff0f890\":\"31d6cfe0\",\"chunk-73302cca\":\"b8796c2d\",\"chunk-7b5be366\":\"ecf8f88c\",\"chunk-976ebe24\":\"8c9f4788\",\"chunk-a5fcc4fc\":\"31d6cfe0\",\"chunk-a84c630a\":\"31d6cfe0\",\"chunk-7acff3ea\":\"390bda9b\",\"chunk-b94d3322\":\"b3e06822\",\"chunk-bbc9d7b2\":\"31d6cfe0\",\"chunk-d16b703e\":\"59429aa8\",\"chunk-d6bc3056\":\"31d6cfe0\",\"chunk-e42ae23e\":\"df96a54d\",\"chunk-fd8221d2\":\"05ea77cb\",\"chunk-2d0d6410\":\"31d6cfe0\",\"chunk-50c22f88\":\"a6512449\",\"chunk-646bf606\":\"ffa2caea\",\"chunk-04a4fbe6\":\"1fccfe76\",\"chunk-0ddde60f\":\"1a31b591\",\"chunk-132996cb\":\"31d6cfe0\",\"chunk-133f2cb0\":\"473213ac\",\"chunk-15e594d4\":\"8a3db2f0\",\"chunk-165c2c7c\":\"31d6cfe0\",\"chunk-178a7a50\":\"ac20dfe4\",\"chunk-0ee0a043\":\"31d6cfe0\",\"chunk-6183c412\":\"aa9544af\",\"chunk-2d0d7634\":\"31d6cfe0\",\"chunk-2d2263f6\":\"31d6cfe0\",\"chunk-2fe1bf91\":\"31d6cfe0\",\"chunk-4693f4db\":\"6405c6b4\",\"chunk-5501c07c\":\"31d6cfe0\",\"chunk-550240b6\":\"31d6cfe0\",\"chunk-585a4fda\":\"31d6cfe0\",\"chunk-5bdd5131\":\"88af72a0\",\"chunk-61bc71ce\":\"1a31b591\",\"chunk-2d0c2307\":\"31d6cfe0\",\"chunk-63c07a88\":\"a946e694\",\"chunk-0b6cf1f9\":\"31d6cfe0\",\"chunk-7051c506\":\"31d6cfe0\",\"chunk-7e0afd3a\":\"1fd09894\",\"chunk-2b64d36e\":\"6387e773\",\"chunk-a0cf9ac2\":\"31d6cfe0\",\"chunk-ab50f194\":\"f0222215\",\"chunk-2f77d9ba\":\"ca24a838\",\"chunk-adb3d110\":\"ec150b9d\",\"chunk-03c815fc\":\"ad6f7c86\",\"chunk-a86fd336\":\"1ca3217e\",\"chunk-044fdcc1\":\"4c734317\",\"chunk-190ddc2c\":\"1791909d\",\"chunk-218d126a\":\"d2c6f3e5\",\"chunk-57c7c38e\":\"e9b89a0a\",\"chunk-7d4431db\":\"b8ff1fe2\",\"chunk-8c317486\":\"eaad2e36\",\"chunk-cd5cc2fe\":\"05ea77cb\",\"chunk-ebd6cb68\":\"eb1e79e1\",\"chunk-21b27216\":\"f0222215\",\"chunk-2d1c7648\":\"31d6cfe0\",\"chunk-7e6aa6f6\":\"b2728f2d\",\"chunk-34f90b33\":\"6405c6b4\",\"chunk-a912a4b8\":\"eb1e79e1\",\"chunk-0af8e3eb\":\"3290f8e7\",\"chunk-15a7b68c\":\"31d6cfe0\",\"chunk-0a5923fa\":\"31d6cfe0\",\"chunk-1bc655d2\":\"31d6cfe0\",\"chunk-1eae607c\":\"1404cbc0\",\"chunk-263eeecf\":\"31d6cfe0\",\"chunk-2d0b97c2\":\"31d6cfe0\",\"chunk-2d0be08c\":\"31d6cfe0\",\"chunk-2fe24d7f\":\"31d6cfe0\",\"chunk-354b057c\":\"4eb0deb2\",\"chunk-38ff58c1\":\"31d6cfe0\",\"chunk-39e4e711\":\"71c202de\",\"chunk-3dad61b8\":\"26499d03\",\"chunk-4011a07e\":\"31d6cfe0\",\"chunk-5503c36c\":\"31d6cfe0\",\"chunk-585bd290\":\"31d6cfe0\",\"chunk-588492a8\":\"31d6cfe0\",\"chunk-61198fab\":\"8a3db2f0\",\"chunk-2d0da5bd\":\"31d6cfe0\",\"chunk-dbccf4ba\":\"3c34c9ac\",\"chunk-6b81e720\":\"31d6cfe0\",\"chunk-6cf93164\":\"31d6cfe0\",\"chunk-7772536f\":\"4eb0deb2\",\"chunk-7f96540f\":\"8c841c42\",\"chunk-858f7766\":\"31d6cfe0\",\"chunk-8d66a710\":\"31d6cfe0\",\"chunk-8f8fe4bc\":\"31d6cfe0\",\"chunk-4fbc7c12\":\"e7b9cc66\",\"chunk-9c332e26\":\"f1d73f0a\",\"chunk-a9e6edda\":\"88459da9\",\"chunk-eed8fa06\":\"4eb0deb2\",\"chunk-f19d9144\":\"2e94379b\",\"chunk-f7a3031c\":\"4eb0deb2\",\"chunk-fc66719c\":\"31d6cfe0\",\"chunk-274d7432\":\"f72aaeda\",\"chunk-2d0ac54e\":\"31d6cfe0\",\"chunk-2d0c1b79\":\"31d6cfe0\",\"chunk-381ee4a2\":\"297d45b6\",\"chunk-5ede0940\":\"f4598581\",\"chunk-618508b5\":\"26499d03\",\"chunk-7b1504ca\":\"4eb0deb2\",\"chunk-a8175ed8\":\"7fb99506\",\"chunk-b510a8c0\":\"31d6cfe0\",\"chunk-d32d4e06\":\"31d6cfe0\",\"chunk-1089370b\":\"4eb0deb2\",\"chunk-2d0bd599\":\"31d6cfe0\",\"chunk-56dcb9d0\":\"0b847f51\",\"chunk-7d1400a7\":\"a723ad9b\",\"chunk-7fd9cb45\":\"31d6cfe0\",\"chunk-01d17a0e\":\"5c8fe9c4\",\"chunk-2d0aada7\":\"31d6cfe0\",\"chunk-2d0ac58f\":\"31d6cfe0\",\"chunk-2d0e9574\":\"31d6cfe0\",\"chunk-2d21b89d\":\"31d6cfe0\",\"chunk-9d4439d8\":\"21a2cd21\",\"chunk-edcf31ba\":\"7370050c\",\"chunk-c699fe68\":\"09be7130\",\"chunk-e0d305e8\":\"31d6cfe0\",\"chunk-2d0a3178\":\"31d6cfe0\",\"chunk-026ad847\":\"d5972bed\",\"chunk-03432ab8\":\"444ba1d0\",\"chunk-073dec9d\":\"31d6cfe0\",\"chunk-115f04f3\":\"a5894d39\",\"chunk-1c3403a0\":\"4eb0deb2\",\"chunk-1458f7ca\":\"4dbe1429\",\"chunk-1f19a094\":\"544c37da\",\"chunk-2ef690cf\":\"2e23fb9a\",\"chunk-328074a9\":\"6a41c664\",\"chunk-3784c248\":\"31d6cfe0\",\"chunk-3fa859e0\":\"a6512449\",\"chunk-500eae0a\":\"31d6cfe0\",\"chunk-54207ea2\":\"347aaa18\",\"chunk-567d3afe\":\"31d6cfe0\",\"chunk-586ea8cc\":\"1c9fcb54\",\"chunk-590689f8\":\"31d6cfe0\",\"chunk-61217af1\":\"31d6cfe0\",\"chunk-63a1dda8\":\"16034e60\",\"chunk-67249928\":\"1fccfe76\",\"chunk-7516dc23\":\"e317dd2c\",\"chunk-3e5929f2\":\"f187ecb1\",\"chunk-07118b82\":\"31d6cfe0\",\"chunk-0b037ccc\":\"1efff391\",\"chunk-ad95734c\":\"ac4ffba9\",\"chunk-16afdc80\":\"ed906312\",\"chunk-0f20de60\":\"6b6e4d89\",\"chunk-117e04f2\":\"9c142c90\",\"chunk-465594b0\":\"31d6cfe0\",\"chunk-7b8d1355\":\"90730eb9\",\"chunk-1913110b\":\"3d572af1\",\"chunk-2ab01d25\":\"16034e60\",\"chunk-577f2bc8\":\"444ba1d0\",\"chunk-39525fbc\":\"0ecaada7\",\"chunk-7e95d539\":\"3d572af1\",\"chunk-d77fd36e\":\"180de819\",\"chunk-2d3b8b73\":\"21fc5f4a\",\"chunk-0a222dc8\":\"31d6cfe0\",\"chunk-1818ae66\":\"ffa2caea\",\"chunk-446e119e\":\"2f305f72\",\"chunk-77ec99fe\":\"8d34903e\",\"chunk-8fb4c8ae\":\"69420533\",\"chunk-066b1d2c\":\"ccf7d00b\",\"chunk-7df2761e\":\"8ade61c3\",\"chunk-2a898e72\":\"1a31b591\",\"chunk-9b9c5588\":\"83b8818e\",\"chunk-88e6348c\":\"6a41c664\",\"chunk-de915184\":\"2e23fb9a\",\"chunk-25143513\":\"01fec43b\",\"chunk-5b70e188\":\"473213ac\",\"chunk-4be47caa\":\"d2c6f3e5\",\"chunk-6be26281\":\"31d6cfe0\",\"chunk-2d0b32c5\":\"31d6cfe0\",\"chunk-3e9a054d\":\"a5505c2b\",\"chunk-2581e745\":\"0dd500de\",\"chunk-a59039c6\":\"0f0328d1\",\"chunk-0d57b0e1\":\"76a811a3\",\"chunk-65ab0e82\":\"6387e773\",\"chunk-6ce685e2\":\"71c202de\",\"chunk-de19f2c6\":\"f0cabdb0\",\"chunk-2d1a9a52\":\"582a636e\",\"chunk-45348902\":\"1462deec\",\"chunk-eaf5cbc8\":\"2ea276a7\",\"chunk-0e873aae\":\"ebf8f90e\",\"chunk-2aaf5128\":\"eb1e79e1\",\"chunk-5e03e37c\":\"ac20dfe4\",\"chunk-b9c3e324\":\"b8796c2d\",\"chunk-2787300e\":\"4dbe1429\",\"chunk-2d21f89c\":\"31d6cfe0\",\"chunk-4ca07596\":\"4eb0deb2\",\"chunk-3a572383\":\"cf1b30b9\",\"chunk-6e1c78d4\":\"02f0ee43\",\"chunk-db2dc682\":\"e3af3913\",\"chunk-57466c4c\":\"eb5ce631\",\"chunk-a997ba0a\":\"80726ac4\",\"chunk-1fcd9104\":\"8bba159f\",\"chunk-46cb692e\":\"2cecc1fc\",\"chunk-4cc7b966\":\"9d113a5e\",\"chunk-a452eb48\":\"6d0a9920\",\"chunk-12ef2c47\":\"2c7585f9\",\"chunk-45d0104b\":\"573a88ef\",\"chunk-38381273\":\"31d6cfe0\",\"chunk-6f37775a\":\"eb1e79e1\",\"chunk-06904623\":\"2c7585f9\",\"chunk-2d0cf2a8\":\"31d6cfe0\",\"chunk-4f24aead\":\"fedd3d63\",\"chunk-511b8034\":\"5ea8ab7f\",\"chunk-6395985b\":\"31d6cfe0\",\"chunk-7e9dafea\":\"31d6cfe0\",\"chunk-84b72a78\":\"5ea8ab7f\",\"chunk-9bda2eec\":\"8ecb1cf7\",\"chunk-ab651540\":\"06d4299d\",\"chunk-ce0aceb8\":\"2c7585f9\",\"chunk-fe2439a6\":\"c10545a8\",\"chunk-02f08cef\":\"7f7935e9\",\"chunk-2d0e4908\":\"31d6cfe0\",\"chunk-2ee11b13\":\"f4598581\",\"chunk-a78b0200\":\"2c7585f9\",\"chunk-175bacc7\":\"31d6cfe0\",\"chunk-2691ddd1\":\"31d6cfe0\",\"chunk-2d0c4aa5\":\"31d6cfe0\",\"chunk-2d216214\":\"31d6cfe0\",\"chunk-2d216257\":\"31d6cfe0\",\"chunk-2f9fd86d\":\"06494053\",\"chunk-8a7c4c80\":\"31d6cfe0\",\"chunk-2d0c553d\":\"31d6cfe0\",\"chunk-2d0e491c\":\"31d6cfe0\",\"chunk-786d0337\":\"62b71fde\",\"chunk-2d216db0\":\"31d6cfe0\",\"chunk-3c0610d3\":\"3c34c9ac\",\"chunk-3ff169e6\":\"2c7585f9\",\"chunk-f45c3f42\":\"f4598581\",\"chunk-7b13d59e\":\"4eb0deb2\",\"chunk-943f1d4c\":\"31d6cfe0\",\"chunk-5247536c\":\"96076f8e\",\"chunk-20e78176\":\"31d6cfe0\",\"chunk-47127a68\":\"b3ba5640\",\"chunk-927dd7ea\":\"31d6cfe0\",\"chunk-0c969288\":\"9832498a\",\"chunk-2d0e1823\":\"31d6cfe0\",\"chunk-7b7ef6d4\":\"427b6e45\",\"chunk-c9f9a002\":\"1fd09894\",\"chunk-4c59b884\":\"26499d03\",\"chunk-31137302\":\"4dbe1429\",\"chunk-2a9836b5\":\"5d8ddffb\",\"chunk-6435db20\":\"8ecb1cf7\",\"chunk-7c7ed617\":\"8e91232f\",\"chunk-a17269b2\":\"7b7cadee\",\"chunk-451f0f32\":\"5c8076a7\",\"chunk-7e92635d\":\"df96a54d\",\"chunk-f7133f82\":\"31d6cfe0\",\"chunk-6521aa8e\":\"a7264a35\",\"chunk-78f9d3fc\":\"d29c3e32\",\"chunk-5227b500\":\"adc5339d\",\"chunk-10b2427c\":\"83e52acf\",\"chunk-1f870c16\":\"4eb0deb2\",\"chunk-89bfa85e\":\"b58d961f\",\"chunk-2d221da5\":\"31d6cfe0\",\"chunk-2d2131d5\":\"31d6cfe0\",\"chunk-d6e0f6d6\":\"96076f8e\",\"chunk-21da1d38\":\"a70c05cd\",\"chunk-5f4a58b3\":\"5afffa1c\",\"chunk-6c96862f\":\"2e23fb9a\",\"chunk-2d0cc5f6\":\"31d6cfe0\",\"chunk-2d21f0fd\":\"31d6cfe0\",\"chunk-7cec230d\":\"6b6e4d89\",\"chunk-cb1ca322\":\"26499d03\",\"chunk-598c706e\":\"0a794944\",\"chunk-b3e69a66\":\"142dec93\",\"chunk-38a2c0d7\":\"2de591db\",\"chunk-41855ac2\":\"2f305f72\",\"chunk-16323d68\":\"04c15630\",\"chunk-2d0b3001\":\"31d6cfe0\",\"chunk-3217fa38\":\"adde86e0\",\"chunk-78f0cdff\":\"be789360\",\"chunk-a0098f16\":\"1fccfe76\",\"chunk-3ad761dc\":\"4eb0deb2\",\"chunk-4d1014e2\":\"5ea8ab7f\",\"chunk-e99a07c8\":\"7f7935e9\",\"chunk-f6ea2218\":\"31d6cfe0\",\"chunk-026c8b90\":\"4eb0deb2\",\"chunk-38bbb2ca\":\"31d6cfe0\",\"chunk-402d3e5d\":\"8ecb1cf7\",\"chunk-80601348\":\"4eb0deb2\",\"chunk-c6625324\":\"f6869e56\",\"chunk-d5a6f02a\":\"b192aca8\",\"chunk-2d21d635\":\"31d6cfe0\",\"chunk-3fc28478\":\"40d2cebb\",\"chunk-0885064e\":\"4eb0deb2\",\"chunk-08db7fff\":\"e0e69357\",\"chunk-0f2aa554\":\"8ecb1cf7\",\"chunk-6c25062c\":\"31d6cfe0\",\"chunk-2d0c7cc8\":\"31d6cfe0\",\"chunk-2d0d6f7d\":\"31d6cfe0\",\"chunk-16502fc9\":\"31d6cfe0\",\"chunk-690fc7b4\":\"98c35b26\",\"chunk-29f94d75\":\"2c7585f9\",\"chunk-306c2e66\":\"31d6cfe0\",\"chunk-6216f748\":\"26499d03\",\"chunk-520f7c2b\":\"d82e027a\",\"chunk-d009fc90\":\"a88e9d28\",\"chunk-24745f5d\":\"0ea2a470\",\"chunk-90827de4\":\"20c16b55\",\"chunk-2d0a4438\":\"31d6cfe0\",\"chunk-2d225646\":\"31d6cfe0\",\"chunk-8a7f9d44\":\"31d6cfe0\",\"chunk-0214e4a3\":\"31d6cfe0\",\"chunk-087fe2f3\":\"31d6cfe0\",\"chunk-3bc9b868\":\"26499d03\",\"chunk-4acb8b3a\":\"31d6cfe0\",\"chunk-07d32537\":\"2c7585f9\",\"chunk-3466e666\":\"31d6cfe0\",\"chunk-3b8ea54a\":\"6fb02cfa\",\"chunk-6716671e\":\"31d6cfe0\",\"chunk-f1f64c06\":\"f64a5a45\",\"chunk-9c39d692\":\"d0824a79\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","// DRAWER\r\nconst SET_DRAWER_MINI = \"SET_DRAWER\";\r\n\r\n// RECORD MODE\r\nconst SET_RECORD_MODE = \"SET_RECORD_MODE\";\r\n\r\n// RECORD\r\nconst SET_RECORDS = \"SET_RECORDS\";\r\nconst APPEND_RECORDS = \"APPEND_RECORDS\";\r\nconst SET_RECORD = \"SET_RECORD\";\r\nconst UPDATE_RECORD_LIST_BY_ID = \" UPDATE_RECORD_LIST_BY_ID\"; //Update Drawer Record List\r\n\r\nconst SET_RECORD_NEW = \"SET_RECORD_NEW\";\r\nconst SET_RECORD_CREATED = \"SET_RECORD_CREATED\";\r\nconst SET_RECORD_EDIT = \"SET_RECORD_EDIT\";\r\nconst SET_RECORD_EDITED = \"SET_RECORD_EDITED\";\r\nconst SET_RECORD_DELETED = \"SET_RECORD_DELETED\";\r\nconst SET_RECORD_NEW_CATEGORY = \"SET_RECORD_NEW_CATEGORY\";\r\nconst SET_RECORD_NEW_AND_CATEGORY = \"SET_RECORD_NEW_AND_CATEGORY\";\r\nconst SET_RECORD_TEXT_FIELD_VALUE = \"SET_RECORD_TEXT_FIELD_VALUE\";\r\nconst SET_RECORD_LOOKUP_DATA = \"SET_RECORD_LOOKUP_DATA\";\r\nconst SET_MOVED_RECORD = \"SET_MOVED_RECORD\";\r\nconst SET_MOVED_RECORDS = \"SET_MOVED_RECORDS\";\r\nconst SET_LOCAL_UPLOADED_FILE = \"SET_LOCAL_UPLOADED_FILE\";\r\nconst SET_RECORD_DELETE_STATUS = \"SET_RECORD_DELETE_STATUS\";\r\n\r\n// RECORD UPDATE\r\nconst UPDATE_RECORD_STATUS = \"UPDATE_RECORD_STATUS\";\r\nconst UPDATE_RECORD_INFO = \"UPDATE_RECORD_INFO\";\r\n\r\n// RECORD ATTRIBUTES\r\nconst SET_RECORD_LOCK = \"SET_RECORD_LOCK\";\r\nconst SET_RECORD_READ_ONLY = \"SET_RECORD_READ_ONLY\";\r\nconst SET_RECORD_DRAFT = \"SET_RECORD_DRAFT\";\r\n\r\n// DOCUMENTS\r\nconst SET_DOCUMENTS = \"SET_DOCUMENTS\";\r\nconst SET_DOCUMENT = \"SET_DOCUMENT\";\r\nconst SET_DOCUMENT_CATEGORY = \"SET_DOCUMENT_CATEGORY\";\r\nconst SET_DOCUMENT_SEARCH_CATEGORY = \"SET_DOCUMENT_SEARCH_CATEGORY\";\r\nconst SET_DOCUMENT_CHILDREN = \"SET_DOCUMENT_CHILDREN\";\r\nconst UPDATE_DOCUMENT_LIST_BY_ID = \" UPDATE_DOCUMENT_LIST_BY_ID\"; //Update Documents List\r\n\r\n// RECORD FILE\r\nconst UPDATE_RECORD_FILE_VERSION = \"UPDATE_RECORD_FILE_VERSION\";\r\nconst SET_UPLOAD_FILE_PROGRESS = \"SET_UPLOAD_FILE_PROGRESS\";\r\n\r\n// FILE VERSION\r\nconst SET_FILE_VERSIONS = \"SET_FILE_VERSIONS\";\r\nconst SET_FILE_VERSION = \"SET_FILE_VERSION\";\r\n\r\n// COMPOUND DOCUMENT\r\nconst SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION =\r\n \"SET_COMPOUND_DOCUMENT_FILE_VERSION\";\r\n\r\nexport {\r\n SET_DRAWER_MINI,\r\n SET_RECORDS,\r\n SET_RECORD_MODE,\r\n SET_RECORD,\r\n UPDATE_RECORD_STATUS,\r\n UPDATE_RECORD_INFO,\r\n SET_RECORD_NEW,\r\n SET_RECORD_CREATED,\r\n SET_RECORD_EDIT,\r\n SET_RECORD_EDITED,\r\n SET_RECORD_DELETED,\r\n SET_RECORD_NEW_CATEGORY,\r\n SET_RECORD_NEW_AND_CATEGORY,\r\n SET_RECORD_TEXT_FIELD_VALUE,\r\n SET_RECORD_LOOKUP_DATA,\r\n SET_DOCUMENTS,\r\n SET_DOCUMENT,\r\n SET_DOCUMENT_CATEGORY,\r\n SET_DOCUMENT_SEARCH_CATEGORY,\r\n SET_DOCUMENT_CHILDREN,\r\n SET_RECORD_LOCK,\r\n SET_RECORD_READ_ONLY,\r\n SET_RECORD_DRAFT,\r\n UPDATE_RECORD_FILE_VERSION,\r\n SET_UPLOAD_FILE_PROGRESS,\r\n SET_FILE_VERSIONS,\r\n SET_FILE_VERSION,\r\n SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION,\r\n SET_MOVED_RECORD,\r\n SET_LOCAL_UPLOADED_FILE,\r\n APPEND_RECORDS,\r\n SET_RECORD_DELETE_STATUS,\r\n SET_MOVED_RECORDS,\r\n UPDATE_RECORD_LIST_BY_ID,\r\n UPDATE_DOCUMENT_LIST_BY_ID\r\n};\r\n","// utils\r\nimport {\r\n getLocalStorageItem,\r\n repoUserLocalStorageKey,\r\n setLocalStorageItem\r\n} from \"@/utils/localStorageUtility\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n/**\r\n * module Name\r\n * @type {string}\r\n */\r\nconst moduleName = moduleNames.Projects;\r\n\r\n/**\r\n * Local Storage Keys\r\n * @type {Readonly<{projectId: string}>}\r\n */\r\nconst localStorageKey = Object.freeze({\r\n projectId: `${moduleName}_projectId`\r\n});\r\n\r\n/**\r\n * Store Selected Module Item id (project id) to the local Storage\r\n * @param {Number|number}id\r\n */\r\nconst storeSelectedModuleItemId = id =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.projectId),\r\n id.toString()\r\n );\r\n\r\n/**\r\n * Get Stored Selected Module Item id (project id) from local Storage\r\n * @returns {Number|number}\r\n */\r\nconst getStoredSelectedModuleItemId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.projectId)\r\n );\r\n return id ? (isNaN(id) ? -1 : Number(id)) : -1;\r\n};\r\n\r\nexport { storeSelectedModuleItemId, getStoredSelectedModuleItemId };\r\n","/**\r\n * User's system Operations\r\n * @type {Readonly<{ChangePassword: string, FolderCreateAsUser: string, FieldDelete: string, BarcodeCoversheet: string, FieldRead: string, TemplateCreate: string, TemplateRead: string, FormRead: string, UserCreate: string, AccessDeletedRecord: string, AccessWFProjects: string, RunAgendaDesigner: string, FieldCreate: string, TemplateUpdate: string, UserRead: string, Logout: string, FormCreate: string, TemplateDelete: string, MotionActionCreate: string, MotionActionRead: string, MotionActionDelete: string, MotionActionUpdate: string, CategoryRead: string, CategoryUpdate: string, VoteActionUpdate: string, AccessClerkModule: string, AccessRollCall: string, VoteActionRead: string, Login: string, ChangePermission: string, CategoryDelete: string, VoteActionCreate: string, UserResetPassword: string, RunExportConfig: string, RunWFProjectEditor: string, AccessUserList: string, AccessAuditTrail: string, FormDelete: string, UserUpdate: string, FieldUpdate: string, RunImport: string, RunBatchScan: string, None: string, FormUpdate: string, UserDelete: string, CategoryCreate: string, AccessLegislatorWorkpad: string}>}\r\n */\r\nconst systemOperations = Object.freeze({\r\n none: \"None\",\r\n categoryRead: \"CategoryRead\",\r\n categoryCreate: \"CategoryCreate\",\r\n categoryUpdate: \"CategoryUpdate\",\r\n categoryDelete: \"CategoryDelete\",\r\n fieldRead: \"FieldRead\",\r\n fieldCreate: \"FieldCreate\",\r\n fieldUpdate: \"FieldUpdate\",\r\n fieldDelete: \"FieldDelete\",\r\n formRead: \"FormRead\",\r\n formCreate: \"FormCreate\",\r\n formUpdate: \"FormUpdate\",\r\n formDelete: \"FormDelete\",\r\n templateRead: \"TemplateRead\",\r\n templateCreate: \"TemplateCreate\",\r\n templateUpdate: \"TemplateUpdate\",\r\n templateDelete: \"TemplateDelete\",\r\n motionActionRead: \"MotionActionRead\",\r\n motionActionCreate: \"MotionActionCreate\",\r\n motionActionUpdate: \"MotionActionUpdate\",\r\n motionActionDelete: \"MotionActionDelete\",\r\n voteActionRead: \"VoteActionRead\",\r\n voteActionCreate: \"VoteActionCreate\",\r\n voteActionUpdate: \"VoteActionUpdate\",\r\n userRead: \"UserRead\",\r\n userCreate: \"UserCreate\",\r\n userUpdate: \"UserUpdate\",\r\n userDelete: \"UserDelete\",\r\n userResetPassword: \"UserResetPassword\",\r\n changePassword: \"ChangePassword\",\r\n changePermission: \"ChangePermission\",\r\n accessDeletedRecord: \"AccessDeletedRecord\",\r\n runImport: \"RunImport\",\r\n runBatchScan: \"RunBatchScan\",\r\n runExportConfig: \"RunExportConfig\",\r\n login: \"Login\",\r\n logout: \"Logout\",\r\n runAgendaDesigner: \"RunAgendaDesigner\",\r\n barcodeCoversheet: \"BarcodeCoversheet\",\r\n accessWFProjects: \"AccessWFProjects\",\r\n runWFProjectEditor: \"RunWFProjectEditor\",\r\n accessAuditTrail: \"AccessAuditTrail\",\r\n folderCreateAsUser: \"FolderCreateAsUser\",\r\n accessUserList: \"AccessUserList\",\r\n accessRollCall: \"AccessRollCall\",\r\n accessClerkModule: \"AccessClerkModule\",\r\n accessLegislatorWorkPad: \"AccessLegislatorWorkpad\"\r\n});\r\n\r\nexport { systemOperations };\r\n","import { toLowerCaseSafe } from \"@/utils\";\r\n\r\n/**\r\n * Determine whether a record operation is valid (can operation be performed under current circumstances)\r\n * @param {{id: number, name: string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {String|string} operation\r\n * @return {Boolean|boolean} true if record Operation can be performed under current circumstances\r\n */\r\nconst isValidRecordOperation = (record, operation) => {\r\n return findOperation(record?.operations, operation)?.valid ?? false;\r\n};\r\n\r\n/**\r\n * Find s record Operation\r\n * @param {{name: string, allowed: boolean, valid: boolean}[]} operations\r\n * @param {String|string} operation\r\n * @return {{name: string, allowed: boolean, valid: boolean}}\r\n */\r\nconst findOperation = (operations, operation) => {\r\n return operations?.find(\r\n op => toLowerCaseSafe(op.name) === toLowerCaseSafe(operation)\r\n );\r\n};\r\n\r\nexport { isValidRecordOperation, findOperation };\r\n","const INITIALIZE_STATES = \"INITIALIZE_STATES\";\r\nconst SET_APPLICATION = \"SET_APPLICATION\";\r\nconst SET_DRAWER = \"SET_DRAWER\";\r\nconst SET_DRAWER_RIGHT = \"SET_DRAWER_RIGHT\";\r\nconst SET_DRAWER_ENABLE_MINI_DRAWER = \"SET_DRAWER_ENABLE_MINI_DRAWER\";\r\nconst SET_USES_APP_TABS = \"SET_USES_APP_TABS\";\r\nconst SET_USES_SIDEBAR_IMAGE = \"SET_USES_SIDEBAR_IMAGE\";\r\nconst SET_DIALOG_TOOLBAR_STYLE = \"SET_DIALOG_TOOLBAR_STYLE\";\r\nconst SET_COMMAND_COLOR = \"SET_COMMAND_COLOR\";\r\nconst SET_COMMAND_BUTTONS_TEXT_STYLE = \"SET_COMMAND_BUTTONS_TEXT_STYLE\";\r\nconst SET_COMMAND_BUTTONS_OUTLINED = \"SET_COMMAND_BUTTONS_OUTLINED\";\r\nconst SET_COMMAND_BUTTONS_ROUNDED = \"SET_COMMAND_BUTTONS_ROUNDED\";\r\nconst SET_COMMAND_BUTTONS_ELEVATION = \"SET_COMMAND_BUTTONS_ELEVATION\";\r\nconst SET_TOOLBAR_DETAILS_COLOR = \"SET_TOOLBAR_DETAILS_COLOR\";\r\nconst SET_APP_BAR_COLLAPSE_ON_SCROLL = \"SET_APP_BAR_COLLAPSE_ON_SCROLL\";\r\nconst SET_RECORDS_FETCH_COUNT = \"SET_RECORDS_FETCH_COUNT\";\r\n\r\nexport {\r\n INITIALIZE_STATES,\r\n SET_APPLICATION,\r\n SET_DRAWER,\r\n SET_DRAWER_RIGHT,\r\n SET_DRAWER_ENABLE_MINI_DRAWER,\r\n SET_USES_APP_TABS,\r\n SET_USES_SIDEBAR_IMAGE,\r\n SET_DIALOG_TOOLBAR_STYLE,\r\n SET_COMMAND_COLOR,\r\n SET_COMMAND_BUTTONS_TEXT_STYLE,\r\n SET_COMMAND_BUTTONS_OUTLINED,\r\n SET_COMMAND_BUTTONS_ROUNDED,\r\n SET_COMMAND_BUTTONS_ELEVATION,\r\n SET_TOOLBAR_DETAILS_COLOR,\r\n SET_APP_BAR_COLLAPSE_ON_SCROLL,\r\n SET_RECORDS_FETCH_COUNT\r\n};\r\n","/**\r\n * Get indigo gradient\r\n * @type {string}\r\n */\r\nconst indigoGradient = `to top right, rgba(100,115,201,.7), rgba(25,32,72,.7)`;\r\n\r\nexport { indigoGradient };\r\n","// model\r\nimport {\r\n findRecordOperation,\r\n findRecordState,\r\n findRecordType,\r\n recordEventType,\r\n recordOperation,\r\n recordState,\r\n recordType,\r\n recordTypes\r\n} from \"@/model/record/recordModel\";\r\nimport {\r\n fieldType,\r\n findFieldType,\r\n maxMemoFieldLength\r\n} from \"@/model/field/fieldModel\";\r\nimport {\r\n isDocumentViewerSupportingFileExtension,\r\n isViewableInDocumentViewer\r\n} from \"@/model/viewer/viewerFileModel\";\r\n\r\nimport { extensionName } from \"@/model/record/fileModel\";\r\n\r\n// filters\r\nimport { toShortLocalString } from \"@/filters/dateFilter\";\r\n\r\n// utils\r\nimport { cloneDeep, deepCopyArray, toLowerCaseSafe } from \"@/utils\";\r\n\r\n// services\r\nimport {\r\n isAllowedAuthor,\r\n isDevelopment\r\n} from \"@/services/config/configService\";\r\n\r\n// design\r\nimport { iconCheckbox, iconCheckboxBlank } from \"@/design/icon/iconConst\";\r\n\r\n// store\r\nimport store from \"@/store/index\";\r\n\r\n// services/api\r\nimport { getRecordTextFieldValue } from \"@/services/api/apiContent\";\r\nimport {\r\n findOperation,\r\n isValidRecordOperation\r\n} from \"@/services/record/recordCommonService\";\r\n\r\n/**\r\n * Filter Files And Compound Documents\r\n * @param {{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}[]}[]} records\r\n * @param {{number}[]} includeFields\r\n * @return {{id:number, name:string, extension:string, recordTypeId:number, recordType:string, categoryId:number, creationDate:string, modificationDate:string, createdBy:string, owner:string, pages:number, version:number, versionDate:string, flags:number, hasImage:boolean}[]}\r\n */\r\nconst filterFilesAndDocuments = (records, includeFields = undefined) => {\r\n const docs = [];\r\n if (!Array.isArray(records)) {\r\n return docs;\r\n }\r\n\r\n records.forEach(el => {\r\n docs.push(createRecordInfo(el, includeFields));\r\n });\r\n\r\n return docs;\r\n};\r\n\r\n/**\r\n * get Search Fields\r\n * @param searchFields\r\n * @param {{number}[]} includeFields include Fields ids\r\n * @return {*[]}\r\n */\r\nconst getSearchFields = (searchFields, includeFields = undefined) => {\r\n const fields = [];\r\n\r\n if ((includeFields?.length ?? 0) === 0) {\r\n return fields;\r\n }\r\n\r\n includeFields.forEach(id => {\r\n const field = searchFields.find(sf => sf.id === id);\r\n\r\n if (field) {\r\n fields.push({\r\n id: field.id,\r\n name: field.name,\r\n value:\r\n field.fieldDataType === fieldType.DATE\r\n ? field.value\r\n ? toShortLocalString(field.value)\r\n : null\r\n : field.value\r\n });\r\n } else {\r\n fields.push({\r\n id: id,\r\n name: id.toString(),\r\n value: null\r\n });\r\n }\r\n });\r\n\r\n return fields;\r\n};\r\n\r\n/**\r\n * Get Record name, which includes file extension in the case that record is type of file\r\n * @param record\r\n * @param {Boolean} history\r\n * @return {string|string} full Record Name\r\n */\r\nconst fullRecordName = (record, history = false) => {\r\n const principal = store.getters[\"user/principal\"] ?? undefined;\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n const name = record?.name ?? \"\";\r\n\r\n if (type === recordType.ITEM) {\r\n if (record.stateId === recordState.submitted) {\r\n return `${record?.numbering} ${name}`;\r\n }\r\n }\r\n return type === recordType.FILE\r\n ? IsCheckedOutForDigitalSigningByPrinciple(record, principal) && !history\r\n ? `${name}.${record.checkOutExtension}`\r\n : `${name}.${record.extension}`\r\n : name;\r\n};\r\n\r\n/**\r\n * compute if file ancestor is Compound Document\r\n * @return {boolean}\r\n */\r\nconst isCompoundFile = record => {\r\n return (\r\n (record?.ancestor?.recordType?.id ?? recordType.RECORD) ===\r\n recordType.DOCUMENT\r\n );\r\n};\r\n\r\n/**\r\n * Compute if File Can be Uploaded Directly without creating Record first\r\n * @param record\r\n * @return {boolean}\r\n */\r\nconst isDirectUploadAllowed = record => {\r\n const recordTypeId = record?.recordTypeId ?? -1;\r\n return recordTypeId === recordType.FOLDER || recordTypeId === recordType.ITEM;\r\n};\r\n\r\n/**\r\n * full File Version Name\r\n * @param record\r\n * @return {string|*|string} full File Version name which includes a formatted file version\r\n */\r\nconst fullRecordVersionName = record => {\r\n const principal = store.getters[\"user/principal\"] ?? undefined;\r\n if (!record) return \"\";\r\n return record.recordTypeId === recordType.FILE\r\n ? IsCheckedOutForDigitalSigningByPrinciple(record, principal)\r\n ? `${record.name}.${record.checkOutExtension} (v.${record.version})`\r\n : `${record.name}.${record.extension} (v.${record.version})`\r\n : record?.name ?? \"\";\r\n};\r\n\r\n/**\r\n * full File Version Name for History\r\n * @param record\r\n * @return {string|*|string} full File Version name which includes a formatted file version\r\n */\r\nconst fullRecordHistoryVersionName = record => {\r\n if (!record) return \"\";\r\n return record.recordTypeId === recordType.FILE\r\n ? `${record.name}.${record.extension} (v.${record.version})`\r\n : record?.name ?? \"\";\r\n};\r\n\r\n/**\r\n * Is Checked Out For Digital Signing\r\n * @param record record-file-version\r\n * @return {boolean} true if record-file-version has been Checked Out For Digital Signing\r\n */\r\nconst IsCheckedOutForDigitalSigning = record => {\r\n return (record?.checkOutExtension ?? \"\").toLowerCase() === extensionName.pdf;\r\n};\r\n\r\n/**\r\n * Is Checked Out For Digital Signing By Owner (principle)\r\n * @param record record-file-version\r\n * @param principal principal-user\r\n * @return {boolean} true if record-file-version has been Checked Out For Digital Signing\r\n */\r\nconst IsCheckedOutForDigitalSigningByPrinciple = (record, principal) => {\r\n return (\r\n (record?.checkOutExtension ?? \"\").toLowerCase() === extensionName.pdf &&\r\n isStateOwner(record, principal)\r\n );\r\n};\r\n\r\n/**\r\n * full New File Version with extension Name\r\n * @param record\r\n * @param version\r\n * @param extension\r\n * @return {string|*|string} full New File Version Name which includes Checked In file version and extension\r\n */\r\nconst fullNewRecordVersionExtensionName = (record, version, extension) => {\r\n return (record?.recordTypeId ?? recordType.RECORD) === recordType.FILE\r\n ? `${record.name}.${extension} (v.${version})`\r\n : record?.name ?? \"\";\r\n};\r\n\r\n/**\r\n * Get Record Type Name\r\n * @param record\r\n * @return {string|string}\r\n */\r\nconst getRecordTypeName = record => {\r\n return (\r\n recordTypes.find(\r\n rt => rt.id === (record?.recordTypeId ?? recordType.RECORD)\r\n )?.name ?? recordTypes[recordType.RECORD].name\r\n );\r\n};\r\n\r\n/**\r\n * create Record File Version\r\n * @param version\r\n * @return {{id: number, name: string, parentId: number, categoryId: number, pageCount: number, stateId: number, state: string, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, isReadOnly: boolean, extension: string, flags: number, hasImage: boolean, recordTypeId: number, recordType: string, creationDate: string, modificationDate: string, version: number, versionDate: string, versionOwner: string, pages: number, owner: string, createdBy: string, isSingleFile: boolean, operations: *}}\r\n */\r\nconst createRecordFileVersion = version => {\r\n // Create Record Item Model\r\n const ri = createRecordInfo(version);\r\n\r\n // Append Record File Version Model\r\n ri.fileSize = version.fileSize;\r\n ri.canCheckOutForSigning = version.canCheckOutForSigning;\r\n ri.outFileType = version.outFileType;\r\n ri.comments = version.comments;\r\n\r\n return ri;\r\n};\r\n\r\n/**\r\n * Create File/Compound document Record Info\r\n * @param {{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}[]}} record\r\n * @param {{number}[]} includeFields include Field ids\r\n * @return {{extension: (string|string), checkOutExtension: (string|string), flags: (number|number), isDraft: (boolean|boolean), hasImage: (boolean|Boolean), isReadOnly: (boolean|boolean), operations: (*|*[]), isDeleted: (boolean|boolean), children: (number|number), isLocked: (boolean|boolean), searchFields: *[], id: (number|number), state: (string|string), owner: (string|string), isLink: (boolean|boolean), pageCount: (number|number), comments: (string|string), recordType: (string|string), ancestor: Object, stateId: (number|number), stateOwnerId: (number|number), creationDate: (string|string), version: (number|number), versionDate: (string|string), parentId: (number|number), modificationDate: (string|string), isComposite: (boolean|boolean), recordTypeId: (number|number), createdBy: (string|string), fileSize: (number|number), isSingleFile: boolean, name: (string|string), localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, categoryId: (number|number), versionOwner: (string|string)}}\r\n */\r\nconst createRecordInfo = (record, includeFields = undefined) => {\r\n return {\r\n id: record?.id ?? -1,\r\n name: record?.name ?? \"\",\r\n\r\n parentId: record?.parentId ?? -1,\r\n ancestor: record?.ancestor,\r\n\r\n extension: record?.extension ?? \"\",\r\n checkOutExtension: record?.checkOutExtension ?? \"\",\r\n\r\n recordTypeId: record?.recordTypeId ?? recordType.RECORD,\r\n recordType: record?.recordType ?? \"\",\r\n\r\n categoryId: record?.categoryId ?? -1,\r\n\r\n creationDate: record ? toShortLocalString(record.creationDate) : \"\",\r\n modificationDate: record ? toShortLocalString(record.modificationDate) : \"\",\r\n\r\n createdBy: record?.createdBy ?? \"\",\r\n pageCount: record?.pageCount ?? 0,\r\n\r\n children: record?.children ?? 0,\r\n\r\n version: record?.version ?? 0,\r\n versionDate: record?.versionDate ?? \"\",\r\n versionOwner: record?.versionOwner ?? \"\",\r\n fileSize: record?.fileSize ?? 0,\r\n comments: record?.comments ?? \"\",\r\n\r\n flags: record?.flags ?? 0,\r\n stateId: record?.stateId ?? 0,\r\n owner: record?.owner ?? \"\",\r\n state: record?.state ?? \"\",\r\n stateOwnerId: record?.stateOwnerId ?? -1,\r\n\r\n isComposite: record?.isComposite ?? false,\r\n isDeleted: record?.isDeleted ?? false,\r\n isDraft: record?.isDraft ?? false,\r\n isLink: record?.isLink ?? false,\r\n isLocked: record?.isLocked ?? false,\r\n isReadOnly: record?.isReadOnly ?? false,\r\n localFile: record?.localFile ?? null,\r\n\r\n operations: record?.operations ?? [],\r\n agendaItemOperations: record?.agendaItemOperations ?? [],\r\n meetingOperations: record?.meetingOperations ?? [],\r\n\r\n searchFields: getSearchFields(record?.searchFields ?? [], includeFields),\r\n hasImage: isViewableInDocumentViewer(record),\r\n isSingleFile:\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.FILE,\r\n\r\n numbering: record?.numbering ?? \"\",\r\n\r\n canUpdate: record?.canUpdate ?? false,\r\n canDelete: record?.canDelete ?? false,\r\n cannotUpdateReason: record?.cannotUpdateReason,\r\n cannotDeleteReason: record?.cannotDeleteReason\r\n };\r\n};\r\n\r\n/**\r\n * update Record File Version Info\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}}, 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}[]}} version\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}}, 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}[]}} newVersion\r\n */\r\nconst updateRecordFileVersionInfo = (version, newVersion) => {\r\n updateRecordInfo(version, newVersion);\r\n};\r\n\r\n/**\r\n * update Record Operations\r\n * @param record record to be updated using provided latest record data\r\n * @param latest latest record\r\n */\r\nconst updateRecordOperations = (record, latest) => {\r\n if ((record?.id ?? -100) !== (latest?.id ?? -1)) {\r\n return;\r\n }\r\n\r\n const operations = latest.operations ?? [];\r\n const itemOperations = latest.agendaItemOperations ?? [];\r\n const meetingOperations = latest.meetingOperations ?? [];\r\n\r\n updateOperations(record.operations, operations);\r\n updateOperations(record.agendaItemOperations, itemOperations);\r\n updateOperations(record.meetingOperations, meetingOperations);\r\n};\r\n\r\n/**\r\n * Update Operations\r\n * @param {{name: string, allowed: boolean, valid: boolean}[]} operations\r\n * @param {{name: string, allowed: boolean, valid: boolean}[]} newOperations\r\n */\r\nconst updateOperations = (operations, newOperations) => {\r\n operations?.forEach(operation => {\r\n const newOperation = newOperations?.find(\r\n el => toLowerCaseSafe(el.name) === toLowerCaseSafe(operation.name)\r\n );\r\n if (newOperation) {\r\n if (operation.allowed !== newOperation.allowed) {\r\n operation.allowed = newOperation.allowed;\r\n }\r\n if (operation.valid !== newOperation.valid) {\r\n operation.valid = newOperation.valid;\r\n }\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * update Record Info\r\n * @param {{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}[]}} record record info to be updated using provided latest record\r\n * @param {{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}[]}} latest latest record info\r\n */\r\nconst updateRecordInfo = (record, latest) => {\r\n try {\r\n if ((record?.id ?? -100) !== (latest?.id ?? -1)) {\r\n console.warn(\r\n `Record id mismatch. Couldn't updateRecordInfo() record:`,\r\n record\r\n );\r\n console.warn(`different updateRecordInfo() latest:`, latest);\r\n return;\r\n }\r\n\r\n const isLink = record?.isLink ?? false;\r\n\r\n record.name = latest.name;\r\n record.categoryId = latest.categoryId;\r\n\r\n record.parentId = isLink ? record.parentId : latest.parentId;\r\n record.ancestor = isLink ? record.ancestor : latest.ancestor;\r\n\r\n record.checkOutExtension = latest?.checkOutExtension ?? \"\";\r\n record.extension = latest.extension ?? \"\";\r\n\r\n record.categoryId = latest.categoryId ?? -1;\r\n record.recordTypeId = latest.recordTypeId ?? recordType.RECORD;\r\n record.recordType = latest.recordType ?? \"\";\r\n\r\n // record.creationDate = record ? toShortLocalString(record.creationDate) : \"\",\r\n record.modificationDate = latest.modificationDate;\r\n\r\n // record.createdBy: record?.createdBy ?? \"\",\r\n record.pageCount = latest.pageCount ?? 0;\r\n\r\n record.children = latest.children ?? 0;\r\n\r\n record.version = latest.version ?? 0;\r\n record.versionDate = latest.versionDate ?? \"\";\r\n record.versionOwner = latest.versionOwner ?? \"\";\r\n record.fileSize = latest.fileSize ?? 0;\r\n record.comments = latest.comments ?? \"\";\r\n\r\n record.flags = latest.flags ?? 0;\r\n record.stateId = latest.stateId ?? recordState.created;\r\n record.state = latest.state ?? findRecordState(recordState.created)?.name;\r\n record.stateDescription = latest.stateDescription ?? \"\";\r\n record.owner = latest.owner ?? \"\";\r\n record.stateOwnerId = latest.stateOwnerId ?? -1;\r\n\r\n record.isComposite = latest.isComposite ?? false;\r\n record.isDeleted = latest.isDeleted ?? false;\r\n record.isDraft = latest.isDraft ?? false;\r\n record.isLink = (isLink ? record.isLink : latest.isLink) ?? false;\r\n record.isLocked = latest.isLocked ?? false;\r\n record.isReadOnly = latest.isReadOnly ?? false;\r\n record.localFile = latest.localFile;\r\n\r\n record.canUpdate = latest.canUpdate;\r\n record.canDelete = latest.canDelete;\r\n record.cannotUpdateReason = latest.cannotUpdateReason;\r\n record.cannotDeleteReason = latest.cannotDeleteReason;\r\n\r\n updateRecordOperations(record, latest);\r\n } catch (e) {\r\n console.error(e.toString());\r\n }\r\n};\r\n\r\n/**\r\n * find a Record\r\n * @param {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, recordTypeId:number, stateId:number, state:string }[]} records\r\n * @param {Number|number} id\r\n * @return {*}\r\n */\r\nconst findRecord = (records, id) => {\r\n return records?.find(r => r.id === id);\r\n};\r\n\r\n/**\r\n * Determines whether record is Expandable\r\n * @param {{recordTypeId: Number|number}} record\r\n * @return {boolean} true if provided record is expandable\r\n */\r\nconst isRecordExpandable = record => {\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n const extension = record?.extension ?? extensionName.tif;\r\n\r\n return (\r\n type === recordType.FOLDER ||\r\n type === recordType.DOCUMENT ||\r\n type === recordType.MEETING ||\r\n type === recordType.ITEM ||\r\n type === recordType.SECTION ||\r\n (type === recordType.FILE && extension === extensionName.msg)\r\n );\r\n};\r\n\r\n/**\r\n * Can Insert/append an Image File to an existing file version\r\n * @param {{recordTypeId:number, extension:string}} record\r\n * @return {boolean}\r\n */\r\nconst canInsertImageFile = record => {\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n if (type !== recordType.FILE) {\r\n return false;\r\n }\r\n const ext = toLowerCaseSafe(record?.checkOutExtension);\r\n return ext === extensionName.tif || ext === extensionName.tiff;\r\n};\r\n\r\n/**\r\n * can Overwrite File Version\r\n * @param {{recordTypeId:number, extension:string}} record\r\n * @return {boolean}\r\n */\r\nconst canOverwriteFileVersion = record => {\r\n return (record?.recordTypeId ?? recordType.RECORD) === recordType.FILE;\r\n};\r\n\r\n/**\r\n * Determine whether current user (principal) is allowed to perform this operation\r\n * @param record\r\n * @param {String|string} operation\r\n * @return {Boolean|boolean} true if current user (principal) is allowed to perform specified record Operation\r\n */\r\nconst isAllowedOperation = (record, operation) => {\r\n return findOperation(record?.operations, operation)?.allowed ?? false;\r\n};\r\n\r\n/**\r\n * Determine whether a record operation is valid (can operation be performed under current circumstances)\r\n * @param {{id: number, name: string, operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {String|string} operation\r\n * @return {Boolean|boolean} true if record Operation can be performed under current circumstances\r\n */\r\nconst isValidOperation = (record, operation) => {\r\n return isValidRecordOperation(record, operation);\r\n};\r\n\r\n/**\r\n * set Text Loaded Field Value Flag\r\n * @param {{id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: any, textLoaded: boolean}} field\r\n * @return {boolean|boolean} if text is Loaded returns true, else returns false\r\n */\r\nconst setTextLoadedFieldValueFlag = field => {\r\n if (!field) return false;\r\n\r\n field.textLoaded =\r\n (field?.fieldDataType ?? -1) === fieldType.TEXT\r\n ? isTextLoaded(field?.value ?? \"\")\r\n : true;\r\n\r\n return field?.textLoaded ?? false;\r\n};\r\n\r\n/**\r\n * Indicate whether Text of a memo field is Loaded\r\n * @param {*|string} text\r\n * @return {boolean} if text is Loaded returns true, else returns false\r\n */\r\nconst isTextLoaded = text => (text?.length ?? 0) !== maxMemoFieldLength;\r\n\r\n/**\r\n * updatable Record Field Values\r\n * @param record\r\n * @return {{id:number, value:any}[]}\r\n */\r\nconst updatableRecordFieldValues = record => {\r\n const updatableFields = [];\r\n const fieldValues = record?.fieldValues ?? [];\r\n\r\n fieldValues.forEach(fv => {\r\n const canUpdate =\r\n !isPersistentField(fv.id) ||\r\n !isSystemField(fv.id) ||\r\n (fv.fieldDataType === fieldType.TEXT ? fv?.textLoaded ?? false : true);\r\n\r\n if (canUpdate) {\r\n updatableFields.push({ id: fv.id, value: fv.value });\r\n }\r\n });\r\n\r\n return updatableFields;\r\n};\r\n\r\n/**\r\n * create Record Category Filed Value\r\n * @param {{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}[], lookup: {databaseLookup:boolean, enforce:boolean, items: string[]}, requiredForAutoFiling: boolean}} field Category field\r\n * @param {number} sequence field form sequence\r\n * @param {value:any} value field value\r\n * @return {{id:number, name: string, value: any, fieldDataType:number, fieldDataTypeName: string, value:any, sequence:number, textLoaded: boolean }} returns FiledValue\r\n */\r\nconst createRecordCategoryFiledValue = (\r\n field,\r\n sequence = 0,\r\n value = undefined\r\n) => {\r\n const fieldValue = {\r\n id: field.id,\r\n name: field?.label ?? field.name ?? \"Field ?\",\r\n fieldDataType: field.fieldDataType,\r\n fieldDataTypeName:\r\n field?.fieldDataTypeName ??\r\n findFieldType(field.fieldDataType)?.name ??\r\n \"\",\r\n value: value,\r\n sequence: sequence,\r\n textLoaded: false\r\n };\r\n\r\n setTextLoadedFieldValueFlag(fieldValue);\r\n\r\n return fieldValue;\r\n};\r\n\r\nconst createRecordFlyingFiledValue = (field, sequence, value = undefined) => {\r\n const fieldValue = {\r\n id: field.id,\r\n name: field.name ?? \"Field ?\",\r\n fieldDataType: field.fieldDataType,\r\n fieldDataTypeName:\r\n field?.fieldDataTypeName ??\r\n findFieldType(field.fieldDataType)?.name ??\r\n \"\",\r\n value: value,\r\n sequence: sequence,\r\n textLoaded: false\r\n };\r\n\r\n setTextLoadedFieldValueFlag(fieldValue);\r\n\r\n return fieldValue;\r\n};\r\n\r\n/**\r\n * ensure Valid Record Filed Values\r\n * @param record record\r\n * @param category Record's category\r\n * @return record updated record\r\n */\r\nconst ensureValidRecordFiledValues = (record, category) => {\r\n if (!record) {\r\n return;\r\n }\r\n\r\n if (!record.fieldValues) {\r\n record.fieldValues = [];\r\n }\r\n\r\n // Record field Values\r\n const fieldValues = record.fieldValues;\r\n\r\n // set Memo-Text Loaded Field Value Flag\r\n fieldValues.forEach(fv => {\r\n setTextLoadedFieldValueFlag(fv);\r\n });\r\n\r\n // 1. Process Record Category Form Fields\r\n let sequence = 0;\r\n (category?.fields ?? []).forEach(cf => {\r\n sequence = sequence + 1;\r\n const rfv = fieldValues.find(rfv => (rfv?.id ?? -1) === (cf?.id ?? -10));\r\n if (rfv) {\r\n // Apply Category Form Fields sequence,\r\n // since a record does not have applied Category Form Fields sequence\r\n rfv.sequence = sequence;\r\n } else {\r\n // Create and add an empty (undefined) record field value, because of record form field bindings\r\n record.fieldValues.push(\r\n createRecordCategoryFiledValue(cf, sequence, undefined)\r\n );\r\n }\r\n });\r\n\r\n // 2. Flying (record's fields which does not belong to record category's form) Fields\r\n // Note: record's flying fields are sorted by sequence (web api does it as well)\r\n (record?.flyingFields ?? []).forEach(rff => {\r\n sequence = sequence + 1;\r\n let rfv = fieldValues?.find(rfv => (rfv?.id ?? -1) === (rff?.id ?? -100));\r\n if (rfv) {\r\n // Apply Record Form Fields sequence,\r\n rfv.sequence = sequence;\r\n } else {\r\n const field = findField(rff?.id ?? -1);\r\n if (field) {\r\n // Create and add an empty (undefined) record flying field value\r\n record.fieldValues.push(\r\n createRecordFlyingFiledValue(field, sequence, undefined)\r\n );\r\n } else {\r\n console.warn(\r\n `Not found or not permitted Field by flying field Id:`,\r\n field?.id ?? -1\r\n );\r\n }\r\n }\r\n });\r\n\r\n return record;\r\n};\r\n\r\n/**\r\n * Find User Field\r\n * @param {number} id\r\n * @return {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean}|undefined } returns User Field\r\n */\r\nconst findField = id => {\r\n return store?.getters[\"user/findField\"](id);\r\n};\r\n\r\n/**\r\n * is Questys' Persistent Field\r\n * @param {number} id Field Id\r\n * @return {boolean}\r\n */\r\nconst isPersistentField = id => {\r\n return store?.getters[\"user/isPersistentField\"](id) ?? false;\r\n};\r\n\r\n/**\r\n * is Questys' System Field\r\n * @param {number} id Field id\r\n * @return {boolean}\r\n */\r\nconst isSystemField = id => {\r\n return store?.getters[\"user/isSystemField\"](id) ?? false;\r\n};\r\n\r\n/**\r\n * get Record Category Field Values\r\n * @param category\r\n * @return {{id:number, name: string, value: any, fieldDataType:number, fieldDataTypeName: string, value:any, sequence:number, textLoaded: boolean }[]}\r\n */\r\nconst getRecordCategoryFieldValues = category => {\r\n const fieldValues = [];\r\n\r\n let sequence = 0;\r\n\r\n (category?.fields ?? []).forEach(cf => {\r\n sequence = sequence + 1;\r\n //console.log(`getRecordCategoryFieldValues() cf:`, cf);\r\n fieldValues.push(\r\n createRecordCategoryFiledValue(cf, sequence, cf?.defaultValue)\r\n );\r\n });\r\n\r\n return fieldValues;\r\n};\r\n\r\n/**\r\n * new Record\r\n * @param {number} recordTypeId\r\n * @param {number} parentId\r\n * @param category\r\n * @param principal\r\n * @return {{owner: (string|string|*), extension: string, recordType: (string|undefined), stateId: number, fieldValues: *[], creationDate: undefined, version: number, versionDate: undefined, parentId, flyingFields: *[], recordTypeId: (number|number), createdBy: string, name: string, id: undefined, state: string, categoryId: (*|number), versionOwner: string}}\r\n */\r\nconst newRecord = (recordTypeId, parentId, category, principal) => {\r\n const rt = findRecordType(recordTypeId);\r\n if (!rt) {\r\n throw `Not provided valid Record Type id: ${recordTypeId}`;\r\n }\r\n\r\n const newRecordType =\r\n findRecordType(recordTypeId) ?? findRecordType(recordType.RECORD);\r\n const fieldValues = getRecordCategoryFieldValues(category);\r\n\r\n return {\r\n id: undefined,\r\n name: \"\",\r\n parentId: parentId,\r\n recordTypeId: newRecordType?.id ?? recordType.RECORD,\r\n recordType: newRecordType.name ?? undefined,\r\n categoryId: category?.id ?? -1,\r\n stateId: recordState.new,\r\n state: findRecordState(recordState.new)?.name,\r\n owner: principal?.actorName ?? \"\",\r\n createdBy: \"\",\r\n creationDate: undefined,\r\n extension: \"\",\r\n version: 0,\r\n versionDate: undefined,\r\n versionOwner: \"\",\r\n fieldValues: fieldValues,\r\n flyingFields: []\r\n };\r\n};\r\n\r\n/**\r\n * edit Record\r\n * @param record\r\n * @return {*}\r\n */\r\nconst editRecord = record => {\r\n return cloneDeep(record);\r\n};\r\n\r\n/**\r\n * Construct a new Duplicate Record\r\n * @param record\r\n * @param category\r\n * @param {number} recordTypeId\r\n * @param principal\r\n * @return {*}\r\n */\r\nasync function duplicateRecord(record, category, recordTypeId, principal) {\r\n if (!record) {\r\n throw `Not provided record to be duplicated`;\r\n }\r\n if (!category) {\r\n throw `Not provided Record Category`;\r\n }\r\n\r\n const rt = findRecordType(recordTypeId);\r\n if (!rt) {\r\n throw `Not provided valid Record Type id: ${recordTypeId}`;\r\n }\r\n const parentId = record.parentId;\r\n const recordNew = newRecord(recordTypeId, parentId, category, principal);\r\n\r\n // copy record name\r\n recordNew.name = record.name;\r\n\r\n // copy record field values\r\n for (const fieldValue of recordNew.fieldValues ?? []) {\r\n try {\r\n fieldValue.value = await copyRecordFieldValue(\r\n record.id,\r\n record.fieldValues,\r\n fieldValue.id\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n fieldValue.textLoaded = true;\r\n }\r\n\r\n // Copy flying Fields\r\n let sequence = 0;\r\n if (!recordNew.flyingFields) {\r\n recordNew.flyingFields = [];\r\n }\r\n for (const flyingField of record.flyingFields ?? []) {\r\n const field = findField(flyingField.id);\r\n if (field) {\r\n if (!recordNew.fieldValues.find(v => v.id === field.id)) {\r\n // copy Record Field Value\r\n let fieldValue = undefined;\r\n try {\r\n fieldValue = await copyRecordFieldValue(\r\n record.id,\r\n record.fieldValues,\r\n field.id\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n // Add record flying Field value\r\n const sequence = recordNew.fieldValues.length + 1;\r\n\r\n recordNew.fieldValues.push(\r\n createRecordFlyingFiledValue(field, sequence, fieldValue)\r\n );\r\n }\r\n\r\n if (!recordNew.flyingFields.find(ff => ff.id === field.id)) {\r\n sequence = sequence + 1;\r\n recordNew.flyingFields.push({\r\n id: field.id,\r\n sequence: sequence\r\n });\r\n }\r\n } else {\r\n console.warn(`Couldn't find field by flying Field id: ${flyingField.id}`);\r\n }\r\n }\r\n\r\n return recordNew;\r\n}\r\n\r\n/**\r\n * copy Agenda Template Record\r\n * @param atRecord\r\n * @param record\r\n */\r\nconst copyAgendaTemplateRecord = (atRecord, record) => {\r\n const method = `Copy Agenda Template Record`;\r\n\r\n if (!atRecord) {\r\n throw `Couldn't ${method}. Agenda Template Record not provided`;\r\n }\r\n if (!record) {\r\n throw `Couldn't ${method}. Record not provided`;\r\n }\r\n\r\n // Ensure the same record name\r\n record.name = atRecord?.name;\r\n\r\n // Ensure the same category\r\n if (record.categoryId !== atRecord.categoryId) {\r\n record.categoryId = atRecord.categoryId;\r\n }\r\n\r\n // Copy Agenda Template Record's field Values\r\n for (const fieldValue of atRecord.fieldValues ?? []) {\r\n const fv = record.fieldValues.find(v => v.id === fieldValue.id);\r\n if (fv) {\r\n fv.value = fieldValue.value;\r\n }\r\n }\r\n\r\n // Copy Agenda Template Record's flying Fields\r\n let sequence = 0;\r\n for (const flyingField of atRecord.flyingFields ?? []) {\r\n const field = findField(flyingField.id);\r\n if (field) {\r\n if (!record.fieldValues.find(fv => fv.id === flyingField.id)) {\r\n // Add flying Field value\r\n record.fieldValues.push({\r\n id: field.id,\r\n name: field.name,\r\n fieldDataType: field.fieldDataType,\r\n fieldDataTypeName: field.fieldDataTypeName,\r\n operations: field.operations,\r\n value: atRecord.fieldValues.find(fv => fv.id === flyingField.id)\r\n ?.value\r\n });\r\n }\r\n // Add flying Field\r\n if (!record.flyingFields.find(ff => ff.id === field.id)) {\r\n sequence = sequence + 1;\r\n record.flyingFields.push({\r\n id: field.id,\r\n sequence: sequence\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Copy Record Field Value\r\n * @param {number} recordId Record Id\r\n * @param fieldValues Record field values\r\n * @param {number} fieldId record Field Id\r\n * @param {boolean} includePersistentField include Persistent Field value\r\n * @return {Promise}\r\n */\r\nasync function copyRecordFieldValue(\r\n recordId,\r\n fieldValues,\r\n fieldId,\r\n includePersistentField = false\r\n) {\r\n // Is user's permitted field\r\n const field = findField(fieldId);\r\n console.log(`copyRecordFieldValue() recordId: ${recordId}; field:`, field);\r\n if (!field) {\r\n return undefined;\r\n }\r\n\r\n // Make sure whether a field is Persistent. Do not copy a value of Persistent field\r\n if (!includePersistentField) {\r\n if (isPersistentField(field.id)) {\r\n return undefined;\r\n }\r\n }\r\n\r\n // try to find record's field\r\n const rfv = fieldValues?.find(rfv => rfv.id === field.id);\r\n if (!rfv) {\r\n return undefined;\r\n }\r\n\r\n // make sure is memo-text field\r\n if (rfv.fieldDataType !== fieldType.TEXT) {\r\n return rfv.value;\r\n }\r\n\r\n // since this is a memo-text field, make sure whether text has already been loaded\r\n if (rfv.textLoaded) {\r\n return rfv.value;\r\n }\r\n\r\n // if Persistent Field, no need to load memo-text,\r\n // since it cannot be edited,\r\n // but it always can be loaded by user\r\n if (isPersistentField(field.id)) {\r\n return rfv.value;\r\n }\r\n\r\n if (recordId < 0) {\r\n return rfv.value;\r\n }\r\n\r\n // load memo-text field value of provided record and its field\r\n return (await getRecordTextFieldValue(recordId, rfv.id))?.data;\r\n}\r\n\r\n/**\r\n * change Record Category\r\n * @param record current record\r\n * @param categoryOld Old record category\r\n * @param categoryNew new record category\r\n */\r\nasync function changeRecordCategory(record, categoryOld, categoryNew) {\r\n const oldFieldValues = (deepCopyArray(record?.fieldValues ?? []) ?? []).sort(\r\n (a, b) => (a?.sequence ?? 0) - (b?.sequence ?? 0)\r\n );\r\n console.log(`changeRecordCategory() record:`, record);\r\n console.log(`categoryOld:`, categoryOld);\r\n console.log(`categoryNew:`, categoryNew);\r\n\r\n const oldFlyingFields = deepCopyArray(record?.flyingFields ?? []) ?? [];\r\n\r\n // reset record fields\r\n record.categoryId = categoryNew?.id ?? -1;\r\n record.fieldValues = [];\r\n record.fields = [];\r\n record.flyingFields = [];\r\n\r\n // include Persistent Field if editing record\r\n const recordId = record?.id ?? -1;\r\n const includePersistentField = recordId >= 0;\r\n\r\n // 1. Category Form's Fields\r\n let sequence = 0;\r\n\r\n for (const categoryField of categoryNew?.fields ?? []) {\r\n sequence = sequence + 1;\r\n let recordField = oldFieldValues?.find(ofv => ofv.id === categoryField.id);\r\n let fieldValue = undefined;\r\n if (recordField) {\r\n try {\r\n fieldValue = await copyRecordFieldValue(\r\n recordId,\r\n oldFieldValues,\r\n recordField.id,\r\n includePersistentField\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n } else {\r\n fieldValue = categoryField.defaultValue;\r\n }\r\n record.fieldValues.push(\r\n createRecordCategoryFiledValue(categoryField, sequence, fieldValue)\r\n );\r\n }\r\n\r\n // 2. Record's Flying Fields\r\n let sequenceFlyingFields = 0;\r\n\r\n // 2.1. Old category form's field values, where field value != undefined\r\n for (const ofv of oldFieldValues ?? []) {\r\n if (!record.fieldValues.find(rfv => rfv.id === ofv.id)) {\r\n const ocf = categoryOld?.fields?.find(ocf => ocf.id === ofv.id);\r\n if (ocf) {\r\n // copy old Record Field Value\r\n let fieldValue = undefined;\r\n try {\r\n fieldValue = await copyRecordFieldValue(\r\n recordId,\r\n oldFieldValues,\r\n ofv.id,\r\n includePersistentField\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n // Include Old category form's field values\r\n // only if field value != undefined\r\n if (fieldValue) {\r\n sequence = sequence + 1;\r\n\r\n // create and add Record Flying Filed Value\r\n record.fieldValues.push(\r\n createRecordCategoryFiledValue(ocf, sequence, fieldValue)\r\n );\r\n\r\n sequenceFlyingFields = sequenceFlyingFields + 1;\r\n record.flyingFields.push({\r\n id: ofv.id,\r\n sequence: sequenceFlyingFields\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n // 2.2. Old category flying field values, where flying field value != undefined\r\n for (const off of oldFlyingFields ?? []) {\r\n if (!record.fieldValues.find(rfv => rfv.id === off.id)) {\r\n const field = findField(off.id);\r\n if (field) {\r\n sequence = sequence + 1;\r\n\r\n // copy old Record flying Field Value\r\n let fieldValue = undefined;\r\n try {\r\n fieldValue = await copyRecordFieldValue(\r\n record?.id ?? -1,\r\n oldFieldValues,\r\n field.id,\r\n includePersistentField\r\n );\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n // create and add Record Flying Filed Value\r\n record.fieldValues.push(\r\n createRecordFlyingFiledValue(field, sequence, fieldValue)\r\n );\r\n\r\n sequenceFlyingFields = sequenceFlyingFields + 1;\r\n record.flyingFields.push({\r\n id: field.id,\r\n sequence: sequenceFlyingFields\r\n });\r\n } else {\r\n console.warn(\r\n `Not found/not permitted Record's form Field by old Flying Field Id:`,\r\n off.id\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * find Record Field Value\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, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {number} fieldId Filed id\r\n * @return {*}\r\n */\r\nconst findRecordFieldValue = (record, fieldId) =>\r\n record?.fieldValues?.find(el => (el?.id ?? -1) === fieldId);\r\n\r\n/**\r\n * get Database LookupInput Mappings\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, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[]}} record\r\n * @param {{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}[]}} category\r\n * @return {{id:number, value:any}[]} return Database LookupInput Mappings\r\n */\r\nconst getInputMappings = (record, category) => {\r\n const inputMappings = [];\r\n const mappings = category?.formLookup?.inputMappings ?? [];\r\n mappings.forEach(mp => {\r\n const fv = findRecordFieldValue(record, mp.id ?? -1);\r\n if (fv != null) {\r\n inputMappings.push({ id: fv.id, value: fv.value });\r\n }\r\n });\r\n return inputMappings;\r\n};\r\n\r\n/**\r\n * determines whether provided record can be previewed\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, 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}[]}} record @return {boolean|*|boolean|boolean}\r\n */\r\n\r\n/**\r\n * determines whether provided record can be previewed\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, 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}[]}} record @return {boolean|*|boolean|boolean}\r\n * @return {boolean} true if provided record can be previewed\r\n */\r\nconst canPreview = record => {\r\n // add more business logic here when/if needed ...\r\n switch (record?.recordTypeId ?? -1) {\r\n case recordType.FILE: {\r\n return true;\r\n }\r\n case recordType.RECORD: {\r\n return record?.localFile?.hasFile ?? false;\r\n }\r\n case recordType.DOCUMENT: {\r\n // TODO: not supported yet:\r\n //return (record?.children ?? 0) > 0 || (record?.localFile?.hasFile ?? false);\r\n // Only preview view/edit files of compound document\r\n return (record?.children ?? 0) > 0;\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * find Local File First Or Default Extension\r\n * @param record\r\n * @return {String|string} Local File First Or Default Extension\r\n */\r\nconst localFileFirstOrDefaultExtension = record => {\r\n const extensions = record?.localFile?.extension?.extensions;\r\n return (extensions?.length ?? 0) > 0\r\n ? toLowerCaseSafe(extensions[0] ?? \"\")\r\n : undefined;\r\n};\r\n\r\n/**\r\n * Determines whether local File of provided record exists\r\n * @param record\r\n * @return {Boolean|boolean} true if local File of provided record exists\r\n */\r\nconst localFileExists = record => record?.localFile?.hasFile ?? false;\r\n\r\n/**\r\n * determines whether provided record can be previewed using Document Viewer\r\n * @param record\r\n * @param principal\r\n * @return {boolean|Boolean} true if record can be previewed using Document Viewer\r\n */\r\nconst canPreviewInDocumentViewer = (record, principal) => {\r\n // Tiff, Jpeg, image file types will be displayed in Document Viewer,\r\n // rest will be displayed as pdf document in Document preview\r\n let ext = undefined;\r\n\r\n switch (record?.recordTypeId ?? -1) {\r\n case recordType.RECORD: {\r\n if (localFileExists(record)) {\r\n ext = localFileFirstOrDefaultExtension(record);\r\n }\r\n break;\r\n }\r\n case recordType.FILE: {\r\n ext = localFileExists(record)\r\n ? toLowerCaseSafe(localFileFirstOrDefaultExtension(record))\r\n : toLowerCaseSafe(record?.extension ?? \"\");\r\n\r\n if (localFileExists(record)) {\r\n ext = toLowerCaseSafe(localFileFirstOrDefaultExtension(record));\r\n } else {\r\n ext =\r\n record.stateId === recordState.checkedOut &&\r\n isStateOwner(record, principal) &&\r\n record?.checkOutExtension?.length\r\n ? toLowerCaseSafe(record?.checkOutExtension ?? record?.extension)\r\n : toLowerCaseSafe(record?.extension ?? \"\");\r\n }\r\n\r\n // TODO: Check out for PDF document signing\r\n // check for: record?.checkOutExtension\r\n // stateId, stateOwnerId\r\n break;\r\n }\r\n }\r\n return ext === extensionName.pdf\r\n ? false\r\n : ext\r\n ? isDocumentViewerSupportingFileExtension(ext)\r\n : false;\r\n};\r\n\r\n/**\r\n * determines preview Record Version\r\n * @param {{id:number, name:string, categoryId:number, version: 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, 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}[]}} record @return {boolean|*|boolean|boolean}\r\n * @return {number} preview Record Version\r\n */\r\nconst previewRecordVersion = record => {\r\n switch (record?.recordTypeId ?? -1) {\r\n case recordType.FILE: {\r\n return record?.localFile?.hasFile &&\r\n record.stateId !== recordState.checkedOut\r\n ? 0\r\n : record?.version ?? -1;\r\n }\r\n case recordType.RECORD: {\r\n return record?.version ?? -1;\r\n }\r\n default: {\r\n return -1;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * determines edit Record Version\r\n * @param {{id:number, name:string, categoryId:number, version: 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, 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}[]}} record @return {boolean|*|boolean|boolean}\r\n * @return {number} edit Record Version\r\n */\r\nconst editRecordVersion = record => {\r\n switch (record?.recordTypeId ?? -1) {\r\n case recordType.FILE: {\r\n return (record?.localFile?.hasFile &&\r\n record.stateId !== recordState.checkedOut) ||\r\n record?.stateId === recordState.checkedIn\r\n ? 0\r\n : record?.version ?? -1;\r\n }\r\n case recordType.RECORD: {\r\n return record?.version ?? -1;\r\n }\r\n case recordType.DOCUMENT: {\r\n return record?.version ?? -1;\r\n }\r\n default: {\r\n return -1;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Determines whether Command of a Record Operation 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}\r\n */\r\nconst visibleRecordCommandOperation = (record, operation) => {\r\n return isSupportedRecordOperation(record, operation)\r\n ? isAllowedOperation(record, operation)\r\n : false;\r\n};\r\n\r\n/**\r\n * Determines whether Command of a Record Operation 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}\r\n */\r\nconst enableRecordCommandOperation = (record, operation) => {\r\n return (\r\n visibleRecordCommandOperation(record, operation) &&\r\n isValidOperation(record, operation)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether provided record operation is supported\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @param {string} operation record Operation\r\n * @return {boolean|Boolean}\r\n */\r\nconst isSupportedRecordOperation = (record, operation) => {\r\n const op = findRecordOperation(operation);\r\n if (!op) return false;\r\n\r\n switch (op.name) {\r\n case recordOperation.CheckIn: {\r\n return supportCheckIn(record);\r\n }\r\n case recordOperation.CheckOut: {\r\n return supportCheckOut(record);\r\n }\r\n case recordOperation.CheckOutForSign: {\r\n return supportCheckOutForSign(record); // supportCheckOutForSign(record);\r\n }\r\n case recordOperation.Release: {\r\n return supportRelease(record);\r\n }\r\n case recordOperation.Lock: {\r\n return supportLock(record);\r\n }\r\n case recordOperation.Unlock: {\r\n return supportLock(record);\r\n }\r\n case recordOperation.SetDraft: {\r\n return supportSetDraft(record);\r\n }\r\n case recordOperation.SetReadOnly: {\r\n return supportSetReadOnly(record);\r\n }\r\n case recordOperation.Print: {\r\n return supportPrint(record);\r\n }\r\n case recordOperation.Download: {\r\n return supportDownload(record);\r\n }\r\n case recordOperation.Email: {\r\n return supportEmail(record);\r\n }\r\n case recordOperation.Reindex: {\r\n return supportReindex(record);\r\n }\r\n case recordOperation.Update: {\r\n return supportEdit(record);\r\n }\r\n case recordOperation.Delete: {\r\n return supportDelete(record);\r\n }\r\n case recordOperation.Purge: {\r\n return supportPurge(record);\r\n }\r\n case recordOperation.DigitalSigning: {\r\n return supportDigitalSigning(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 Check In\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean|Boolean} true if specified record supports Check In\r\n */\r\nconst supportCheckIn = record => {\r\n const type = record?.recordTypeId ?? recordType.FOLDER;\r\n return (\r\n isAllowedAuthor() &&\r\n (type === recordType.FILE || type === recordType.RECORD)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Check Out\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean|Boolean} true if specified record supports Check Out\r\n */\r\nconst supportCheckOut = record =>\r\n isAllowedAuthor() &&\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.FILE;\r\n\r\nconst supportCheckOutForSign = record => {\r\n //\r\n // support in Development env only\r\n //\r\n if (!isDevelopment) return false;\r\n\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n return isAllowedAuthor() && type === recordType.FILE;\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Release\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean|Boolean} true if specified record supports Release\r\n */\r\nconst supportRelease = record => {\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n return isAllowedAuthor() && type === recordType.FILE;\r\n};\r\n\r\n/**\r\n * Determines whether the specified record supports edit (update)\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @return {boolean|Boolean} true if specified record supports edit (update)\r\n */\r\nconst supportEdit = record => {\r\n return (\r\n isAllowedAuthor() &&\r\n (record?.stateId ?? recordState.deleted !== recordState.deleted)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Lock/Un-Lock\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @return {boolean|Boolean} true if specified record supports Lock/Un-Lock\r\n */\r\nconst supportLock = record => {\r\n return (\r\n isAllowedAuthor() &&\r\n (record?.stateId ?? recordState.deleted !== recordState.deleted)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Set Draft\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @return {boolean|Boolean} true if specified record supports Set Draft\r\n */\r\nconst supportSetDraft = record => {\r\n return (\r\n isAllowedAuthor() &&\r\n (record?.stateId ?? recordState.deleted !== recordState.deleted)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Set Read Only\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @return {boolean|Boolean} true if specified record supports Set Read Only\r\n */\r\nconst supportSetReadOnly = record => {\r\n return (\r\n isAllowedAuthor() &&\r\n (record?.stateId ?? recordState.deleted !== recordState.deleted)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Delete\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @return {boolean|Boolean} true if specified record supports Delete\r\n */\r\nconst supportDelete = record => {\r\n return (\r\n isAllowedAuthor() &&\r\n (record?.stateId ?? recordState.deleted !== recordState.deleted)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Purge\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @return {boolean|Boolean} true if specified record supports Purge\r\n */\r\nconst supportPurge = record => {\r\n return (\r\n isAllowedAuthor() &&\r\n (record?.stateId ?? recordState.deleted === recordState.deleted)\r\n );\r\n};\r\n\r\n/**\r\n * Determines whether specified record supports Digital Signing\r\n * @param {{id:number, name:string, recordTypeId:number, stateId: number}} record\r\n * @return {boolean|Boolean} true if specified record supports Digital Signing\r\n */\r\nconst supportDigitalSigning = record => {\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n return isAllowedAuthor() && type === recordType.FILE;\r\n};\r\n\r\n/**\r\n * Determines whether the specified record is printable\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean|Boolean} true if specified record is printable\r\n */\r\nconst supportPrint = record => {\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n return type === recordType.FILE || type === recordType.DOCUMENT;\r\n};\r\n\r\n/**\r\n * Determines whether the specified record is downloadable\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record is downloadable\r\n */\r\nconst supportDownload = record => {\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n return type === recordType.FILE || type === recordType.DOCUMENT;\r\n};\r\n\r\n/**\r\n * Determines whether specified record is e-mail-able\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record is e-mail-able\r\n */\r\nconst supportEmail = record =>\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.FILE;\r\n\r\n/**\r\n * Determines whether specified record supports Re-index action\r\n * @param {{id:number, name:string, recordTypeId:number}} record\r\n * @return {boolean} true if specified record supports Re-index action\r\n */\r\nconst supportReindex = record => {\r\n const type = record?.recordTypeId ?? recordType.RECORD;\r\n return (\r\n isAllowedAuthor() &&\r\n (type === recordType.FILE || type === recordType.DOCUMENT)\r\n );\r\n};\r\n\r\n/**\r\n * is principal State Owner of specified record\r\n * @param {{id: number, name: string, stateOwnerId: number}} record\r\n * @param {{actorId: number, actorName: string}} principal\r\n * @return {boolean} true if principal is State Owner of specified record\r\n */\r\nconst isStateOwner = (record, principal) => {\r\n // note: WebApi 1.9.11 just added record.stateOwnerId\r\n return (record?.stateOwnerId ?? -1) === (principal?.actorId ?? -10);\r\n};\r\n\r\n/**\r\n * Determine whether provided record has been checked out by provided principal\r\n * @param record\r\n * @param {{actorId: number, actorName: string}} principal\r\n * @return {boolean} true if provided record has been checked out by provided principal\r\n */\r\nconst isCheckedOutByPrincipal = (record, principal) =>\r\n (record?.stateId ?? -1) === recordState.checkedOut &&\r\n isStateOwner(record, principal);\r\n\r\n/**\r\n * record Operation Icon name\r\n * @param {{id: number, name: string, isReadOnly: boolean, isDraft: boolean}} record\r\n * @param {string} operation record Operation name\r\n * @return {string|undefined}\r\n */\r\nconst recordOperationIcon = (record, operation) => {\r\n const op = findRecordOperation(operation);\r\n if (!op) return undefined;\r\n\r\n switch (op.name) {\r\n case recordOperation.SetReadOnly: {\r\n return record?.isReadOnly ?? false ? iconCheckbox : iconCheckboxBlank;\r\n }\r\n case recordOperation.SetDraft: {\r\n return record?.isDraft ?? false ? iconCheckbox : iconCheckboxBlank;\r\n }\r\n default: {\r\n return op?.icon ?? undefined;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * determines whether specified Record Operation is considered to be danger\r\n * @param {string} operation Record Operation name\r\n * @return {boolean} true if specified Record Operation is considered to be danger\r\n */\r\nconst isRecordOperationDanger = operation =>\r\n operation === recordOperation.Delete || operation === recordOperation.Purge;\r\n\r\n/**\r\n * record Operation Label\r\n * @param {String|string} operation Record Operation name\r\n * @return {string}\r\n */\r\nconst recordOperationLabel = operation =>\r\n findRecordOperation(operation)?.label ?? \"?\";\r\n\r\n/**\r\n * record Operation Tooltip\r\n * @param {String|string} operation Record Operation name\r\n * @return {string}\r\n */\r\nconst recordOperationTooltip = operation =>\r\n findRecordOperation(operation)?.tooltip ?? \"?\";\r\n\r\n/**\r\n * returns the extension of the user selected file\r\n * @param {File} file\r\n * @return {String}\r\n */\r\nconst getImportedFileExtension = file =>\r\n file\r\n ? file.name.substring(file.name.lastIndexOf(\".\") + 1, file.name.length)\r\n : \"\";\r\n\r\n/**\r\n * determines whether specified Record Ancestor is Meeting\r\n * @param record Record\r\n * @return {boolean}\r\n */\r\nconst isAncestorMeeting = record =>\r\n (record?.ancestor?.recordType.id ?? recordType.RECORD) === recordType.MEETING;\r\n\r\n/**\r\n * determines whether specified Record is Compound Document\r\n * @param record\r\n * @return {boolean} true if specified Record is Compound Document\r\n */\r\nconst isCompoundDocument = record =>\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.DOCUMENT;\r\n\r\n/**\r\n * determines whether record is Document Assembly Event\r\n * @param record\r\n * @return {boolean} true if specified Record is Document Assembly\r\n */\r\nconst isDocumentAssemblyEvent = record => {\r\n const recordEventModel = record?.recordEventModel;\r\n return (\r\n (recordEventModel?.recordEventType ?? recordEventType.NONE) ===\r\n recordEventType.DOCUMENT_ASSEMBLY ||\r\n recordEventModel?.recordAncestorEventType ===\r\n recordEventType.DOCUMENT_ASSEMBLY\r\n );\r\n};\r\n\r\n/**\r\n * Verify if Provided Record is Backup Material\r\n * @param record\r\n * @return {*|boolean}\r\n */\r\nconst isBackupMaterial = record => {\r\n return (record?.ancestor?.recordType?.id ?? -1) === recordType.ITEM;\r\n};\r\n\r\nexport {\r\n filterFilesAndDocuments,\r\n fullRecordName,\r\n getRecordTypeName,\r\n updateOperations,\r\n findRecord,\r\n isRecordExpandable,\r\n updateRecordFileVersionInfo,\r\n canInsertImageFile,\r\n canOverwriteFileVersion,\r\n isAllowedOperation,\r\n isValidOperation,\r\n createRecordFileVersion,\r\n newRecord,\r\n editRecord,\r\n duplicateRecord,\r\n updateRecordInfo,\r\n ensureValidRecordFiledValues,\r\n changeRecordCategory,\r\n updatableRecordFieldValues,\r\n isPersistentField,\r\n isSystemField,\r\n createRecordCategoryFiledValue,\r\n createRecordFlyingFiledValue,\r\n getInputMappings,\r\n findRecordFieldValue,\r\n createRecordInfo,\r\n canPreview,\r\n previewRecordVersion,\r\n editRecordVersion,\r\n fullRecordVersionName,\r\n supportPrint,\r\n supportDownload,\r\n supportEmail,\r\n supportReindex,\r\n isStateOwner,\r\n copyAgendaTemplateRecord,\r\n updateRecordOperations,\r\n isCompoundFile,\r\n fullNewRecordVersionExtensionName,\r\n isDirectUploadAllowed,\r\n isSupportedRecordOperation,\r\n visibleRecordCommandOperation,\r\n enableRecordCommandOperation,\r\n recordOperationIcon,\r\n recordOperationLabel,\r\n isRecordOperationDanger,\r\n getImportedFileExtension,\r\n canPreviewInDocumentViewer,\r\n localFileFirstOrDefaultExtension,\r\n localFileExists,\r\n isAncestorMeeting,\r\n isCheckedOutByPrincipal,\r\n isCompoundDocument,\r\n IsCheckedOutForDigitalSigning,\r\n IsCheckedOutForDigitalSigningByPrinciple,\r\n fullRecordHistoryVersionName,\r\n isDocumentAssemblyEvent,\r\n recordOperationTooltip,\r\n isBackupMaterial\r\n};\r\n","// utils\r\nimport {\r\n getLocalStorageItem,\r\n setLocalStorageItem,\r\n repoUserLocalStorageKey\r\n} from \"@/utils/localStorageUtility\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n/**\r\n * module Name\r\n * @type {string}\r\n */\r\nconst moduleName = moduleNames.Category;\r\n\r\n/**\r\n * Local Storage Keys\r\n * @type {Readonly<{categoryId: string}>}\r\n */\r\nconst localStorageKey = Object.freeze({\r\n categoryId: `${moduleName}_categoryId`\r\n});\r\n\r\n/**\r\n * Store Selected Module Item id (categoryId) to the local Storage\r\n * @param {number} id Module Item id\r\n */\r\nconst storeSelectedModuleItemId = id =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.categoryId),\r\n id.toString()\r\n );\r\n\r\n/**\r\n * Get Stored Selected Module Item id (categoryId) from local Storage\r\n * @returns {Number|number}\r\n */\r\nconst getStoredSelectedModuleItemId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.categoryId)\r\n );\r\n return id ? (isNaN(id) ? -1 : Number(id)) : -1;\r\n};\r\n\r\nexport { storeSelectedModuleItemId, getStoredSelectedModuleItemId };\r\n","/**\r\n * Public Access settings Names/fields\r\n * @type {Readonly<{searcher: string, buttons: string, sideBar: string, appBar: string, contact: string, company: string, modules: string}>}\r\n */\r\nconst settingNames = Object.freeze({\r\n searcher: \"searcher\",\r\n company: \"company\",\r\n contact: \"contact\",\r\n appBar: \"appBar\",\r\n sideBar: \"sideBar\",\r\n buttons: \"buttons\",\r\n modules: \"modules\"\r\n});\r\n\r\n/**\r\n * searcher Settings\r\n * @type {Readonly<{code: string, name: string, repository: string}>}\r\n */\r\nconst searcherSettings = Object.freeze({\r\n name: \"name\",\r\n code: \"code\",\r\n repository: \"repository\"\r\n});\r\n\r\n/**\r\n * app-bar settings\r\n * @type {Readonly<{prominent: string, color: string, shrinkOnScroll: string, gradient: string, fadeImgOnScroll: string, useTabs: string, logo: string, logoSize: string, title: string, collapseOnScroll: string, backgroundImageUrl: string}>}\r\n */\r\nconst appBarSettings = Object.freeze({\r\n title: \"title\",\r\n logo: \"logo\",\r\n logoSize: \"logoSize\",\r\n backgroundImageUrl: \"backgroundImageUrl\",\r\n color: \"color\",\r\n gradient: \"gradient\",\r\n prominent: \"prominent\",\r\n useTabs: \"useTabs\",\r\n collapseOnScroll: \"collapseOnScroll\",\r\n fadeImgOnScroll: \"fadeImgOnScroll\",\r\n shrinkOnScroll: \"shrinkOnScroll\"\r\n});\r\n\r\n/**\r\n * sideBar Settings\r\n * @type {Readonly<{enableMiniSidebar: string, backgroundImageUrl: string}>}\r\n */\r\nconst sideBarSettings = Object.freeze({\r\n backgroundImageUrl: \"backgroundImageUrl\",\r\n enableMiniSidebar: \"enableMiniSidebar\"\r\n});\r\n\r\n/**\r\n * button Settings\r\n * @type {Readonly<{color: string, elevation: string, outlined: string, rounded: string, textStyle: string}>}\r\n */\r\nconst buttonSettings = Object.freeze({\r\n color: \"color\",\r\n textStyle: \"textStyle\",\r\n outlined: \"outlined\",\r\n rounded: \"rounded\",\r\n elevation: \"elevation\"\r\n});\r\n\r\n/**\r\n * company Settings\r\n * @type {Readonly<{disclaimers: string, name: string, logo: string, description: string, linkedIn: string}>}\r\n */\r\nconst companySettings = Object.freeze({\r\n name: \"name\",\r\n logo: \"logo\",\r\n description: \"description\",\r\n disclaimers: \"disclaimers\",\r\n linkedIn: \"linkedIn\",\r\n address: \"address\"\r\n});\r\n\r\n/**\r\n * address Settings\r\n * @type {Readonly<{zip: string, country: string, city: string, addressLine1: string, addressLine2: string, state: string}>}\r\n */\r\nconst addressSettings = Object.freeze({\r\n addressLine1: \"addressLine1\",\r\n addressLine2: \"addressLine2\",\r\n city: \"city\",\r\n state: \"state\",\r\n zip: \"zip\",\r\n country: \"country\"\r\n});\r\n\r\n/**\r\n * contact Settings\r\n * @type {Readonly<{name: string, description: string, phone: string, phoneDescription: string, email: string, emailDescription: string}>}\r\n */\r\nconst contactSettings = Object.freeze({\r\n name: \"name\",\r\n description: \"description\",\r\n phone: \"phone\",\r\n phoneDescription: \"phoneDescription\",\r\n email: \"email\",\r\n emailDescription: \"emailDescription\"\r\n});\r\n\r\n/**\r\n * module Settings\r\n * @type {Readonly<{visibleFolder: string, visibleCategory: string, visibleMeetings: string}>}\r\n */\r\nconst moduleSettings = Object.freeze({\r\n visibleFolder: \"visibleFolder\",\r\n visibleCategory: \"visibleCategory\",\r\n visibleMeetings: \"visibleMeetings\"\r\n});\r\n\r\n/**\r\n * create Public Access Setting\r\n * @param {\r\n * {searcher: {name: string, code: string, repository: string}},\r\n * {appBar: {prominent: boolean, color: string, gradient: string, useTabs: boolean, logo: string, logoSize: number, backgroundImageUrl: string, title: string, collapseOnScroll: boolean, fadeImgOnScroll: boolean, shrinkOnScroll: boolean}}, {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}},\r\n * {buttons: {color: string, elevation: number, outlined: boolean, rounded: boolean, textStyle: boolean}},\r\n * {company: {disclaimers: string, name: string, logo: string, description: string, linkedIn: string, address: {zip: string, country: string, city: string, addressLine1: string, addressLine2: string, state: string}}},\r\n * {contact: {name: string, description: string, phone: string, phoneDescription: string, email: string, emailDescription: string}},\r\n * {modules: {visibleFolder: string, visibleCategory: string, visibleMeetings: string}}\r\n * } settings Public Access Settings\r\n * @return {\r\n * {searcher: {name: string, code: string, repository: string}},\r\n * {appBar: {prominent: boolean, color: string, gradient: string, useTabs: boolean, logo: string, logoSize: number, backgroundImageUrl: string, title: string, collapseOnScroll: boolean, fadeImgOnScroll: boolean, shrinkOnScroll: boolean}}, {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}},\r\n * {buttons: {color: string, elevation: number, outlined: boolean, rounded: boolean, textStyle: boolean}},\r\n * {company: {disclaimers: string, name: string, logo: string, description: string, linkedIn: string, address: {zip: string, country: string, city: string, addressLine1: string, addressLine2: string, state: string}}},\r\n * {contact: {name: string, description: string, phone: string, phoneDescription: string, email: string, emailDescription: string}},\r\n * {modules: {visibleFolder: string, visibleCategory: string, visibleMeetings: string}}\r\n * }\r\n */\r\nconst createPublicAccessSetting = (settings = undefined) => {\r\n return {\r\n [settingNames.searcher]: {\r\n [searcherSettings.name]: settings?.searcher?.name ?? \"\",\r\n [searcherSettings.code]: settings?.searcher?.code ?? \"\",\r\n [searcherSettings.repository]: settings?.searcher?.repository ?? \"\"\r\n },\r\n [settingNames.appBar]: {\r\n [appBarSettings.title]: settings?.appBar?.title ?? \"\",\r\n [appBarSettings.logo]: settings?.appBar?.logo,\r\n [appBarSettings.logoSize]: settings?.appBar?.logoSize ?? 48,\r\n [appBarSettings.backgroundImageUrl]: settings?.appBar?.backgroundImageUrl,\r\n [appBarSettings.color]: settings?.appBar?.color,\r\n [appBarSettings.gradient]: settings?.appBar?.gradient,\r\n [appBarSettings.prominent]: settings?.appBar?.prominent ?? true,\r\n [appBarSettings.useTabs]: settings?.appBar?.useTabs ?? true,\r\n [appBarSettings.collapseOnScroll]:\r\n settings?.appBar?.collapseOnScroll ?? false,\r\n [appBarSettings.fadeImgOnScroll]:\r\n settings?.appBar?.fadeImgOnScroll ?? false,\r\n [appBarSettings.shrinkOnScroll]: settings?.appBar?.shrinkOnScroll ?? false\r\n },\r\n [settingNames.sideBar]: {\r\n [sideBarSettings.backgroundImageUrl]:\r\n settings?.sideBar?.backgroundImageUrl,\r\n [sideBarSettings.enableMiniSidebar]:\r\n settings?.sideBar?.enableMiniSidebar ?? true\r\n },\r\n [settingNames.buttons]: {\r\n [buttonSettings.color]: settings?.buttons?.color,\r\n [buttonSettings.textStyle]: settings?.buttons?.textStyle ?? true,\r\n [buttonSettings.outlined]: settings?.buttons?.outlined ?? false,\r\n [buttonSettings.rounded]: settings?.buttons?.rounded ?? false,\r\n [buttonSettings.elevation]: settings?.buttons?.elevation ?? 0\r\n },\r\n [settingNames.company]: {\r\n [companySettings.logo]: settings?.company?.logo ?? undefined,\r\n [companySettings.name]: settings?.company?.name ?? \"\",\r\n [companySettings.description]: settings?.company?.description ?? \"\",\r\n [companySettings.disclaimers]: settings?.company?.disclaimers ?? \"\",\r\n [companySettings.linkedIn]: settings?.company?.linkedIn ?? undefined,\r\n [companySettings.address]: {\r\n [addressSettings.addressLine1]:\r\n settings?.company?.address?.addressLine1 ?? \"\",\r\n [addressSettings.addressLine2]:\r\n settings?.company?.address?.addressLine2 ?? \"\",\r\n [addressSettings.city]: settings?.company?.address?.city ?? \"\",\r\n [addressSettings.state]: settings?.company?.address?.state ?? \"\",\r\n [addressSettings.zip]: settings?.company?.address?.zip ?? \"\",\r\n [addressSettings.country]: settings?.company?.address?.country ?? \"\"\r\n }\r\n },\r\n [settingNames.contact]: {\r\n [contactSettings.name]: settings?.contact?.name ?? \"\",\r\n [contactSettings.description]: settings?.contact?.description ?? \"\",\r\n [contactSettings.phone]: settings?.contact?.phone ?? \"\",\r\n [contactSettings.phoneDescription]:\r\n settings?.contact?.phoneDescription ?? \"\",\r\n [contactSettings.email]: settings?.contact?.email ?? \"\",\r\n [contactSettings.emailDescription]:\r\n settings?.contact?.emailDescription ?? \"\"\r\n },\r\n [settingNames.modules]: {\r\n [moduleSettings.visibleFolder]: settings?.modules?.visibleFolder ?? false,\r\n [moduleSettings.visibleCategory]:\r\n settings?.modules?.visibleCategory ?? false,\r\n [moduleSettings.visibleMeetings]:\r\n settings?.modules?.visibleMeetings ?? false\r\n }\r\n };\r\n};\r\n\r\nexport { settingNames, createPublicAccessSetting };\r\n","// utils\r\nimport { trimSafe, trimRight, trimLeft, toLowerCaseSafe } from \"@/utils\";\r\n\r\n// model\r\nimport { createPublicAccessSetting } from \"@/model/public/publicAccessModel\";\r\n\r\n/**\r\n * Get BASE_URL\r\n * @type {string}\r\n */\r\nconst baseUrl = process.env.BASE_URL;\r\n\r\n/**\r\n * Determines whether is public access enabled\r\n * @type boolean\r\n */\r\nconst isPublicAccess =\r\n toLowerCaseSafe(process.env?.VUE_APP_PUBLIC_ACCESS ?? \"\") === \"true\";\r\n\r\n/**\r\n * Is Development environment\r\n * @type {boolean} true if app is running in development environment\r\n */\r\nconst isDevelopment =\r\n toLowerCaseSafe(process.env?.NODE_ENV ?? \"\") === \"development\";\r\n\r\n/**\r\n * Initialize Questys Web API Url using .env\r\n */\r\nlet apiUrl = ensureValidUrl(process.env.VUE_APP_WEB_API_URL);\r\n\r\n/**\r\n * Questys.WebApi Url\r\n * @type {string}\r\n */\r\nlet webApiUrl = `${apiUrl}/api`;\r\n\r\nconsole.log(`configService - webApiUrl:`, webApiUrl);\r\n\r\n/**\r\n * The URL of Questys.WebApi.WebDocumentViewer.WebThumbnailCallbacks request handler\r\n * @type {string}\r\n */\r\nlet wdvUrl = `${apiUrl}/wdv`;\r\n\r\n/**\r\n * The URL of Questys.WebApi.WebCapture.WebCaptureHandler request handler\r\n * IMPORTANT: match Questys.WebApi AddWebCaptureMiddleware()\r\n * app.Map(\"/webCapture\", wdvApp => ...\r\n * @type {string}\r\n */\r\nlet webCaptureUrl = `${apiUrl}/webCapture`;\r\n\r\n/**\r\n * Questys Download Pdf url\r\n * @type {string}\r\n */\r\nlet downloadUrl = `${apiUrl}/Image/DownloadPdf`;\r\n\r\n/**\r\n * Web Api call Time Out\r\n * @type {string}\r\n */\r\nconst webApiTimeOut = process.env.VUE_APP_AXIOS_TIMEOUT;\r\n\r\n/**\r\n * Application version defined in vue.config.js\r\n * @type {String|string}\r\n */\r\nconst version = trimLeft(\r\n trimRight(process.env[\"VUE_APP_VERSION\"] || \"0\", ['\"']),\r\n ['\"']\r\n);\r\n\r\n/**\r\n * App Name (Questys Access, Public Access, ...)\r\n * @type {String|string}\r\n */\r\nconst appName = process.env.VUE_APP_NAME || \"Questys Access\";\r\n\r\n/**\r\n * Year of the Application\r\n * @type {string}\r\n */\r\nconst appYear =\r\n process.env[\"VUE_APP_YEAR\"] || new Date().getFullYear().toString();\r\n\r\n/**\r\n * public Access\r\n * @type {\r\n * {searcher: {name: string, code: string, repository: string}},\r\n * {appBar: {prominent: boolean, color: string, gradient: string, useTabs: boolean, logo: string, backgroundImageUrl: string, title: string, collapseOnScroll: boolean, fadeImgOnScroll: boolean, shrinkOnScroll: boolean}},\r\n * {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}},\r\n * {buttons: {color: string, elevation: number, outlined: boolean, rounded: boolean, textStyle: boolean}},\r\n * {company: {disclaimers: string, name: string, logo: string, description: string, linkedIn: string, address: {zip: string, country: string, city: string, addressLine1: string, addressLine2: string, state: string}}},\r\n * {contact: {name: string, description: string, phone: string, phoneDescription: string, email: string, emailDescription: string}},\r\n * {modules: {visibleFolder: string, visibleCategory: string, visibleMeetings: string}}\r\n * }\r\n */\r\nlet publicAccess = createPublicAccessSetting();\r\n\r\n/**\r\n * Ensure Valid Url\r\n * @param {String|string} urlName\r\n * @returns {String}\r\n */\r\nfunction ensureValidUrl(urlName) {\r\n return urlName ? trimRight(trimSafe(urlName), [\"/\"]) : \"\";\r\n}\r\n\r\n/**\r\n * set Production Settings\r\n * @param {{ apiUrl: string}} settings\r\n */\r\nfunction setProductionSettings(settings) {\r\n const url = settings?.apiUrl;\r\n if (url) {\r\n console.log(`setProductionSettings() settings.apiUrl:`, url);\r\n // Update apiUrl and it dependencies\r\n apiUrl = ensureValidUrl(url);\r\n webApiUrl = `${apiUrl}/api`;\r\n wdvUrl = `${apiUrl}/wdv`;\r\n webCaptureUrl = `${apiUrl}/webCapture`;\r\n downloadUrl = `${apiUrl}/Image/DownloadPdf`;\r\n\r\n console.log(\"Updated apiUrl:\", apiUrl);\r\n console.log(\"Updated webApiUrl:\", webApiUrl);\r\n console.log(\"Updated wdvUrl:\", wdvUrl);\r\n console.log(\"Updated downloadUrl:\", downloadUrl);\r\n } else {\r\n console.warn(`setProductionSettings() settings.apiUrl:`, url);\r\n }\r\n}\r\n\r\n/**\r\n * set Public Access Settings\r\n * @type {\r\n * {searcher: {name: string, code: string, repository: string}},\r\n * {appBar: {prominent: boolean, color: string, gradient: string, useTabs: boolean, logo: string, backgroundImageUrl: string, title: string, collapseOnScroll: boolean, fadeImgOnScroll: boolean, shrinkOnScroll: boolean}},\r\n * {sideBar: {enableMiniSidebar: boolean, backgroundImageUrl: string}},\r\n * {buttons: {color: string, elevation: number, outlined: boolean, rounded: boolean, textStyle: boolean}},\r\n * {company: {disclaimers: string, name: string, logo: string, description: string, linkedIn: string, address: {zip: string, country: string, city: string, addressLine1: string, addressLine2: string, state: string}}},\r\n * {contact: {name: string, description: string, phone: string, phoneDescription: string, email: string, emailDescription: string}},\r\n * {modules: {visibleFolder: string, visibleCategory: string, visibleMeetings: string}}\r\n * }\r\n */\r\nfunction setPublicAccessSettings(settings) {\r\n publicAccess = createPublicAccessSetting(settings);\r\n}\r\n\r\n/**\r\n * determines whether Author is Allowed\r\n * @return {boolean} true if Author is Allowed\r\n */\r\nconst isAllowedAuthor = () => {\r\n /**\r\n * Enabled Author if not Public Access\r\n */\r\n return !isPublicAccess;\r\n};\r\n\r\nexport {\r\n baseUrl,\r\n isDevelopment,\r\n apiUrl,\r\n webApiTimeOut,\r\n version,\r\n appName,\r\n appYear,\r\n webApiUrl,\r\n wdvUrl,\r\n webCaptureUrl,\r\n downloadUrl,\r\n isPublicAccess,\r\n publicAccess,\r\n isAllowedAuthor,\r\n setProductionSettings,\r\n setPublicAccessSettings\r\n};\r\n","const ruleNames = Object.freeze({\r\n required: \"Required\",\r\n requiredByAutoFiling: \"Required by Auto Filing\"\r\n});\r\n\r\nexport { ruleNames };\r\n","import {\r\n getLocalStorageItem,\r\n setLocalStorageItem,\r\n removeLocalStorageItem,\r\n repoUserLocalStorageKey\r\n} from \"@/utils/localStorageUtility\";\r\n\r\n/**\r\n * User Local Storage Keys\r\n * @type {Readonly<{buttonTextStyle: string, usesAppTabs: string, dialogToolbarStyle: string, buttonColor: string, usesSidebarImage: string, buttonOutlined: string, toolbarDetailsColor: string, menuItemColor: string, user: string}>}\r\n */\r\nconst storageKey = Object.freeze({\r\n user: \"user\",\r\n backupUser: \"backupUser\",\r\n usesAppTabs: \"UsesAppTabs\",\r\n collapseOnScroll: \"collapseOnScroll\",\r\n usesSidebarImage: \"UsesSidebarImage\",\r\n enableMiniDrawer: \"enableMiniDrawer\",\r\n dialogToolbarStyle: \"dialogToolbarStyle\",\r\n buttonTextStyle: \"buttonTextStyle\",\r\n buttonOutlined: \"buttonOutlined\",\r\n buttonRounded: \"buttonRounded\",\r\n buttonElevation: \"buttonElevation\",\r\n buttonColor: \"buttonColor\",\r\n menuItemColor: \"menuItemColor\",\r\n toolbarDetailsColor: \"toolbarDetailsColor\",\r\n enableCategoryModule: \"enableCategoryModule\",\r\n enableSearchModule: \"enableSearchModule\",\r\n enableTasksModule: \"enableTasksModule\",\r\n enableProjectsModule: \"enableProjectsModule\",\r\n enableAgendaModule: \"enableAgendaModule\",\r\n enableWebScan: \"enableWebScan\",\r\n enableTextEditor: \"enableTextEditor\",\r\n enableAnnotationEditor: \"enableAnnotationEditor\",\r\n recordsFetchCount: \"recordsFetchCount\"\r\n});\r\n\r\n/**\r\n * Create Store User\r\n * @param {String|string} name\r\n * @param {String|string} repository\r\n * @param {String|string} token\r\n * @param {String|string} tokenValidFrom\r\n * @param {String|string} tokenValidTo\r\n * @return {{tokenValidTo: string, tokenValidFrom: string, name: string, repository: string, token: string}}\r\n */\r\nconst createStoreUser = (\r\n name,\r\n repository,\r\n token = \"\",\r\n tokenValidFrom = \"\",\r\n tokenValidTo = \"\"\r\n) => {\r\n return {\r\n name: name || \"\",\r\n repository: repository || \"\",\r\n token: token || \"\",\r\n tokenValidFrom: tokenValidFrom || \"\",\r\n tokenValidTo: tokenValidTo || \"\"\r\n };\r\n};\r\n\r\n/**\r\n * Store User to the local Storage\r\n * @param {{name: string, repository: string, token: string, tokenValidFrom: string, tokenValidTo: string}} user\r\n */\r\nconst storeUser = user => {\r\n try {\r\n if (user) {\r\n setLocalStorageItem(storageKey.user, JSON.stringify(user));\r\n } else {\r\n removeLocalStorageItem(storageKey.user);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * Get Stored User from local Storage\r\n * @return {{name: string, repository: string, token: string, tokenValidFrom: string, tokenValidTo: string}|any|undefined}\r\n */\r\nconst getStoredUser = () => {\r\n try {\r\n const item = getLocalStorageItem(storageKey.user);\r\n if (!item) {\r\n return undefined;\r\n }\r\n return JSON.parse(item);\r\n } catch (e) {\r\n console.error(`Couldn't get stored user. ${e}`);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Remove Stored User\r\n */\r\nconst removeStoredUser = () => removeLocalStorageItem(storageKey.user);\r\n\r\n/**\r\n * store Backup User\r\n * @param {{name: string, repository: string, token: string, tokenValidFrom: string, tokenValidTo: string}} user\r\n */\r\nconst storeBackupUser = user => {\r\n try {\r\n if (user) {\r\n setLocalStorageItem(storageKey.backupUser, JSON.stringify(user));\r\n } else {\r\n removeLocalStorageItem(storageKey.backupUser);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * get Stored Backup User\r\n * @return {{name: string, repository: string, token: string, tokenValidFrom: string, tokenValidTo: string}|any|undefined}\r\n */\r\nconst getStoredBackupUser = () => {\r\n try {\r\n const item = getLocalStorageItem(storageKey.backupUser);\r\n if (!item) {\r\n return undefined;\r\n }\r\n return JSON.parse(item);\r\n } catch (e) {\r\n console.error(e);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * remove Stored Backup User\r\n */\r\nconst removeStoredBackupUser = () =>\r\n removeLocalStorageItem(storageKey.backupUser);\r\n\r\n/**\r\n * User settings\r\n */\r\n\r\n/**\r\n * Store UsesAppTabs to the local Storage\r\n * @param {String} usesAppTabs\r\n */\r\nconst storeUsesAppTabs = usesAppTabs =>\r\n setLocalStorageItem(storageKey.usesAppTabs, usesAppTabs);\r\n\r\n/**\r\n * Get Stored UsesAppTabs from local Storage\r\n * @returns {String|string|null|undefined} UsesAppTabs\r\n */\r\nconst getStoredUsesAppTabs = () => getLocalStorageItem(storageKey.usesAppTabs);\r\n\r\n/**\r\n * Store CollapseOnScroll to the local Storage\r\n * @param {String} value\r\n */\r\nconst storeAppBarCollapseOnScroll = value =>\r\n setLocalStorageItem(storageKey.collapseOnScroll, value);\r\n/**\r\n * Get Collapse On Scroll\r\n * @return {String|string|null|undefined}\r\n */\r\nconst appBarCollapseOnScroll = getLocalStorageItem(storageKey.collapseOnScroll);\r\n\r\n/**\r\n * store Uses Sidebar Image to local Storage\r\n * @param {String|string} usesSidebarImage\r\n */\r\nconst storeUsesSidebarImage = usesSidebarImage =>\r\n setLocalStorageItem(storageKey.usesSidebarImage, usesSidebarImage);\r\n\r\n/**\r\n * Get Uses Sidebar Image from local Storage\r\n * @returns {string}\r\n */\r\nconst getStoredUsesSidebarImage = () =>\r\n getLocalStorageItem(storageKey.usesSidebarImage);\r\n\r\n/**\r\n * store Enable Mini Drawer\r\n * @param {string} value\r\n */\r\nconst storeEnableMiniDrawer = value =>\r\n setLocalStorageItem(storageKey.enableMiniDrawer, value);\r\n\r\n/**\r\n * Get Enable Mini Drawer\r\n * @type {string}\r\n */\r\nconst enableMiniDrawer = getLocalStorageItem(storageKey.enableMiniDrawer);\r\n\r\n/**\r\n * Store Dialog Toolbar rStyle\r\n * @param {String|string} value\r\n */\r\nconst storeDialogToolbarStyle = value =>\r\n setLocalStorageItem(storageKey.dialogToolbarStyle, value);\r\n\r\n/**\r\n * get Dialog Toolbar Style\r\n * @returns {String|string|null|undefined}\r\n */\r\nconst getDialogToolbarStyle = () =>\r\n getLocalStorageItem(storageKey.dialogToolbarStyle);\r\n\r\n/**\r\n * Store Command Buttons Text Style\r\n * @param {String|string} value\r\n */\r\nconst storeCommandButtonTextStyle = value =>\r\n setLocalStorageItem(storageKey.buttonTextStyle, value);\r\n/**\r\n * Get Command Buttons Text Style\r\n * @returns {String|string|null|undefined}\r\n */\r\nconst commandButtonTextStyle = getLocalStorageItem(storageKey.buttonTextStyle);\r\n\r\n/**\r\n * Store Command Buttons Outlined\r\n * @param {String|string} value\r\n */\r\nconst storeCommandButtonOutlined = value =>\r\n setLocalStorageItem(storageKey.buttonOutlined, value);\r\n/**\r\n * Get Command Buttons Outlined\r\n * @returns {String|string|null|undefined}\r\n */\r\nconst commandButtonOutlined = getLocalStorageItem(storageKey.buttonOutlined);\r\n\r\n/**\r\n * Store Command Buttons Rounded\r\n * @param {String|string} value\r\n */\r\nconst storeCommandButtonRounded = value =>\r\n setLocalStorageItem(storageKey.buttonRounded, value);\r\n/**\r\n * Get Command Buttons Rounded\r\n * @returns {String|string|null|undefined}\r\n */\r\nconst commandButtonRounded = getLocalStorageItem(storageKey.buttonRounded);\r\n\r\n/**\r\n * Store Command Buttons Elevation\r\n * @param {String|string} value\r\n */\r\nconst storeCommandButtonElevation = value =>\r\n setLocalStorageItem(storageKey.buttonElevation, value);\r\n/**\r\n * Get Command Buttons Rounded\r\n * @returns {String|string|null|undefined}\r\n */\r\nconst commandButtonElevation = getLocalStorageItem(storageKey.buttonElevation);\r\n\r\n/**\r\n * Get Stored Data Table Configuration\r\n * @param {string} moduleName\r\n * @param {string} moduleItemId\r\n * @param {string} tableName\r\n * @returns {any|null}\r\n */\r\nconst getStoredDataTableConfiguration = (\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n) => {\r\n try {\r\n const name = buildDataTableNameKey(moduleName, moduleItemId, tableName);\r\n const item = getLocalStorageItem(name);\r\n if (!item) {\r\n return null;\r\n }\r\n return JSON.parse(item);\r\n } catch (e) {\r\n console.error(e);\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Get Data Table Record Properties Configuration\r\n * @param {string} moduleName\r\n * @param {string} moduleItemId\r\n * @param {string} tableName\r\n * @return {Array <{name: string, include: boolean, operator: string, value: string}>|any|null}\r\n */\r\nconst getDataTableRecordPropsConfiguration = (\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n) => {\r\n try {\r\n const name = buildDataTableRecordPropsNameKey(\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n );\r\n const item = getLocalStorageItem(name);\r\n if (!item) {\r\n return null;\r\n }\r\n return JSON.parse(item);\r\n } catch (e) {\r\n console.error(e);\r\n return null;\r\n }\r\n};\r\n\r\n/**\r\n * Get Data Table Fields Configuration\r\n * @param {string} moduleName\r\n * @param {string} moduleItemId\r\n * @param {string} tableName\r\n * @return {Array <{Id: number, Include: boolean, Value: string, Operator: string}>|any|undefined}\r\n */\r\nconst getDataTableFieldsConfiguration = (\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n) => {\r\n try {\r\n const name = buildDataTableFieldsNameKey(\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n );\r\n const item = getLocalStorageItem(name);\r\n if (!item) {\r\n return undefined;\r\n }\r\n return JSON.parse(item);\r\n } catch (e) {\r\n console.error(e);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Store Data Table Configuration\r\n * @param {string} moduleName\r\n * @param {string} moduleItemId\r\n * @param {string} tableName\r\n * @param {any} configuration\r\n */\r\nconst storeDataTableConfiguration = (\r\n moduleName,\r\n moduleItemId,\r\n tableName,\r\n configuration\r\n) => {\r\n try {\r\n const name = buildDataTableNameKey(moduleName, moduleItemId, tableName);\r\n if (configuration) {\r\n setLocalStorageItem(name, JSON.stringify(configuration));\r\n } else {\r\n removeLocalStorageItem(name);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * Store Data Table Fields Configuration\r\n * @param {string} moduleName module Name\r\n * @param {string} moduleItemId module Item id\r\n * @param {string} tableName table Name\r\n * @param {any} configuration\r\n */\r\nconst storeDataTableFieldsConfiguration = (\r\n moduleName,\r\n moduleItemId,\r\n tableName,\r\n configuration\r\n) => {\r\n try {\r\n const name = buildDataTableFieldsNameKey(\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n );\r\n if (configuration) {\r\n setLocalStorageItem(name, JSON.stringify(configuration));\r\n } else {\r\n removeLocalStorageItem(name);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * store DataTable Record Props Configuration\r\n * @param {string} moduleName\r\n * @param {string} moduleItemId\r\n * @param {string} tableName\r\n * @param {any} configuration\r\n */\r\nconst storeDataTableRecordPropsConfiguration = (\r\n moduleName,\r\n moduleItemId,\r\n tableName,\r\n configuration\r\n) => {\r\n try {\r\n const name = buildDataTableRecordPropsNameKey(\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n );\r\n if (configuration) {\r\n setLocalStorageItem(name, JSON.stringify(configuration));\r\n } else {\r\n removeLocalStorageItem(name);\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * Build Data Table local Storage Key\r\n * @param {string} moduleName\r\n * @param {string} moduleItemId\r\n * @param {string} tableName\r\n * @returns {string}\r\n */\r\nconst buildDataTableNameKey = (moduleName, moduleItemId, tableName) =>\r\n `${repoUserLocalStorageKey(moduleName)}_${moduleItemId}_${tableName}`;\r\n\r\n/**\r\n * build Data Table Fields Name Key\r\n * @param {string} moduleName\r\n * @param {string} moduleItemId\r\n * @param {string} tableName\r\n * @return {string}\r\n */\r\nconst buildDataTableFieldsNameKey = (moduleName, moduleItemId, tableName) =>\r\n `${repoUserLocalStorageKey(moduleName)}_${moduleItemId}_${tableName}_fields`;\r\n\r\n/**\r\n * build Data Table Record Properties Name Key\r\n * @param moduleName\r\n * @param moduleItemId\r\n * @param tableName\r\n * @return {`${string}_${string}_${string}_props`}\r\n */\r\nconst buildDataTableRecordPropsNameKey = (\r\n moduleName,\r\n moduleItemId,\r\n tableName\r\n) =>\r\n `${repoUserLocalStorageKey(moduleName)}_${moduleItemId}_${tableName}_props`;\r\n\r\n/**\r\n * Store Button Color\r\n * @param {String} color\r\n */\r\nconst storeButtonColor = color =>\r\n setLocalStorageItem(storageKey.buttonColor, color);\r\n/**\r\n * get Stored Button Color\r\n * @returns {string}\r\n */\r\nconst getStoredButtonColor = () => getLocalStorageItem(storageKey.buttonColor);\r\n\r\n/**\r\n * Store Menu Item Color\r\n * @param color\r\n */\r\nconst storeMenuItemColor = color =>\r\n setLocalStorageItem(storageKey.menuItemColor, color);\r\n/**\r\n * get Stored Menu Item Color\r\n * @returns {string}\r\n */\r\nconst getStoredMenuItemColor = () =>\r\n getLocalStorageItem(storageKey.menuItemColor);\r\n\r\n/**\r\n * Store Toolbar Details Color\r\n * @param color\r\n */\r\nconst storeToolbarDetailsColor = color =>\r\n setLocalStorageItem(storageKey.toolbarDetailsColor, color);\r\n/**\r\n * get Toolbar Details Color\r\n * @returns {string}\r\n */\r\nconst getToolbarDetailsColor = () =>\r\n getLocalStorageItem(storageKey.toolbarDetailsColor);\r\n\r\n/**\r\n * Store Enable Category Module indicator\r\n * @param {string} value\r\n */\r\nconst storeEnableCategoryModule = value =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableCategoryModule),\r\n value\r\n );\r\n\r\n/**\r\n * Get enable Category Module indicator\r\n * @return {string|null|undefined}\r\n */\r\nconst getEnableCategoryModule = () =>\r\n getLocalStorageItem(repoUserLocalStorageKey(storageKey.enableCategoryModule));\r\n\r\n/**\r\n * Store Enable Search Module indicator\r\n * @param {string} value\r\n */\r\nconst storeEnableSearchModule = value =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableSearchModule),\r\n value\r\n );\r\n\r\n/**\r\n * Get enable Search Module indicator\r\n * @return {string|null|undefined}\r\n */\r\nconst getEnableSearchModule = () =>\r\n getLocalStorageItem(repoUserLocalStorageKey(storageKey.enableSearchModule));\r\n\r\n/**\r\n * Store Enable Tasks Module indicator\r\n * @param {string} value\r\n */\r\nconst storeEnableTasksModule = value =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableTasksModule),\r\n value\r\n );\r\n\r\n/**\r\n * Get enable Tasks Module indicator\r\n * @return {string|null|undefined}\r\n */\r\nconst getEnableTasksModule = () =>\r\n getLocalStorageItem(repoUserLocalStorageKey(storageKey.enableTasksModule));\r\n\r\n/**\r\n * Store Enable Projects Module indicator\r\n * @param {string} value\r\n */\r\nconst storeEnableProjectsModule = value =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableProjectsModule),\r\n value\r\n );\r\n\r\n/**\r\n * get Enable Projects Module\r\n * @return {string|null|undefined}\r\n */\r\nconst getEnableProjectsModule = () =>\r\n getLocalStorageItem(repoUserLocalStorageKey(storageKey.enableProjectsModule));\r\n\r\n/**\r\n * Store Enable Agenda Module indicator\r\n * @param {string} value\r\n */\r\nconst storeEnableAgendaModule = value =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableAgendaModule),\r\n value\r\n );\r\n\r\n/**\r\n * Get enable Agenda Module indicator\r\n * @return {string|null|undefined}\r\n */\r\nconst getEnableAgendaModule = () =>\r\n getLocalStorageItem(repoUserLocalStorageKey(storageKey.enableAgendaModule));\r\n\r\n/**\r\n * store Enable Text Editor\r\n * @param {string} value\r\n */\r\nconst storeEnableTextEditor = value =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableTextEditor),\r\n value\r\n );\r\n\r\n/**\r\n * store Enable Annotation Editor\r\n * @param {string} value\r\n */\r\nconst storeEnableAnnotationEditor = value =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableAnnotationEditor),\r\n value\r\n );\r\n\r\n/**\r\n * Get enable WebScan indicator\r\n * @return {string|null|undefined}\r\n */\r\nconst getEnableTextEditor = () =>\r\n getLocalStorageItem(repoUserLocalStorageKey(storageKey.enableTextEditor));\r\n\r\n/**\r\n * Get enable WebScan indicator\r\n * @return {string|null|undefined}\r\n */\r\nconst getEnableAnnotationEditor = () =>\r\n getLocalStorageItem(\r\n repoUserLocalStorageKey(storageKey.enableAnnotationEditor)\r\n );\r\n\r\n/**\r\n * store Records Fetch Count\r\n * @param {string|null|undefined} count\r\n */\r\nconst storeRecordsFetchCount = count =>\r\n setLocalStorageItem(storageKey.recordsFetchCount, count);\r\n\r\n/**\r\n * get Records Fetch Count\r\n * @return {string|null}\r\n */\r\nconst getRecordsFetchCount = () =>\r\n getLocalStorageItem(storageKey.recordsFetchCount);\r\n\r\nexport {\r\n storeUser,\r\n getStoredUser,\r\n removeStoredUser,\r\n storeUsesAppTabs,\r\n getStoredUsesAppTabs,\r\n getStoredUsesSidebarImage,\r\n storeUsesSidebarImage,\r\n getStoredDataTableConfiguration,\r\n storeDataTableConfiguration,\r\n storeDialogToolbarStyle,\r\n getDialogToolbarStyle,\r\n storeCommandButtonTextStyle,\r\n storeCommandButtonOutlined,\r\n storeButtonColor,\r\n getStoredButtonColor,\r\n storeMenuItemColor,\r\n getStoredMenuItemColor,\r\n storeToolbarDetailsColor,\r\n getToolbarDetailsColor,\r\n storeDataTableFieldsConfiguration,\r\n getDataTableFieldsConfiguration,\r\n buildDataTableFieldsNameKey,\r\n storeDataTableRecordPropsConfiguration,\r\n getDataTableRecordPropsConfiguration,\r\n storeAppBarCollapseOnScroll,\r\n storeEnableMiniDrawer,\r\n storeEnableCategoryModule,\r\n getEnableCategoryModule,\r\n storeEnableTasksModule,\r\n getEnableTasksModule,\r\n storeEnableProjectsModule,\r\n storeEnableAgendaModule,\r\n getEnableAgendaModule,\r\n storeCommandButtonRounded,\r\n storeCommandButtonElevation,\r\n createStoreUser,\r\n storeBackupUser,\r\n getStoredBackupUser,\r\n removeStoredBackupUser,\r\n getEnableProjectsModule,\r\n commandButtonTextStyle,\r\n commandButtonOutlined,\r\n appBarCollapseOnScroll,\r\n enableMiniDrawer,\r\n commandButtonRounded,\r\n commandButtonElevation,\r\n storeEnableAnnotationEditor,\r\n storeEnableTextEditor,\r\n getEnableTextEditor,\r\n getEnableAnnotationEditor,\r\n storeRecordsFetchCount,\r\n getRecordsFetchCount,\r\n storeEnableSearchModule,\r\n getEnableSearchModule\r\n};\r\n","// utils\r\nimport {\r\n getLocalStorageItem,\r\n setLocalStorageItem,\r\n repoUserLocalStorageKey\r\n} from \"@/utils/localStorageUtility\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n/**\r\n * module Name\r\n * @type {string}\r\n */\r\nconst moduleName = moduleNames.Folder;\r\n\r\n/**\r\n * Local Storage Keys\r\n * @type {Readonly<{folderId: string}>}\r\n */\r\nconst localStorageKey = Object.freeze({\r\n folderId: `${moduleName}_folderId`,\r\n expandedId: `${moduleName}_expandedId`\r\n});\r\n\r\n/**\r\n * Store Selected Module ItemId (folder-tree record id) to the local Storage\r\n * @param {Number|number} id record id\r\n */\r\nconst storeSelectedModuleItemId = id =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.folderId),\r\n id.toString()\r\n );\r\n\r\n/**\r\n * store Selected Module expanded id\r\n * @param {Number|number} expandedId expanded id\r\n */\r\nconst storeSelectedModuleExpandedId = expandedId =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.expandedId),\r\n expandedId.toString()\r\n );\r\n\r\n/**\r\n * Get Stored Selected Module ItemId (folder-tree record id) from local Storage\r\n * @returns {Number|number}\r\n */\r\nconst getStoredSelectedModuleItemId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.folderId)\r\n );\r\n return id ? (isNaN(id) ? 0 : Number(id)) : 0;\r\n};\r\n\r\n/**\r\n * get Stored Selected Module expanded id\r\n * @return {Number|number}\r\n */\r\nconst getStoredSelectedModuleExpandedId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.expandedId)\r\n );\r\n return id ? (isNaN(id) ? -1 : Number(id)) : -1;\r\n};\r\n\r\nexport {\r\n storeSelectedModuleItemId,\r\n storeSelectedModuleExpandedId,\r\n getStoredSelectedModuleItemId,\r\n getStoredSelectedModuleExpandedId\r\n};\r\n","// design\r\nimport { displayTypes, fontEmphasis, Text } from \"@/design/text/Text\";\r\nimport {\r\n Color,\r\n colorMD,\r\n colorTheme,\r\n variantNumber,\r\n variantType,\r\n getErrorColor,\r\n getErrorColorClass,\r\n getWarningColor,\r\n getWarningColorClass,\r\n getColorClass,\r\n getSuccessColorClass\r\n} from \"@/design/colors/Color\";\r\nimport {\r\n iconAccountArrowRight,\r\n iconAccountCheck,\r\n iconCheck,\r\n iconClear,\r\n iconUndo\r\n} from \"@/design/icon/iconConst\";\r\n\r\n/**\r\n * user Task Name\r\n * @type {string} user Task Name\r\n */\r\nconst userTaskLabel = \"User Task\";\r\n\r\n/**\r\n * workflow project task instance State\r\n * @type {Readonly<{canceled: number, suspendedWorkflow: number, faulted: number, queued: number, notStarted: number, invalidWorkflow: number, completed: number, abandoned: number, suspended: number}>}\r\n */\r\nconst taskState = Object.freeze({\r\n notStarted: 0, // The workflow task instance has not started\r\n queued: 1, // The workflow task instance is in an executing state\r\n suspended: 2, // The workflow task instance was put on hold\r\n completed: 10, // The workflow task instance completed successfully\r\n canceled: 11, // The workflow task instance was canceled to some reasons and wasn't completed\r\n faulted: 12, // The workflow task instance was aborted during execution\r\n\r\n invalidWorkflow: -1, // The workflow instance has not been initialized\r\n suspendedWorkflow: -2, // The workflow instance has been suspended\r\n abandoned: -3 // The workflow state is transitioned to complete/cancel, but the task has not been completed\r\n});\r\n\r\n/**\r\n * workflow project task instance states\r\n * @type {Readonly<{id: number, name: string}>[]}\r\n */\r\nconst taskStates = Object.freeze([\r\n {\r\n id: taskState.notStarted,\r\n name: \"Not Started\",\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n4\r\n }\r\n },\r\n {\r\n id: taskState.queued,\r\n name: \"Queued\",\r\n color: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n }\r\n },\r\n {\r\n id: taskState.suspended,\r\n name: \"Suspended\",\r\n color: {\r\n name: colorTheme.warning,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: taskState.completed,\r\n name: \"Completed\",\r\n color: {\r\n name: colorTheme.success,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: taskState.canceled,\r\n name: \"Canceled\",\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n2\r\n }\r\n },\r\n {\r\n id: taskState.faulted,\r\n name: \"Faulted\",\r\n color: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: taskState.invalidWorkflow,\r\n name: \"Invalid Workflow\",\r\n color: {\r\n name: colorTheme.warning,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: taskState.suspendedWorkflow,\r\n name: \"Suspended Workflow\",\r\n color: {\r\n name: colorTheme.warning,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: taskState.abandoned,\r\n name: \"Abandoned\",\r\n color: {\r\n name: colorTheme.warning,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n]);\r\n\r\nconst taskCreatedColorClass = () => getSuccessColorClass();\r\n\r\n/**\r\n * due Date Text Class\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, projectId: number, projectName: string, priority: number, isOverdue: boolean, isMilestone: boolean, isDue: boolean, dueDate: string, comment: string, assignee: string}} task\r\n * @param {string} displayType display Type\r\n * @param {string} emphasis font Emphasis\r\n * @return {string|undefined}\r\n */\r\nconst dueDateTextClass = (\r\n task,\r\n displayType = undefined,\r\n emphasis = undefined\r\n) => {\r\n if (!task?.dueDate) {\r\n return undefined;\r\n }\r\n\r\n const color = task.isDue ?? false ? getErrorColor() : getWarningColor();\r\n\r\n return new Text(\r\n color,\r\n displayType ?? displayTypes.subtitle1,\r\n emphasis ?? fontEmphasis.italic\r\n ).getClassText();\r\n};\r\n\r\n/**\r\n * due Date Color Class\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, projectId: number, projectName: string, priority: number, isOverdue: boolean, isMilestone: boolean, isDue: boolean, dueDate: string, comment: string, assignee: string}} task\r\n * @return {String|string|undefined}\r\n */\r\nconst dueDateColorClass = task => {\r\n return task?.isDue ?? false\r\n ? getErrorColorClass()\r\n : task?.dueDate\r\n ? getWarningColorClass()\r\n : undefined;\r\n};\r\n\r\n/**\r\n * overdue Text Class\r\n * @param task\r\n * @param {string} displayType\r\n * @param {string} emphasis\r\n * @return {string|undefined}\r\n */\r\nconst overdueTextClass = (\r\n task,\r\n displayType = undefined,\r\n emphasis = undefined\r\n) => {\r\n if (!(task?.isOverdue ?? false)) {\r\n return undefined;\r\n }\r\n return new Text(\r\n getErrorColor(),\r\n displayType ?? displayTypes.subtitle1,\r\n emphasis ?? fontEmphasis.italic\r\n )?.getClassText();\r\n};\r\n/**\r\n * Task Validation color class\r\n * @param {Boolean} isValid\r\n * @return {String|string|undefined}\r\n */\r\nconst taskValidationColorClass = isValid => {\r\n return isValid ? getSuccessColorClass() : getErrorColorClass();\r\n};\r\n\r\n/**\r\n * due Date Message\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, projectId: number, projectName: string, priority: number, isOverdue: boolean, isMilestone: boolean, isDue: boolean, dueDate: string, comment: string, assignee: string}} task\r\n * @return {string|undefined}\r\n */\r\nconst dueDateMessage = task => {\r\n return task?.isDue ?? false\r\n ? \"It's Due Date!\"\r\n : task?.dueDate\r\n ? \"Watch Due Date!\"\r\n : undefined;\r\n};\r\n\r\n/**\r\n * task Priority\r\n * @type {Readonly<{normal: number, high: number, low: number}>}\r\n */\r\nconst taskPriority = Object.freeze({\r\n low: -1,\r\n normal: 0,\r\n high: 1\r\n});\r\n\r\n/**\r\n * task Priorities\r\n * @type {({color: {variantType: string, variantNumber: number, name: string}, text: string, value: number})[]}\r\n */\r\nconst taskPriorities = Object.freeze([\r\n {\r\n value: taskPriority.low,\r\n text: \"Low\",\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n4\r\n }\r\n },\r\n {\r\n value: taskPriority.normal,\r\n text: \"Normal\",\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n2\r\n }\r\n },\r\n {\r\n value: taskPriority.high,\r\n text: \"High\",\r\n color: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n]);\r\n\r\n/**\r\n * find Task Priority\r\n * @param value\r\n * @return {{color: {variantType: string, variantNumber: number, name: string}, text: string, value: number}}\r\n */\r\nconst findTaskPriority = value => {\r\n return taskPriorities.find(el => el?.value === value);\r\n};\r\n\r\n/**\r\n * find Task Priority Color\r\n * @param value Priority value\r\n * @return {*}\r\n */\r\nconst findTaskPriorityColor = value => {\r\n return taskPriorities?.find(el => el?.value === value)?.color;\r\n};\r\n\r\n/**\r\n * priority Text Class\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, projectId: number, projectName: string, priority: number, isOverdue: boolean, isMilestone: boolean, isDue: boolean, dueDate: string, comment: string, assignee: string}} task\r\n * @param {string} displayType\r\n * @param {string} emphasis\r\n * @return {string|undefined}\r\n */\r\nconst priorityTextClass = (\r\n task,\r\n displayType = undefined,\r\n emphasis = undefined\r\n) => {\r\n if (!task) {\r\n return undefined;\r\n }\r\n\r\n /**\r\n * color\r\n * @type {Color|undefined}\r\n */\r\n const color = findPriorityColor(task.priority);\r\n\r\n return color\r\n ? new Text(\r\n color,\r\n displayType ?? displayTypes.subtitle1,\r\n emphasis ?? fontEmphasis.regular\r\n ).getClassText()\r\n : undefined;\r\n};\r\n\r\n/**\r\n * priority Color Class\r\n * @param task\r\n * @return {string|undefined}\r\n */\r\nconst priorityColorClass = task => {\r\n return findPriorityColor(task?.priority)?.getClassColor();\r\n};\r\n\r\n/**\r\n * find Priority Color\r\n * @param value Priority value\r\n * @return {Color|undefined}\r\n */\r\nconst findPriorityColor = value => {\r\n const color = findTaskPriorityColor(value);\r\n\r\n return color\r\n ? new Color(color.name, color.variantType, color.variantNumber)\r\n : undefined;\r\n};\r\n\r\n/**\r\n * find Task State\r\n * @param {Number|number} id Task State id\r\n * @return {{id: number, name: string, color: {name: string, variantType: string, variantNumber: number}}|undefined} Task State\r\n */\r\nconst findTaskState = id => {\r\n return taskStates?.find(el => el?.id === id);\r\n};\r\n\r\n/**\r\n * find Task State Color Class\r\n * @param {Number|number} id Task State id\r\n * @return {string|undefined}\r\n */\r\nconst findTaskStateColorClass = id => {\r\n const color = findTaskStateColor(id);\r\n\r\n return getColorClass(color);\r\n};\r\n\r\n/**\r\n * find Task State Color\r\n * @param {Number|number} id Task State id\r\n * @return {{name: string, variantType: string, variantNumber: number}|undefined}\r\n */\r\nconst findTaskStateColor = id => {\r\n return taskStates?.find(el => el?.id === id)?.color;\r\n};\r\n\r\n/**\r\n * task's Note Color Class\r\n * @return {String|string}\r\n */\r\nconst noteColorClass = () => {\r\n return new Color(\r\n colorMD.yellow,\r\n variantType.darken,\r\n variantNumber.n1\r\n ).getClassColor();\r\n};\r\n\r\n/**\r\n * user Task Type\r\n * @type {Readonly<{toDo: number, approval: number, review: number, unspecified: number}>}\r\n */\r\nconst userTaskType = Object.freeze({\r\n unspecified: -0,\r\n toDo: 1,\r\n approval: 2,\r\n review: 3\r\n});\r\n\r\n/**\r\n * user Task Command Type\r\n * @type {Readonly<{take: number, release: number, reassign: number}>}\r\n */\r\nconst userTaskCommandType = Object.freeze({\r\n reassign: 0,\r\n release: 1,\r\n take: 2\r\n});\r\n\r\n/**\r\n * user Task Commands\r\n * @type {Readonly<[{icon: string, description: string, label: string, type: number}]>}\r\n */\r\nconst userTaskCommands = Object.freeze([\r\n {\r\n type: userTaskCommandType.reassign,\r\n label: \"Reassign\",\r\n description: \"Reassign task to different user\",\r\n icon: iconAccountArrowRight\r\n },\r\n {\r\n type: userTaskCommandType.release,\r\n label: \"Release\",\r\n description: \"Release 'Self' taken task\",\r\n icon: iconUndo\r\n },\r\n {\r\n type: userTaskCommandType.take,\r\n label: \"Take\",\r\n description: \"Assign 'Self' assigned task to current user\",\r\n icon: iconAccountCheck\r\n }\r\n]);\r\n\r\n/**\r\n * find user Task Command\r\n * @param {number} type user Task Command type\r\n * @return {{icon: string, description: string, label: string, type: number}}\r\n */\r\nconst findUserTaskCommand = type => {\r\n return userTaskCommands?.find(el => el?.type === type);\r\n};\r\n\r\n/**\r\n * userTaskTypes\r\n * @type {({id: number, name: string, commandAccept: {label: string, icon: string, color: {variantType: string, variantNumber: number, name: string}}, commandReject: {label: string, icon: string, color: {variantType: string, variantNumber: number, name: string}}})[]}\r\n */\r\nconst userTaskTypes = Object.freeze([\r\n {\r\n id: userTaskType.unspecified,\r\n name: \"Unspecified\",\r\n commandAccept: {\r\n label: \"Unspecified\",\r\n icon: undefined,\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n4\r\n }\r\n },\r\n commandReject: {\r\n label: \"Cancel\",\r\n icon: iconClear,\r\n color: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n },\r\n {\r\n id: userTaskType.toDo,\r\n name: \"ToDo\",\r\n commandAccept: {\r\n label: \"Done\",\r\n icon: iconCheck,\r\n color: {\r\n name: colorTheme.success,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n commandReject: {\r\n label: \"Cancel\",\r\n icon: iconClear,\r\n color: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n },\r\n {\r\n id: userTaskType.approval,\r\n name: \"Approval\",\r\n commandAccept: {\r\n label: \"Approve\",\r\n icon: iconCheck,\r\n color: {\r\n name: colorTheme.success,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n commandReject: {\r\n label: \"Reject\",\r\n icon: iconClear,\r\n color: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n },\r\n {\r\n id: userTaskType.review,\r\n name: \"Review\",\r\n commandAccept: {\r\n label: \"Review\",\r\n icon: iconCheck,\r\n color: {\r\n name: colorTheme.success,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n commandReject: {\r\n label: \"Cancel\",\r\n icon: iconClear,\r\n color: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n }\r\n]);\r\n\r\n/**\r\n * find User Task Type\r\n * @param {Number|number} typeId user Task Type id\r\n * @return {{id: number, name: string, commandAccept: {label: string, icon: string, color: {variantType: string, variantNumber: number, name: string}}, commandReject: {label: string, icon: string, color: {variantType: string, variantNumber: number, name: string}}}}\r\n */\r\nconst findUserTaskType = typeId => {\r\n return userTaskTypes?.find(el => el?.id === typeId);\r\n};\r\n\r\n/**\r\n * find Command Accept Color Class\r\n * @param {Number|number} typeId User Task Type id\r\n * @return {String|string|undefined}\r\n */\r\nconst findCommandTaskAcceptColorClass = typeId => {\r\n const color = findUserTaskType(typeId)?.commandAccept?.color;\r\n\r\n return getColorClass(color);\r\n};\r\n\r\n/**\r\n * find Command Reject Color Class\r\n * @param {Number|number} typeId User Task Type id\r\n * @return {String|string|undefined}\r\n */\r\nconst findCommandTaskRejectColorClass = typeId => {\r\n const color = findUserTaskType(typeId)?.commandReject?.color;\r\n\r\n return getColorClass(color);\r\n};\r\n\r\n/**\r\n * Task Local Storage Keys\r\n * @type {{taskFilterOption: string}}\r\n */\r\nconst taskLocalStorageKeys = {\r\n taskFilterOption: \"taskFilterOption\"\r\n};\r\n\r\n/**\r\n * Task Headers for report\r\n * @type {({visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string})[]}\r\n */\r\nconst taskHeaders = Object.freeze([\r\n { text: \"Id\", value: \"taskId\", visible: true },\r\n { text: \"Name\", value: \"name\", visible: true },\r\n { text: \"Due\", value: \"dueDate\", visible: true },\r\n { text: \"Project\", value: \"projectName\", visible: true },\r\n { text: \"Assignee\", value: \"assignedTo\", visible: true },\r\n { text: \"Priority\", value: \"priority\", visible: true },\r\n { text: \"Status\", value: \"status\", visible: true },\r\n {\r\n align: \"end\",\r\n sortable: false,\r\n text: \"Actions\",\r\n value: \"actions\",\r\n visible: true\r\n }\r\n]);\r\n\r\n/**\r\n * user Task assignment Method\r\n * @type {Readonly<{auto: number, self: number, manual: number}>}\r\n */\r\nconst assignmentMethod = Object.freeze({\r\n auto: 0,\r\n manual: 1,\r\n self: 2\r\n});\r\n\r\n/**\r\n * user task assignment methods\r\n * @type {({method: number, name: string})[]}\r\n */\r\nconst assignmentMethods = Object.freeze([\r\n {\r\n method: assignmentMethod.auto,\r\n name: \"Auto\"\r\n },\r\n {\r\n method: assignmentMethod.manual,\r\n name: \"Manual\"\r\n },\r\n {\r\n method: assignmentMethod.self,\r\n name: \"Self\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Assignment Method\r\n * @param method\r\n * @return {{method: number, name: string}}\r\n */\r\nconst findAssignmentMethod = method =>\r\n assignmentMethods.find(am => am.method === method);\r\n\r\n/**\r\n * Is Valid Task entries\r\n * @param {{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}}} task\r\n * @return {boolean} true if Task Entries are valid\r\n */\r\nconst isValidTaskEntries = task => {\r\n return task\r\n ? !(!task.name || !task.assignment?.assignee || task.priority === undefined)\r\n : false;\r\n};\r\n\r\nexport {\r\n taskState,\r\n taskStates,\r\n taskPriority,\r\n taskPriorities,\r\n userTaskType,\r\n userTaskTypes,\r\n noteColorClass,\r\n dueDateTextClass,\r\n dueDateColorClass,\r\n dueDateMessage,\r\n findTaskState,\r\n findTaskStateColor,\r\n findTaskStateColorClass,\r\n priorityTextClass,\r\n findTaskPriority,\r\n findTaskPriorityColor,\r\n findUserTaskType,\r\n findCommandTaskAcceptColorClass,\r\n findCommandTaskRejectColorClass,\r\n taskLocalStorageKeys,\r\n taskHeaders,\r\n userTaskLabel,\r\n assignmentMethod,\r\n assignmentMethods,\r\n findAssignmentMethod,\r\n taskValidationColorClass,\r\n isValidTaskEntries,\r\n priorityColorClass,\r\n overdueTextClass,\r\n userTaskCommandType,\r\n userTaskCommands,\r\n findUserTaskCommand,\r\n taskCreatedColorClass\r\n};\r\n","/**\r\n * Using Java Script ECMAScript 2021\r\n */\r\nconst getters = {\r\n /**\r\n * Get current selected Application module name\r\n * @param state\r\n * @returns {String|string}\r\n */\r\n appModuleName: state => state.appModule?.name ?? \"\",\r\n\r\n /**\r\n * Get current selected Application module icon\r\n * @param state\r\n * @returns {String|string}\r\n */\r\n appModuleIcon: state => state.appModule?.icon ?? \"\",\r\n\r\n /**\r\n * Get current selected Application module title\r\n * @param state\r\n * @returns {String|string}\r\n */\r\n appModuleTitle: state => state.appModule?.title ?? \"\",\r\n\r\n /**\r\n * Is visible Left Drawer\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n visibleLeftDrawer: state => state.drawerLeft ?? true,\r\n\r\n /**\r\n * Is visible Right Drawer\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n visibleRightDrawer: state => state.drawerRight ?? false,\r\n\r\n /**\r\n * Enable Mini Drawer\r\n * @param state\r\n * @return {boolean}\r\n */\r\n enableMiniDrawer: state => state.enableMiniDrawer ?? true,\r\n\r\n /**\r\n * Uses Tabs as a Application selector\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n usesAppTabs: state => state.usesAppTabs ?? true,\r\n\r\n /**\r\n * App Bar collapse On Scroll\r\n * @param state\r\n * @return {boolean} true if App Bar collapse On Scroll\r\n */\r\n appBarCollapseOnScroll: state => state.appBarCollapseOnScroll ?? true,\r\n\r\n /**\r\n * Uses Sidebar Image\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n usesSidebarImage: state => state.usesSidebarImage ?? false,\r\n\r\n /**\r\n * Get dialog Toolbar Style\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n dialogToolbarStyle: state => state.dialogToolbarStyle ?? false,\r\n\r\n /**\r\n * Get Dialog Title Text Color\r\n * @param state\r\n * @returns {{name: string, variantType: string, variantNumber: number}}\r\n */\r\n dialogTitleColor: state => state.dialogTitleColor,\r\n\r\n /**\r\n * Application Bar Color\r\n * @param state\r\n * @returns {{name: String, variantType: String, variantNumber: Number}} Application Bar Color\r\n */\r\n appBarColor: state => state.appBarColor,\r\n\r\n /**\r\n * Application Bar Gradient\r\n * @param state\r\n * @return {string} Application Bar Gradient\r\n */\r\n appBarGradient: state => state.appBarGradient,\r\n\r\n /**\r\n * Data Table Toolbar Material Design Color\r\n * @param state\r\n * @returns {{variantType: string, variantNumber: number, name: string}}\r\n */\r\n dataTableToolbarColor: state => state.dataTableToolbarColor,\r\n\r\n /**\r\n * Get Menu Item colorName\r\n * @param state\r\n * @returns {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n menuItemColor: state => state.menuItemColor,\r\n\r\n /**\r\n * Get progress Color\r\n * @param state\r\n * @returns {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n progressColor: state => state.progressColor,\r\n\r\n /**\r\n * Get Button Color\r\n * @param state\r\n * @returns {{variantType: string, variantNumber: number, name: string}}\r\n */\r\n buttonColor: state => state.buttonColor,\r\n\r\n /**\r\n * Get Cancel Button Color\r\n * @param state\r\n * @returns {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n buttonCancelColor: state => state.buttonCancelColor,\r\n\r\n /**\r\n * Get command Buttons Text Style\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n buttonTextStyle: state => state.buttonTextStyle ?? true,\r\n\r\n /**\r\n * Get whether button is Outlined\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n buttonOutlined: state => state.buttonOutlined ?? false,\r\n\r\n /**\r\n * Get whether button is Rounded\r\n * @param state\r\n * @returns {boolean}\r\n */\r\n buttonRounded: state => state.buttonRounded ?? false,\r\n\r\n /**\r\n * Get button's Elevation\r\n * @param state\r\n * @returns {Number}\r\n */\r\n buttonElevation: state => state.buttonElevation ?? false,\r\n\r\n /**\r\n * Details Toolbar colors\r\n * Note: implements Material Design Color\r\n * @param state\r\n * @returns {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n detailsToolbarColor: state => state.detailsToolbarColor,\r\n\r\n /**\r\n * Delete Color\r\n * Note: implements Material Design Color\r\n * @param state\r\n * @returns {{name: String, variantType: String, variantNumber: Number}}\r\n */\r\n deleteColor: state => state.deleteColor,\r\n\r\n /**\r\n * records Fetch Count\r\n * @param state\r\n * @return {Number}\r\n */\r\n recordsFetchCount: state => state.recordsFetchCount\r\n};\r\n\r\nexport default getters;\r\n","const actions = {};\r\n\r\nexport default actions;\r\n","// services\r\nimport { storeAppModuleName } from \"@/services/solution/solutionService\";\r\nimport {\r\n storeUsesAppTabs,\r\n getStoredUsesAppTabs,\r\n getStoredUsesSidebarImage,\r\n storeUsesSidebarImage,\r\n storeDialogToolbarStyle,\r\n storeCommandButtonTextStyle,\r\n getDialogToolbarStyle,\r\n commandButtonTextStyle,\r\n storeCommandButtonOutlined,\r\n commandButtonOutlined,\r\n storeCommandButtonRounded,\r\n commandButtonRounded,\r\n storeCommandButtonElevation,\r\n commandButtonElevation,\r\n storeButtonColor,\r\n storeToolbarDetailsColor,\r\n getStoredButtonColor,\r\n getToolbarDetailsColor,\r\n storeAppBarCollapseOnScroll,\r\n appBarCollapseOnScroll,\r\n storeEnableMiniDrawer,\r\n enableMiniDrawer,\r\n storeRecordsFetchCount,\r\n getRecordsFetchCount\r\n} from \"@/services/user/userService\";\r\n\r\n// Axillary\r\nimport { isStringValueTrue } from \"@/utils\";\r\n\r\n// store\r\nimport {\r\n INITIALIZE_STATES,\r\n SET_APPLICATION,\r\n SET_DRAWER,\r\n SET_DRAWER_RIGHT,\r\n SET_DRAWER_ENABLE_MINI_DRAWER,\r\n SET_USES_APP_TABS,\r\n SET_USES_SIDEBAR_IMAGE,\r\n SET_DIALOG_TOOLBAR_STYLE,\r\n SET_COMMAND_COLOR,\r\n SET_COMMAND_BUTTONS_TEXT_STYLE,\r\n SET_COMMAND_BUTTONS_OUTLINED,\r\n SET_COMMAND_BUTTONS_ROUNDED,\r\n SET_COMMAND_BUTTONS_ELEVATION,\r\n SET_TOOLBAR_DETAILS_COLOR,\r\n SET_APP_BAR_COLLAPSE_ON_SCROLL,\r\n SET_RECORDS_FETCH_COUNT\r\n} from \"./mutation-types\";\r\n\r\nconst mutations = {\r\n /**\r\n * Initialize states by using saved local storage data\r\n * @param state\r\n */\r\n [INITIALIZE_STATES]: state => {\r\n try {\r\n let value = getStoredUsesAppTabs();\r\n if (value) {\r\n state.usesAppTabs = isStringValueTrue(value);\r\n }\r\n value = getStoredUsesSidebarImage();\r\n if (value) {\r\n state.usesSidebarImage = isStringValueTrue(value);\r\n }\r\n value = getDialogToolbarStyle();\r\n if (value) {\r\n state.dialogToolbarStyle = isStringValueTrue(value);\r\n }\r\n value = commandButtonTextStyle;\r\n if (value) {\r\n state.buttonTextStyle = isStringValueTrue(value);\r\n }\r\n value = commandButtonOutlined;\r\n if (value) {\r\n state.buttonOutlined = isStringValueTrue(value);\r\n }\r\n value = commandButtonRounded;\r\n if (value) {\r\n state.buttonRounded = isStringValueTrue(value);\r\n }\r\n value = commandButtonElevation;\r\n if (value) {\r\n state.buttonElevation = value;\r\n }\r\n value = getStoredButtonColor();\r\n if (value) {\r\n state.buttonColor = isStringValueTrue(value);\r\n }\r\n value = getToolbarDetailsColor();\r\n if (value) {\r\n state.toolbarDetailsColor = isStringValueTrue(value);\r\n }\r\n value = appBarCollapseOnScroll;\r\n if (value) {\r\n state.appBarCollapseOnScroll = isStringValueTrue(value);\r\n }\r\n value = enableMiniDrawer;\r\n if (value) {\r\n state.enableMiniDrawer = isStringValueTrue(value);\r\n }\r\n value = getRecordsFetchCount();\r\n console.log(`INITIALIZE_STATES.getRecordsFetchCount() value:`, value);\r\n if (value && !isNaN(value)) {\r\n state.recordsFetchCount = Number(value);\r\n console.log(\r\n `INITIALIZE_STATES.Set state.recordsFetchCount:`,\r\n state.recordsFetchCount\r\n );\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * Set current appModule\r\n * @param state\r\n * @param {{title: String, icon: String, name: String}} appModule\r\n * @constructor\r\n */\r\n [SET_APPLICATION]: (state, appModule) => {\r\n state.appModule = appModule;\r\n storeAppModuleName(state.appModule.name);\r\n },\r\n /**\r\n * Show/Hide drawerLeft\r\n * @param state\r\n * @param {Boolean} payload\r\n * @constructor\r\n */\r\n [SET_DRAWER]: (state, payload) => {\r\n state.drawerLeft = payload;\r\n },\r\n /**\r\n * Show/Hide right drawerLeft\r\n * @param state\r\n * @param {boolean} payload\r\n * @constructor\r\n */\r\n [SET_DRAWER_RIGHT]: (state, payload) => {\r\n state.drawerRight = payload;\r\n },\r\n /**\r\n * Enable Mini Drawer\r\n * @param state\r\n * @param {boolean} payload\r\n */\r\n [SET_DRAWER_ENABLE_MINI_DRAWER]: (state, payload) => {\r\n state.enableMiniDrawer = payload;\r\n storeEnableMiniDrawer(state.enableMiniDrawer);\r\n },\r\n\r\n /**\r\n * Uses Tabs as a Application selector\r\n * @param state\r\n * @param {boolean} payload\r\n * @constructor\r\n */\r\n [SET_USES_APP_TABS]: (state, payload) => {\r\n state.usesAppTabs = payload;\r\n storeUsesAppTabs(state.usesAppTabs);\r\n },\r\n\r\n /**\r\n * puts the app-bar into a collapsed state when scrolling\r\n * @param state\r\n * @param {boolean} payload\r\n */\r\n [SET_APP_BAR_COLLAPSE_ON_SCROLL]: (state, payload) => {\r\n state.appBarCollapseOnScroll = payload;\r\n storeAppBarCollapseOnScroll(state.appBarCollapseOnScroll);\r\n },\r\n\r\n /**\r\n * Uses Sidebar Image\r\n * @param state\r\n * @param {Boolean} payload\r\n */\r\n [SET_USES_SIDEBAR_IMAGE]: (state, payload) => {\r\n state.usesSidebarImage = payload;\r\n storeUsesSidebarImage(state.usesSidebarImage);\r\n },\r\n [SET_DIALOG_TOOLBAR_STYLE]: (state, payload) => {\r\n state.dialogToolbarStyle = payload;\r\n storeDialogToolbarStyle(state.dialogToolbarStyle);\r\n },\r\n [SET_COMMAND_COLOR]: (state, payload) => {\r\n state.buttonColor = payload;\r\n storeButtonColor(state.commandColor);\r\n },\r\n [SET_COMMAND_BUTTONS_TEXT_STYLE]: (state, payload) => {\r\n state.buttonTextStyle = payload;\r\n storeCommandButtonTextStyle(state.buttonTextStyle);\r\n },\r\n [SET_COMMAND_BUTTONS_OUTLINED]: (state, payload) => {\r\n state.buttonOutlined = payload;\r\n storeCommandButtonOutlined(state.buttonOutlined);\r\n },\r\n [SET_COMMAND_BUTTONS_ROUNDED]: (state, payload) => {\r\n state.buttonRounded = payload;\r\n storeCommandButtonRounded(state.buttonRounded);\r\n },\r\n [SET_COMMAND_BUTTONS_ELEVATION]: (state, payload) => {\r\n state.buttonElevation = payload;\r\n storeCommandButtonElevation(state.buttonElevation);\r\n },\r\n\r\n [SET_TOOLBAR_DETAILS_COLOR]: (state, payload) => {\r\n state.toolbarDetailsColor = payload;\r\n storeToolbarDetailsColor(state.toolbarDetailsColor);\r\n },\r\n\r\n [SET_RECORDS_FETCH_COUNT]: (state, payload) => {\r\n state.recordsFetchCount = payload;\r\n console.log(\r\n `SET_RECORDS_FETCH_COUNT.state.recordsFetchCount: `,\r\n state.recordsFetchCount\r\n );\r\n storeRecordsFetchCount(state.recordsFetchCount?.toString());\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\n\r\n// design\r\nimport {\r\n colorMD,\r\n colorTheme,\r\n variantNumber,\r\n variantType\r\n} from \"@/design/colors/Color\";\r\nimport { indigoGradient } from \"@/design/gradients/gradientConst\";\r\n\r\nconst state = {\r\n /**\r\n * Current selected Application's module\r\n * @type {{name: String, title: String, icon: String}}\r\n */\r\n appModule: undefined,\r\n\r\n /**\r\n * Left drawer visibility\r\n * @type boolean\r\n */\r\n drawerLeft: true,\r\n\r\n /**\r\n * Right drawer visibility\r\n * @type boolean\r\n */\r\n drawerRight: false,\r\n\r\n /**\r\n * Uses Tabs as a Application selector\r\n * @type boolean\r\n */\r\n usesAppTabs: true,\r\n\r\n /**\r\n * Puts the app-bar into a collapsed state when scrolling\r\n * @type boolean\r\n */\r\n appBarCollapseOnScroll: false,\r\n\r\n /**\r\n * Uses Sidebar Image\r\n * @type {boolean}\r\n */\r\n usesSidebarImage: false,\r\n\r\n /**\r\n * enable Mini (shrink) Drawer\r\n */\r\n enableMiniDrawer: true,\r\n\r\n /**\r\n * Dialog with/without Toolbar\r\n * @type {boolean}\r\n */\r\n dialogToolbarStyle: false,\r\n\r\n /**\r\n * Application Bar Material Design Color\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n appBarColor: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n },\r\n\r\n /**\r\n * Application Bar Gradient used to apply a simple gradient overlay to the appBar background image\r\n */\r\n appBarGradient: indigoGradient,\r\n\r\n /**\r\n * data Table Toolbar Material Design Color\r\n */\r\n dataTableToolbarColor: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n },\r\n\r\n /**\r\n * Dialog Title Text Material Design Color\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n dialogTitleColor: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n },\r\n\r\n /**\r\n * Details Toolbar Material Material Design Color\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n detailsToolbarColor: {\r\n name: colorMD.green,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n1\r\n },\r\n\r\n /**\r\n * Menu Item Material Design Color\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n menuItemColor: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n },\r\n\r\n /**\r\n * Progress Material Design Color\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n progressColor: {\r\n name: colorTheme.primary,\r\n variantType: undefined,\r\n variantNumber: undefined\r\n },\r\n\r\n /**\r\n * Command Buttons Material Design Color\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n buttonColor: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n },\r\n\r\n /**\r\n * Command Button Text Style\r\n * @type {Boolean}\r\n */\r\n buttonTextStyle: true,\r\n\r\n /**\r\n * Command Button Outlined\r\n * @type {Boolean}\r\n */\r\n buttonOutlined: false,\r\n\r\n /**\r\n * Command Button Rounded\r\n * @type {Boolean}\r\n */\r\n buttonRounded: false,\r\n\r\n /**\r\n * Command Button Elevation\r\n * @type {Number}\r\n */\r\n buttonElevation: 0,\r\n\r\n /**\r\n * Dialog Cancel Button color (implements Material Design Color)\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n buttonCancelColor: {\r\n name: colorTheme.secondary,\r\n variantType: undefined,\r\n variantNumber: undefined\r\n },\r\n\r\n /**\r\n * Delete Color (implements Material Design Color)\r\n * @type {{name:String, variantType:String, variantNumber:Number}}\r\n */\r\n deleteColor: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n },\r\n\r\n /**\r\n * records Fetch Count\r\n * @type {Number}\r\n */\r\n recordsFetchCount: 50\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","/**\r\n * category module's getters\r\n * Using JavaScript ECMAScript 2021\r\n */\r\nconst getters = {\r\n /**\r\n * Get is category drawer Mini\r\n * @param state\r\n * @return {boolean}\r\n */\r\n drawerMini: state => state.drawerMini,\r\n\r\n /**\r\n * Get selected Module (category) Item (category)\r\n * @param state\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 selectedModuleItem: state => state.category,\r\n\r\n /**\r\n * Get selected Module (category) Item Id (id)\r\n * @param state\r\n * @return {*|number}\r\n */\r\n selectedModuleItemId: state => state.category?.id ?? -1,\r\n\r\n /**\r\n * Get selected Module (category) Item name\r\n * @param state\r\n * @return {string}\r\n */\r\n selectedModuleItemName: state => state.category?.name ?? \"\",\r\n\r\n /**\r\n * Get documents\r\n * @param state\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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 documents: state => state.documents ?? [],\r\n\r\n /**\r\n * find Document\r\n * @param state\r\n * @param getters\r\n * @return {function(*): T}\r\n */\r\n findDocument: (state, getters) => id =>\r\n getters.documents?.find(el => (el?.id ?? -1) === id)\r\n};\r\n\r\nexport default getters;\r\n","// CATEGORIES\r\nconst SET_CATEGORIES = \"SET_CATEGORIES\";\r\nconst SET_CATEGORY = \"SET_CATEGORY\";\r\n\r\nexport { SET_CATEGORIES, SET_CATEGORY };\r\n","// Web API service calls\r\nimport {\r\n countChildren,\r\n getCategory,\r\n getChildren,\r\n getDocument,\r\n getRecord,\r\n lockRecord as apiLockRecord,\r\n setDraftRecord as apiSetDraftRecord,\r\n setReadOnlyRecord as apiSetReadOnlyRecord,\r\n unLockRecord as apiUnLockRecord,\r\n uploadFile as apiUploadFile,\r\n uploadCompoundDocumentFile as apiUploadCompoundDocumentFile,\r\n checkInFile as apiCheckInFile,\r\n checkOutFile as apiCheckOutFile,\r\n checkOutFileForSign as apiCheckOutFileForSign,\r\n releaseFile as apiReleaseFile,\r\n getFileVersions,\r\n getFileVersion,\r\n downloadImageFileVersion as apiDownloadImageFileVersion,\r\n deleteRecord as apiDeleteRecord,\r\n updateRecord as apiUpdateRecord,\r\n getRecordTextFieldValue,\r\n lookup,\r\n checkInScannedFileToRecord as apiCheckInScannedFileToRecord,\r\n scanToCheckedInFile as apiCheckInScannedFileToFile,\r\n checkInEditedDocument as apiCheckInEditedDocument,\r\n getRecordInfo as apiGetRecordInfo,\r\n moveRecord as apiMoveRecord,\r\n copyRecord as apiCopyRecord,\r\n createShortcut as apiCreateShortcut,\r\n deleteRecordShortcut as apiDeleteRecordShortcut,\r\n moveRecordShortcut as apiMoveRecordShortcut,\r\n copyRecordShortcut as apiCopyRecordShortcut,\r\n getRecordShortcut,\r\n getRecordChildren,\r\n restoreDeletedRecord\r\n} from \"@/services/api/apiContent\";\r\n\r\n// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\n\r\n// shared record mutation types\r\nimport {\r\n SET_DOCUMENT,\r\n SET_DOCUMENT_SEARCH_CATEGORY,\r\n SET_DOCUMENTS,\r\n SET_RECORD,\r\n SET_RECORD_DRAFT,\r\n SET_RECORD_LOCK,\r\n SET_RECORD_READ_ONLY,\r\n SET_UPLOAD_FILE_PROGRESS,\r\n SET_FILE_VERSIONS,\r\n SET_FILE_VERSION,\r\n SET_RECORD_DELETED,\r\n SET_RECORD_EDITED,\r\n SET_RECORD_NEW_CATEGORY,\r\n SET_RECORD_TEXT_FIELD_VALUE,\r\n SET_RECORD_LOOKUP_DATA,\r\n UPDATE_RECORD_FILE_VERSION,\r\n UPDATE_RECORD_INFO,\r\n SET_RECORDS,\r\n SET_RECORD_NEW_AND_CATEGORY\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// services\r\nimport {\r\n changeRecordCategory,\r\n createRecordFileVersion,\r\n ensureValidRecordFiledValues,\r\n filterFilesAndDocuments,\r\n getInputMappings,\r\n updatableRecordFieldValues\r\n} from \"@/services/record/recordService\";\r\n\r\n// model\r\nimport { categoryAll } from \"@/model/category/categoryModel\";\r\nimport { findRecordType, recordType } from \"@/model/record/recordModel\";\r\n\r\nconst scriptName = \"record-actions\";\r\n\r\n/**\r\n * Set current record\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {{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}}, 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\nasync function setRecord(context, id) {\r\n try {\r\n let record = (await getRecord(id))?.data;\r\n const category = (await getCategory(record?.categoryId ?? -1))?.data;\r\n\r\n record = ensureValidRecordFiledValues(record, category);\r\n\r\n const version =\r\n (record?.recordTypeId ?? -1) === recordType.FILE\r\n ? (await getFileVersion(record.id, record.version))?.data\r\n : undefined;\r\n\r\n const payload = {\r\n record: record,\r\n category: category,\r\n version: version\r\n };\r\n\r\n context.commit(SET_RECORD, payload);\r\n\r\n return record;\r\n } catch (e) {\r\n return await handleError(e, `Unable to set current Record. (id: ${id})`);\r\n }\r\n}\r\n\r\n/**\r\n * Set Record Shortcut\r\n * @param context\r\n * @param payload {{id:Number, parentId: Number}}\r\n * @return {Promise<*>}\r\n */\r\nasync function setRecordShortcut(context, payload) {\r\n try {\r\n let record = (await getRecordShortcut(payload))?.data;\r\n const category = (await getCategory(record?.categoryId ?? -1))?.data;\r\n\r\n record = ensureValidRecordFiledValues(record, category);\r\n\r\n const recordPayload = {\r\n record: record,\r\n category: category\r\n };\r\n\r\n //Set Record with all fields\r\n context.commit(SET_RECORD, recordPayload);\r\n\r\n return record;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to set current Record. (id: ${payload.id})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Set current Document\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {{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}}, 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\nasync function setDocument(context, id) {\r\n try {\r\n const document = (await getDocument(id))?.data;\r\n const category = (await getCategory(document?.categoryId ?? -1))?.data;\r\n\r\n const payload = {\r\n document: document,\r\n category: category\r\n };\r\n\r\n context.commit(SET_DOCUMENT, payload);\r\n\r\n return document;\r\n } catch (e) {\r\n return await handleError(e, `Unable to set Document. (id: ${id})`);\r\n }\r\n}\r\n\r\n/**\r\n * Set current documents\r\n * @param context\r\n * @param {Number|number} id\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\nasync function setDocuments(context, id) {\r\n if (id < 0) {\r\n context.commit(SET_DOCUMENTS, []);\r\n return Promise.resolve([]);\r\n }\r\n return countChildren(id)\r\n .then(response => {\r\n return response.data;\r\n })\r\n .then(count => {\r\n return getChildren(id, count);\r\n })\r\n .then(response => {\r\n const data = response.data;\r\n const docs = filterFilesAndDocuments(data);\r\n\r\n context.commit(SET_DOCUMENTS, docs);\r\n return response.data;\r\n })\r\n .catch(error => handleError(error));\r\n}\r\n\r\n/**\r\n * Set current documents\r\n * @param context\r\n * @param {{id:Number, recordIndex:Number, count: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\nasync function setChildrenDocuments(context, payload) {\r\n const id = payload?.id ?? -1;\r\n if (id < 0) {\r\n context.commit(SET_DOCUMENTS, []);\r\n return Promise.resolve([]);\r\n }\r\n return getRecordChildren(payload)\r\n .then(response => {\r\n const data = response.data;\r\n const docs = filterFilesAndDocuments(data);\r\n\r\n context.commit(SET_DOCUMENTS, docs);\r\n return response.data;\r\n })\r\n .catch(error => handleError(error));\r\n}\r\n\r\n/**\r\n * Clear current list of documents\r\n * @param context\r\n */\r\nfunction clearDocuments(context) {\r\n context.commit(SET_DOCUMENTS, []);\r\n}\r\n\r\n/**\r\n * Set File(s) of current selected file-record\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\nasync function setFileDocuments(context, id) {\r\n try {\r\n const response = await getRecord(id);\r\n const record = response?.data;\r\n\r\n const files = [];\r\n if ((record?.recordTypeId ?? recordType.RECORD) === recordType.FILE) {\r\n files.push(record);\r\n }\r\n\r\n const docs = filterFilesAndDocuments(files);\r\n\r\n context.commit(SET_DOCUMENTS, docs);\r\n } catch (e) {\r\n return await handleError(e, `Unable to set Files. (id: ${id})`);\r\n }\r\n}\r\n\r\n/**\r\n * Set File Versions of current selected file\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\nasync function setFileVersions(context, id) {\r\n try {\r\n const response = await getFileVersions(id);\r\n const versions = response?.data ?? [];\r\n\r\n console.log(`setFileVersions() versions:`, versions);\r\n\r\n const fileVersions = [];\r\n\r\n versions.forEach(v => {\r\n fileVersions.push(createRecordFileVersion(v));\r\n });\r\n\r\n context.commit(SET_FILE_VERSIONS, fileVersions);\r\n } catch (e) {\r\n return await handleError(e, `Unable to set File Versions. (id: ${id})`);\r\n }\r\n}\r\n\r\n/**\r\n * Set File Version of current selected file\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{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}}, 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\nasync function setFileVersion(context, payload) {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n\r\n try {\r\n const fileVersion = (await getFileVersion(id, version))?.data;\r\n const category = (await getCategory(fileVersion?.categoryId ?? -1))?.data;\r\n\r\n const payload = {\r\n version: fileVersion,\r\n category: category\r\n };\r\n\r\n context.commit(SET_FILE_VERSION, payload);\r\n\r\n return fileVersion;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to set File Version. (id: ${id}), (version: ${version})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * save Record\r\n * @param context\r\n * @param {{ record, category }} payload\r\n * @return {Promise<{record}>}\r\n */\r\nasync function saveRecord(context, payload) {\r\n const recordType = payload?.record?.recordType ?? \"record\";\r\n const name = payload?.record?.name ?? \"\";\r\n const id = payload?.record?.id ?? -1;\r\n\r\n try {\r\n // Record Category\r\n const category = payload?.category;\r\n const categoryId = category?.id ?? -1;\r\n const fieldValues = updatableRecordFieldValues(payload?.record);\r\n\r\n const model = {\r\n name: name,\r\n categoryId: categoryId,\r\n fieldValues: fieldValues ?? [],\r\n flyingFields: payload?.record?.flyingFields ?? [],\r\n isLink: payload?.record?.isLink ?? false,\r\n parentId: payload?.record?.parentId ?? -1\r\n };\r\n\r\n const response = await apiUpdateRecord(model, id);\r\n const record = ensureValidRecordFiledValues(response?.data, category);\r\n\r\n const updatePayload = {\r\n record: record,\r\n category: category\r\n };\r\n\r\n context.commit(SET_RECORD_EDITED, updatePayload);\r\n\r\n return record;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to set save ${recordType} (${id}) ${name}`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Delete Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise}\r\n */\r\nasync function deleteRecord(context, payload) {\r\n const id = payload?.id ?? -1;\r\n\r\n try {\r\n const response = await apiDeleteRecord(id);\r\n const record = response?.data;\r\n\r\n context.commit(SET_RECORD_DELETED, id);\r\n\r\n return record;\r\n } catch (e) {\r\n return await handleError(e, `Unable to delete record. (id: ${id})`);\r\n }\r\n}\r\n\r\n/**\r\n * set Search Category\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\nasync function setSearchCategory(context, id) {\r\n if (id < 0) {\r\n return new Promise(resolutionFunc => {\r\n context.commit(SET_DOCUMENT_SEARCH_CATEGORY, categoryAll);\r\n resolutionFunc(categoryAll);\r\n });\r\n }\r\n return getCategory(id)\r\n .then(response => {\r\n context.commit(SET_DOCUMENT_SEARCH_CATEGORY, response.data);\r\n return response.data;\r\n })\r\n .catch(e => handleError(e, `Unable to set Search Category. (id: ${id})`));\r\n}\r\n\r\n/**\r\n * Lock Record\r\n * @param context\r\n * @param {Number|number} id\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\nasync function lockRecord(context, id) {\r\n return apiLockRecord(id)\r\n .then(response => {\r\n context.commit(SET_RECORD_LOCK, response?.data ?? false);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to Lock Record (id: ${id})`));\r\n}\r\n\r\n/**\r\n * Un Lock Record\r\n * @param context\r\n * @param {Number|number} id\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\nasync function unLockRecord(context, id) {\r\n return apiUnLockRecord(id)\r\n .then(response => {\r\n context.commit(SET_RECORD_LOCK, response?.data ?? false);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to Un Lock Record (id: ${id})`));\r\n}\r\n\r\n/**\r\n * set Draft Record\r\n * @param context\r\n * @param {Number|number} id\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\nasync function setDraftRecord(context, id) {\r\n return apiSetDraftRecord(id)\r\n .then(response => {\r\n context.commit(SET_RECORD_DRAFT, response?.data ?? false);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to set Draft Record (id: ${id})`));\r\n}\r\n\r\n/**\r\n * set Read Only Record\r\n * @param context\r\n * @param {Number|number} id\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\nasync function setReadOnlyRecord(context, id) {\r\n return apiSetReadOnlyRecord(id)\r\n .then(response => {\r\n context.commit(SET_RECORD_READ_ONLY, response?.data ?? false);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to set Read Only Record (id: ${id})`));\r\n}\r\n\r\n/**\r\n * Upload File to an empty record\r\n * @param context\r\n * @param {{id:Number, file:any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} 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\nasync function uploadFile(context, payload) {\r\n const id = payload?.id ?? -1;\r\n\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n const file = payload?.file;\r\n const response = await apiUploadFile(\r\n id,\r\n file,\r\n payload.uploadFileModel,\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n\r\n context.commit(UPDATE_RECORD_FILE_VERSION, response?.data);\r\n await setFileVersions(context, id);\r\n\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(e, `Unable to upload File (id: ${id}`);\r\n }\r\n}\r\n\r\n/**\r\n * upload Compound Document File\r\n * @param context\r\n * @param {{id: Number, file: any, insertBeforePage: Number, enqueue: Boolean, comments: string}} payload\r\n * @return {Promise, 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}>>} File Model\r\n */\r\nasync function uploadCompoundDocumentFile(context, payload) {\r\n const id = payload?.id ?? -1;\r\n\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n const file = payload?.file;\r\n const response = await apiUploadCompoundDocumentFile(\r\n id,\r\n file,\r\n payload?.insertBeforePage ?? false,\r\n payload?.enqueue ?? false,\r\n payload?.comments ?? \"\",\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n\r\n //context.commit(SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION, response?.data);\r\n console.log(\r\n `${scriptName} uploadCompoundDocumentFile() response?.data`,\r\n response?.data\r\n );\r\n\r\n // Update Records List after file insertion in Compound Document\r\n // response.data is child files of compound document\r\n const compoundPayload = {\r\n id: id,\r\n recordList: response?.data\r\n };\r\n await updateCompoundFileList(context, compoundPayload);\r\n\r\n return response?.data;\r\n } catch (e) {\r\n console.error(e?.toString());\r\n return await handleError(\r\n e,\r\n `Unable to upload File of Compound Document (id: ${id})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Update Compound File List\r\n * @param context\r\n * @param {{recordList: 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}>, id: (Number|number)}} payload\r\n */\r\nasync function updateCompoundFileList(context, payload) {\r\n try {\r\n context.commit(SET_RECORDS, payload.recordList);\r\n\r\n //Necessary to update record Info when upload is done\r\n //TODO: Find better Approach\r\n await getRecordInfo(context, payload.id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to Get Record Info (id: ${payload.id}`);\r\n }\r\n}\r\n\r\n/**\r\n * Get Record Info\r\n * @param context\r\n * @param {Number|number} id record id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nasync function getRecordInfo(context, id) {\r\n try {\r\n const recordInfo = (await apiGetRecordInfo(id)).data;\r\n\r\n context.commit(UPDATE_RECORD_INFO, recordInfo);\r\n\r\n return recordInfo;\r\n } catch (e) {\r\n return await handleError(e, `Unable to Get Record Info (id: ${id}`);\r\n }\r\n}\r\n\r\n/**\r\n * check Out File\r\n * @param context\r\n * @param {Number|number} id record id\r\n * @return {Promise<{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}}, 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}[]}>} RecordItemModel\r\n */\r\nasync function checkOutFile(context, id) {\r\n try {\r\n const recordInfo = (await apiCheckOutFile(id)).data;\r\n\r\n context.commit(UPDATE_RECORD_INFO, recordInfo);\r\n\r\n // Update file history\r\n await setFileVersions(context, recordInfo.id);\r\n\r\n return recordInfo;\r\n } catch (e) {\r\n return await handleError(e, `Unable to check Out File (id: ${id}`);\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 * @param context\r\n * @param {Number|number} id record id\r\n * @return {Promise<{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}}, 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}[]}>} RecordItemModel\r\n */\r\nasync function checkOutFileForSign(context, id) {\r\n try {\r\n const recordInfo = (await apiCheckOutFileForSign(id)).data;\r\n\r\n console.log(\"checked Out File For Sign recordInfo:\", recordInfo);\r\n\r\n context.commit(UPDATE_RECORD_INFO, recordInfo);\r\n\r\n // Update file history\r\n await setFileVersions(context, recordInfo.id);\r\n\r\n return recordInfo;\r\n } catch (e) {\r\n return await handleError(e, `Unable to check Out File (id: ${id}`);\r\n }\r\n}\r\n\r\n/**\r\n * release File\r\n * @param context\r\n * @param {Number|number} id record id\r\n * @return {Promise<{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}}, 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}[]}>} RecordItemModel\r\n */\r\nasync function releaseFile(context, id) {\r\n try {\r\n const recordInfo = (await apiReleaseFile(id)).data;\r\n\r\n context.commit(UPDATE_RECORD_INFO, recordInfo);\r\n\r\n // Update file history\r\n if (recordInfo.recordTypeId === recordType.FILE) {\r\n await setFileVersions(context, recordInfo.id);\r\n }\r\n\r\n return recordInfo;\r\n } catch (e) {\r\n return await handleError(e, `Unable to check Out File (id: ${id}`);\r\n }\r\n}\r\n\r\n/**\r\n * check In File\r\n * @param context\r\n * @param {{id: Number, file: any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} 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\nasync function checkInFile(context, payload) {\r\n const id = payload?.id ?? -1;\r\n\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n // Check In File\r\n const file = payload?.file;\r\n const response = await apiCheckInFile(\r\n id,\r\n file,\r\n payload.uploadFileModel,\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n\r\n context.commit(UPDATE_RECORD_FILE_VERSION, response?.data);\r\n\r\n // Update file history\r\n await setFileVersions(context, id);\r\n\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(e, `Unable to upload File (id: ${id}`);\r\n }\r\n}\r\n\r\n/**\r\n * check In EditedRecord\r\n * @param context\r\n * @param 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\nasync function checkInEditedDocument(context, payload) {\r\n try {\r\n console.log(payload);\r\n const response =\r\n payload.version === 0\r\n ? await apiCheckInScannedFileToRecord(payload)\r\n : await apiCheckInEditedDocument(payload);\r\n\r\n context.commit(UPDATE_RECORD_FILE_VERSION, response?.data);\r\n\r\n // Update file history\r\n await setFileVersions(context, payload.id);\r\n\r\n return response;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to checkin Edited File by id: ${payload?.id ?? -1}`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * download Image File Version\r\n * @param context\r\n * @param payload\r\n * @return {Promise<*>}\r\n */\r\nasync function downloadImageFileVersion(context, payload) {\r\n try {\r\n return await apiDownloadImageFileVersion(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download File Version by (id: ${payload?.id ??\r\n -1} version: ${payload?.version ?? -1})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * set new/edit Record Category\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\nasync function setNewRecordCategory(context, payload) {\r\n const id = payload ?? -1;\r\n\r\n try {\r\n const response = await getCategory(id);\r\n const categoryNew = response?.data;\r\n\r\n if (context.state.recordNew) {\r\n const recordNew = context.state.recordNew;\r\n const categoryOld = context.state.recordNewCategory;\r\n\r\n console.log(\r\n `setNewRecordCategory() recordNew.categoryId:`,\r\n recordNew?.categoryId\r\n );\r\n console.log(`setNewRecordCategory() categoryNew:`, categoryNew);\r\n console.log(`setNewRecordCategory() categoryOld:`, categoryOld);\r\n\r\n await changeRecordCategory(recordNew, categoryOld, categoryNew);\r\n\r\n context.commit(SET_RECORD_NEW_AND_CATEGORY, {\r\n record: recordNew,\r\n category: categoryNew\r\n });\r\n } else {\r\n context.commit(SET_RECORD_NEW_CATEGORY, categoryNew);\r\n }\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable set New Record Category by (category id: ${id})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * set current record Text field value\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\nasync function setRecordTextFieldValue(context, payload) {\r\n const fieldId = payload ?? -1;\r\n const recordId = context?.state?.record?.id ?? -1;\r\n\r\n try {\r\n const response = await getRecordTextFieldValue(recordId, fieldId);\r\n\r\n context.commit(SET_RECORD_TEXT_FIELD_VALUE, {\r\n id: fieldId,\r\n value: response?.data ?? \"\"\r\n });\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable set current record Text Field value by (Record id: ${recordId} (Field id: ${fieldId})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * set Database Lookup Data for current inserting/editing record\r\n * @param context\r\n * @return {Promise<{id:number, value:any}[]>}\r\n */\r\nasync function setDatabaseLookupData(context) {\r\n // current inserting/editing record category\r\n const category = context?.state?.recordNewCategory;\r\n const categoryId = category?.id ?? -1;\r\n\r\n try {\r\n // current inserting/editing record\r\n const record = context?.state?.recordNew;\r\n const inputMappings = getInputMappings(record, category);\r\n const response = await lookup(categoryId, inputMappings);\r\n\r\n context.commit(SET_RECORD_LOOKUP_DATA, response?.data);\r\n\r\n return Promise.resolve(response?.data);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable set set Database Lookup Data by (category id: ${categoryId})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * check In Scanned File of current selected record\r\n * TODO: Determine if still Used\r\n * @param context\r\n * @param {{insert: boolean, insertAtBeginning: boolean}|undefined} 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\nasync function checkInScannedFile(context, payload = undefined) {\r\n const record = context?.state?.record;\r\n const id = context?.state?.record?.id ?? -1;\r\n const recordTypeId = record?.recordTypeId ?? -1;\r\n\r\n try {\r\n let response = undefined;\r\n\r\n switch (recordTypeId) {\r\n case recordType.RECORD: {\r\n response = await apiCheckInScannedFileToRecord(id);\r\n context.commit(UPDATE_RECORD_FILE_VERSION, response?.data);\r\n break;\r\n }\r\n case recordType.FILE: {\r\n const insert = payload?.insert ?? false;\r\n const insertAtBeginning = payload?.insertAtBeginning ?? false;\r\n response = await apiCheckInScannedFileToFile(\r\n id,\r\n insert,\r\n insertAtBeginning\r\n );\r\n context.commit(UPDATE_RECORD_FILE_VERSION, response?.data);\r\n\r\n // Update file history\r\n await setFileVersions(context, id);\r\n break;\r\n }\r\n case recordType.DOCUMENT: {\r\n throw `Check In Scanned image file to: ${findRecordType(recordTypeId)\r\n ?.name ?? \"unknown\"} not implemented yet.`;\r\n }\r\n default: {\r\n throw `Check In Scanned image file to: ${findRecordType(recordTypeId)\r\n ?.name ?? \"unknown\"} not supported.`;\r\n }\r\n }\r\n\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to Check In uploaded scanned image file (record id: ${id})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * move Record\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst moveRecord = async (context, payload) => {\r\n return await apiMoveRecord(payload);\r\n //context.commit(SET_RECORD, response?.data);\r\n};\r\n\r\n/**\r\n * copy Record\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst copyRecord = async (context, payload) => {\r\n return await apiCopyRecord(payload);\r\n //context.commit(SET_RECORD, response?.data);\r\n};\r\n\r\n/**\r\n * move Record Shortcut\r\n * @param context\r\n * @param {{recordId:Number,recordParentId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst moveRecordShortcut = async (context, payload) => {\r\n return await apiMoveRecordShortcut(payload);\r\n};\r\n\r\n/**\r\n * copy Record Shortcut\r\n * @param context\r\n * @param {{recordId:Number,recordParentId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst copyRecordShortcut = async (context, payload) => {\r\n return await apiCopyRecordShortcut(payload);\r\n};\r\n\r\n/**\r\n * create Record Shortcut\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst createShortcut = async (context, payload) => {\r\n return await apiCreateShortcut(payload);\r\n};\r\n\r\n/**\r\n * DeleteRecordShortcut\r\n * @param context\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst deleteRecordShortcut = async (context, payload) => {\r\n const response = await apiDeleteRecordShortcut(payload);\r\n if (response) context.commit(SET_RECORD_DELETED, payload.id);\r\n return response?.data;\r\n};\r\n\r\n/**\r\n * Restore Record\r\n * @param context\r\n * @param id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\nconst restoreRecord = async (context, id) => {\r\n try {\r\n const response = await restoreDeletedRecord(id);\r\n const record = response?.data;\r\n if (record) context.commit(UPDATE_RECORD_INFO, record);\r\n return record;\r\n } catch (e) {\r\n return await handleError(e, `Unable to Restore Record`);\r\n }\r\n};\r\n\r\nexport {\r\n setRecord,\r\n setDocument,\r\n setDocuments,\r\n clearDocuments,\r\n setFileDocuments,\r\n setSearchCategory,\r\n lockRecord,\r\n unLockRecord,\r\n setDraftRecord,\r\n setReadOnlyRecord,\r\n uploadFile,\r\n uploadCompoundDocumentFile,\r\n checkOutFile,\r\n checkOutFileForSign,\r\n checkInFile,\r\n releaseFile,\r\n setFileVersions,\r\n setFileVersion,\r\n downloadImageFileVersion,\r\n saveRecord,\r\n deleteRecord,\r\n setNewRecordCategory,\r\n setRecordTextFieldValue,\r\n setDatabaseLookupData,\r\n checkInScannedFile,\r\n checkInEditedDocument,\r\n updateCompoundFileList,\r\n moveRecord,\r\n copyRecord,\r\n createShortcut,\r\n deleteRecordShortcut,\r\n copyRecordShortcut,\r\n moveRecordShortcut,\r\n setRecordShortcut,\r\n setChildrenDocuments,\r\n restoreRecord\r\n};\r\n","import { getAxios } from \"@/services/api/apiCommon\";\r\n\r\n/**\r\n * Agenda Templates\r\n */\r\n\r\n/**\r\n * AgendaMeetingTemplates web api controller name\r\n * @type {string}\r\n */\r\nconst meetingTemplates = \"AgendaMeetingTemplates\";\r\n\r\n/**\r\n * agenda Meetings web api controller name\r\n * @type {string}\r\n */\r\nconst agendaMeetings = \"AgendaMeetings\";\r\n\r\n/**\r\n * agenda Sections web api controller name\r\n * @type {string}\r\n */\r\nconst agendaSections = \"AgendaSections\";\r\n\r\n/**\r\n * agenda Items web api controller name\r\n * @type {string}\r\n */\r\nconst agendaItems = \"AgendaItems\";\r\n\r\n/**\r\n * Get Agenda Meeting Templates\r\n * @return Meeting Template Model {Promise<{id:number, name:string}[]>}\r\n */\r\nconst getMeetingAgendaTemplates = () => getAxios().get(`/${meetingTemplates}`);\r\n\r\n/**\r\n * get Meeting Agenda Template by its id\r\n * @param {Number|number} id template id\r\n * @return {Promise<{record:{fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], Description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}, mapping:{mappingSourceType:string, text:string, name:string, gUID:string, source:{propertyName:string, entityName:string, fullName:string, entityKey:string, entityID:string, entityCategory:string, propertyDisplayName:string, entityDisplayName:string, fullDisplayName:string, entityValue:string}, destination:{propertyName:string, entityName:string, fullName:string, entityKey:string, entityID:string, entityCategory:string, propertyDisplayName:string, entityDisplayName:string, fullDisplayName:string, entityValue:string}, property:string, bookmarkName:string, mappings:string[]}, id:number, name:string}}>}\r\n */\r\nconst getMeetingAgendaTemplate = id =>\r\n getAxios().get(`/${meetingTemplates}/${id}`);\r\n\r\n/**\r\n * Agenda Meetings\r\n */\r\n\r\n/**\r\n * Get Agenda Meetings\r\n * @param {Number|number} startPage\r\n * @param {Number|number} countPerPage\r\n * @param {Object} searchModel\r\n * @return {Promise<{id:number, name:String}>}\r\n */\r\nconst getAgendaMeetings = (startPage, countPerPage, searchModel) => {\r\n const url = `/${agendaMeetings}/search?startPage=${startPage}&countPerPage=${countPerPage}`;\r\n const model = searchModel ? searchModel : {};\r\n\r\n return getAxios().post(url, model);\r\n};\r\n\r\n/**\r\n * Get Agenda Meeting data\r\n * @param {Number|number} id meeting id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getAgendaMeeting = id => getAxios().get(`/${agendaMeetings}/${id}`);\r\n\r\n/**\r\n * get Meeting Sections\r\n * @param {Number|number} id meeting id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], pageCount: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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getMeetingSections = id =>\r\n getAxios().get(`/${agendaMeetings}/${id}/sections`);\r\n\r\n/**\r\n * publish Meeting\r\n * @param {Number|number} id meeting id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], pageCount: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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst publishMeeting = id =>\r\n getAxios().post(`/${agendaMeetings}/${id}/publish`);\r\n\r\n/**\r\n * un Publish Meeting\r\n * @param {Number|number} id meeting id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], pageCount: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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst unPublishMeeting = id =>\r\n getAxios().post(`/${agendaMeetings}/${id}/unpublish`);\r\n\r\n/**\r\n * post Meeting\r\n * @param {Number|number} id meeting id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], pageCount: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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst postMeeting = id => getAxios().post(`/${agendaMeetings}/${id}/post`);\r\n\r\n/**\r\n * un post Meeting\r\n * @param {Number|number} id meeting id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], pageCount: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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst unPostMeeting = id => getAxios().post(`/${agendaMeetings}/${id}/unpost`);\r\n\r\n/**\r\n * Agenda Sections\r\n */\r\n\r\n/**\r\n * Get Agenda Section\r\n * @param {Number|number} id section id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getAgendaSection = id => getAxios().get(`/${agendaSections}/${id}`);\r\n\r\n/**\r\n * get Agenda Section Item Templates\r\n * @param {Number|number} sectionId Agenda Section id\r\n * @return {Promise<{templateId:number, name:string, index:number, record:{fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], Description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}, id:number, name:string}, mappingSources:{propertyName:string, entityName:string, fullName:string, entityKey:string, entityID:string, entityCategory:string, propertyDisplayName:string, entityDisplayName:string, fullDisplayName:string, entityValue:string}[], mappingDestinations:{propertyName:string, entityName:string, fullName:string, entityKey:string, entityID:string, entityCategory:string, propertyDisplayName:string, entityDisplayName:string, fullDisplayName:string, entityValue:string}[], children:string[]}>}\r\n */\r\nconst getAgendaItemTemplates = sectionId =>\r\n getAxios().get(`/${agendaSections}/${sectionId}/item-templates`);\r\n\r\n/**\r\n * create Agenda Item\r\n * @param createItemModel\r\n * @param {Number|number} sectionId agenda section id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst createAgendaItem = (createItemModel, sectionId) => {\r\n const url = `/${agendaSections}/${sectionId}/items`;\r\n\r\n return getAxios().post(url, createItemModel);\r\n};\r\n\r\n/**\r\n * Agenda Items\r\n */\r\n\r\n/**\r\n * Get Agenda Item\r\n * @param {Number|number} id Agenda Item id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getAgendaItem = id => getAxios().get(`/${agendaItems}/${id}`);\r\n\r\n/**\r\n * submit Agenda Item\r\n * @param {Number|number} id Agenda Item id\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed: boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst submitAgendaItem = id => getAxios().post(`/${agendaItems}/${id}/submit`);\r\n\r\n/**\r\n * recall Agenda Item\r\n * @param {Number|number} id Agenda Item id\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst recallAgendaItem = id => getAxios().post(`/${agendaItems}/${id}/recall`);\r\n\r\n/**\r\n * refer (Copy) Agenda Item\r\n * @param {Number|number} id Agenda Item id\r\n * @param {Number|number} destinationId Agenda Item's destination id\r\n * @param {Number|number} option Insert Position Option\r\n * @param {Number|number} templateIndex Agenda Template Index\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst referAgendaItem = (id, destinationId, option, templateIndex) =>\r\n getAxios().post(\r\n `/${agendaItems}/${id}/refer/${destinationId}/?templateIndex=${templateIndex}&insertPosition=${option}`\r\n );\r\n\r\n/**\r\n * defer (Move) Agenda Item\r\n * @param {Number|number} id Agenda Item id\r\n * @param {Number|number} destinationId Agenda Item's destination id\r\n * @param {Number|number} option Insert Position Option\r\n * @param {Number|number} templateIndex Agenda Template Index\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst deferAgendaItem = (id, destinationId, option, templateIndex) =>\r\n getAxios().post(\r\n `/${agendaItems}/${id}/defer/${destinationId}/?templateIndex=${templateIndex}&insertPosition=${option}`\r\n );\r\n\r\n/**\r\n * create Agenda Document\r\n * @param {Number|number} meetingId Meeting id\r\n * @param {Number|number} recordId Agenda Document Record id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\nconst createAgendaDocument = (meetingId, recordId) =>\r\n getAxios().post(\r\n `/${agendaMeetings}/${meetingId}/agenda/documents/${recordId}/create`\r\n );\r\n\r\n/**\r\n * create Draft Agenda Document\r\n * @param {Number|number} meetingId Meeting id\r\n * @param {Number|number} recordId Draft Agenda Document Record id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\nconst createDraftAgendaDocument = (meetingId, recordId) =>\r\n getAxios().post(\r\n `/${agendaMeetings}/${meetingId}/agenda/drafts/${recordId}/create`\r\n );\r\n\r\n/**\r\n * create Outline Agenda Document\r\n * @param {Number|number} meetingId Meeting id\r\n * @param {Number|number} recordId Outline Agenda Document Record id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\nconst createOutlineAgendaDocument = (meetingId, recordId) =>\r\n getAxios().post(\r\n `/${agendaMeetings}/${meetingId}/agenda/outlines/${recordId}/create`\r\n );\r\n\r\n/**\r\n * create Agenda Packet\r\n * @param {Number|number} meetingId Meeting id\r\n * @param {Number|number} recordId Agenda Packet Record id\r\n * @param {object} optionModel agenda Agenda Packet options model\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\nconst createAgendaPacket = (meetingId, recordId, optionModel) => {\r\n const url = `/${agendaMeetings}/${meetingId}/agenda/packets/${recordId}/create`;\r\n return getAxios().post(url, optionModel ?? null);\r\n};\r\n\r\n/**\r\n * Get Agenda Item Legislator Note\r\n * @param {Number|number} id Agenda Item id\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\nconst getAgendaItemLegislatorNote = id => {\r\n return getAxios().get(`/${agendaItems}/${id}/note`);\r\n};\r\n\r\n/**\r\n * Get Agenda Section Legislator Note\r\n * @param {Number|number} id Agenda Section id\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\nconst getAgendaSectionLegislatorNote = id => {\r\n return getAxios().get(`/${agendaSections}/${id}/note`);\r\n};\r\n\r\n/**\r\n * Save Agenda Item Legislator Note\r\n * @param {Number|number} id Agenda Item id\r\n * @param {String|string} note LegislatorNote\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\nconst saveAgendaItemLegislatorNote = (id, note) => {\r\n const url = `/${agendaItems}/${id}/note`;\r\n\r\n return getAxios().post(url, note);\r\n};\r\n\r\n/**\r\n * Save Agenda Section Legislator Note\r\n * @param {Number|number} id Agenda Section id\r\n * @param {String|string} note LegislatorNote\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\nconst saveAgendaSectionLegislatorNote = (id, note) => {\r\n const url = `/${agendaSections}/${id}/note`;\r\n\r\n return getAxios().post(url, note);\r\n};\r\n\r\n/**\r\n * Delete Agenda Item Legislator Note\r\n * @param {Number|number} id Agenda Item id\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst deleteAgendaItemLegislatorNote = id => {\r\n return getAxios().delete(`/${agendaItems}/${id}/note`);\r\n};\r\n\r\n/**\r\n * Delete Agenda Section Legislator Note\r\n * @param {Number|number} id Agenda Section id\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst deleteAgendaSectionLegislatorNote = id => {\r\n return getAxios().delete(`/${agendaSections}/${id}/note`);\r\n};\r\n\r\n/**\r\n * Get Agenda Meeting Roll Call\r\n * @param {Number|number} id Agenda Meeting id\r\n * @return {Promise<{rollCall:Object[], actor:Object[], rollCallStatus:Object[] }>}\r\n */\r\nconst getAgendaMeetingRollCall = id => {\r\n return getAxios().get(`/${agendaMeetings}/${id}/roll-call`);\r\n};\r\n\r\n/**\r\n * Save Agenda Meeting Roll Call\r\n * @param {{id:number, rollCall:Array}} payload\r\n * @return {Promise}\r\n */\r\nconst saveAgendaMeetingRollCall = payload => {\r\n console.log(payload);\r\n const url = `/${agendaMeetings}/${payload.id}/roll-call`;\r\n\r\n return getAxios().post(url, payload.rollCall);\r\n};\r\n\r\n/**\r\n * Submit Meeting Agenda Items\r\n * @param {Number|number} id Agenda Meeting Id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst submitMeetingAgendaItems = id => {\r\n const url = `/${agendaMeetings}/${id}/submit-all-items`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Submit Section Agenda Items\r\n * @param {Number|number} id Agenda Section Id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst submitSectionAgendaItems = id => {\r\n const url = `/${agendaSections}/${id}/submit-all-items`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Recall Meeting Agenda Items\r\n * @param {Number|number} id Agenda Meeting Id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst recallMeetingAgendaItems = id => {\r\n const url = `/${agendaMeetings}/${id}/recall-all-items`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Recall Section Agenda Items\r\n * @param {Number|number} id Agenda Section Id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst recallSectionAgendaItems = id => {\r\n const url = `/${agendaSections}/${id}/recall-all-items`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Move Meeting Contents\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst moveMeetingContents = payload => {\r\n const url = `/${agendaMeetings}/${payload.recordId}/move-meeting-contents/${payload.destinationId}?insertPosition=${payload.insertTreePosition}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Move Backup Material\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst moveBackupMaterial = payload => {\r\n const url = `/${agendaItems}/${payload.recordId}/move-backup-material/${payload.destinationId}?insertPosition=${payload.insertTreePosition}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\nexport {\r\n getMeetingAgendaTemplates,\r\n getMeetingAgendaTemplate,\r\n getAgendaMeetings,\r\n getAgendaMeeting,\r\n publishMeeting,\r\n unPublishMeeting,\r\n postMeeting,\r\n unPostMeeting,\r\n getMeetingSections,\r\n getAgendaSection,\r\n getAgendaItemTemplates,\r\n createAgendaItem,\r\n getAgendaItem,\r\n submitAgendaItem,\r\n recallAgendaItem,\r\n referAgendaItem,\r\n deferAgendaItem,\r\n createAgendaDocument,\r\n createDraftAgendaDocument,\r\n createOutlineAgendaDocument,\r\n createAgendaPacket,\r\n getAgendaItemLegislatorNote,\r\n getAgendaSectionLegislatorNote,\r\n saveAgendaSectionLegislatorNote,\r\n saveAgendaItemLegislatorNote,\r\n deleteAgendaSectionLegislatorNote,\r\n deleteAgendaItemLegislatorNote,\r\n getAgendaMeetingRollCall,\r\n saveAgendaMeetingRollCall,\r\n submitSectionAgendaItems,\r\n submitMeetingAgendaItems,\r\n recallSectionAgendaItems,\r\n recallMeetingAgendaItems,\r\n moveMeetingContents,\r\n moveBackupMaterial\r\n};\r\n","import { getAxios } from \"@/services/api/apiCommon\";\r\n\r\n/**\r\n * workflow User Tasks web api controller name\r\n * @type {string}\r\n */\r\nconst workflowUserTasks = \"WorkflowUserTasks\";\r\n\r\n/**\r\n * workflow Projects web api controller name\r\n * @type {string}\r\n */\r\nconst workflowProjects = \"WorkflowProjects\";\r\n\r\n/**\r\n * workflow Templates web api controller name\r\n * @type {string}\r\n */\r\nconst workflowTemplates = \"WorkflowTemplates\";\r\n\r\n/**\r\n * workflow Project Categories web api controller name\r\n * @type {string}\r\n */\r\nconst workflowProjectCategories = \"WorkflowProjectCategories\";\r\n\r\n/**\r\n * workflow Roles\r\n * @type {string}\r\n */\r\nconst workflowRoles = \"WorkflowRoles\";\r\n\r\n/**\r\n * Workflow User Tasks\r\n */\r\n\r\n/**\r\n * Get Workflow User Tasks\r\n * NOTE: Keep @returns arguments in sync\r\n * @returns {Promise<[{taskId:number, name:string, typeId:number, templateId:number, workflowInstanceId:number, workflowDefinitionId:number, recordId:number, recordName:string, status:number}]>}\r\n */\r\nconst getWorkflowUserTasks = () => getAxios().get(`/${workflowUserTasks}`);\r\n\r\n/**\r\n * Get Workflow User Task by Task id\r\n * @param {Number|number} id Task id\r\n * NOTE: Keep @returns arguments in sync\r\n * @returns {Promise<{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee:string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole:string, canReassign:boolean, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone:boolean, isOverdue:boolean, notifyOnEscalation:boolean, priority:number, selfReleaseDisabled:boolean, workflowDefinitionId:number, notes: {id:number, taskId:number, text:string, userId:number, userName:string, created:string}[]}>}\r\n */\r\nconst getWorkflowUserTask = id => getAxios().get(`/${workflowUserTasks}/${id}`);\r\n\r\n/**\r\n * accept user task\r\n * @param {Number|number} id task id\r\n * @param {String|string} note task's note\r\n * @return {Promise}\r\n */\r\nconst accept = (id, note) => {\r\n const url = `/${workflowUserTasks}/${id}/accept`;\r\n\r\n return getAxios().post(url, note);\r\n};\r\n\r\n/**\r\n * reject task\r\n * @param {Number|number} id task id\r\n * @param {String|string} note task's note\r\n * @return {Promise}\r\n */\r\nconst reject = (id, note) => {\r\n const url = `/${workflowUserTasks}/${id}/reject`;\r\n\r\n return getAxios().post(url, note);\r\n};\r\n\r\n/**\r\n * take Task\r\n * @param {Number|number} id task id\r\n * @param {String|string} note note\r\n * @param {boolean} sendNotification send Notification\r\n * @return {Promise}\r\n */\r\nconst takeTask = (id, note, sendNotification = false) => {\r\n const url = `/${workflowUserTasks}/${id}/take?sendNotification=${sendNotification}`;\r\n\r\n return getAxios().post(url, note);\r\n};\r\n\r\n/**\r\n * release Task\r\n * @param {Number|number} id task id\r\n * @param {String|string} note task's note\r\n * @param {boolean} sendNotification\r\n * @return {Promise}\r\n */\r\nconst releaseTask = (id, note, sendNotification = false) => {\r\n const url = `/${workflowUserTasks}/${id}/release?sendNotification=${sendNotification}`;\r\n\r\n return getAxios().post(url, note);\r\n};\r\n\r\n/**\r\n * Workflow Projects\r\n *\r\n */\r\n\r\n/**\r\n * get Workflow Projects\r\n * @param {Boolean|boolean} excludeCompleted exclude Completed workflow projects\r\n * @returns {Promise<[{projectId: number, definitionId: number, workflowInstanceId: number, workflowTypeId: number, projectName: String, recordId: number, subject: String, owner: String, projectManagerId: number, templateId: number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}]>}\r\n */\r\nconst getWorkflowProjects = (excludeCompleted = false) =>\r\n getAxios().get(`/${workflowProjects}?excludeCompleted=${excludeCompleted}`);\r\n\r\n/**\r\n * Get Workflow Project by Project id\r\n * @param {Number|number} id Project id\r\n * NOTE: Keep @returns arguments in sync\r\n * @returns {Promise<{projectId: Number, projectName:string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string}>}\r\n */\r\nconst getWorkflowProject = id => getAxios().get(`/${workflowProjects}/${id}`);\r\n\r\n/**\r\n * get Workflow Project Templates\r\n * @return {Promise}\r\n */\r\nconst getWorkflowProjectTemplates = () =>\r\n getAxios().get(`/${workflowTemplates}`);\r\n\r\n/**\r\n * get Workflow Calendars\r\n * @return {Promise<{string}[]>}\r\n */\r\nconst getWorkflowCalendars = () =>\r\n getAxios().get(`/${workflowTemplates}/calendars`);\r\n\r\n/**\r\n * get Workflow Project Template by Template id\r\n * @param {number} id\r\n * @return {Promise}\r\n */\r\nconst getWorkflowProjectTemplate = id =>\r\n getAxios().get(`/${workflowTemplates}/${id}`);\r\n\r\n/**\r\n * get Workflow Project Categories\r\n * @return {Promise}\r\n */\r\nconst getWorkflowProjectCategories = () =>\r\n getAxios().get(`/${workflowProjectCategories}`);\r\n\r\n/**\r\n * get Workflow Project Category\r\n * @param {number} id Workflow Project Category id\r\n * @return {Promise}\r\n */\r\nconst getWorkflowProjectCategory = id =>\r\n getAxios().get(`/${workflowProjectCategories}/${id}`);\r\n\r\n/**\r\n * get Workflow Project Category Templates\r\n * @param {number} id Workflow Project Category id\r\n * @return {Promise[]}\r\n */\r\nconst getWorkflowProjectCategoryTemplates = id =>\r\n getAxios().get(`/${workflowProjectCategories}/${id}/templates`);\r\n\r\n/**\r\n * start Workflow Project\r\n * @param {{recordId: (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)}} projectNew new workflow project\r\n * @return {Promise<{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}>}\r\n */\r\nconst startWorkflowProject = projectNew => {\r\n const url = `/${workflowProjects}/start`;\r\n const data = projectNew ? JSON.stringify(projectNew) : null;\r\n\r\n return getAxios().post(url, data);\r\n};\r\n\r\n/**\r\n * delete Workflow Project\r\n * @param {number} projectId Workflow Project id\r\n * @return {Promise}\r\n */\r\nconst deleteWorkflowProject = projectId => {\r\n const url = `/${workflowProjects}/${projectId}`;\r\n\r\n return getAxios().delete(url);\r\n};\r\n\r\n/**\r\n * suspend Workflow Project\r\n * @param {number} projectId Workflow Project id\r\n * @param {string} message Workflow Suspension Message\r\n * @return {Promise}\r\n */\r\nconst suspendWorkflowProject = (projectId, message) => {\r\n const url = `/${workflowProjects}/${projectId}/suspend?reason=${message}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * resume Workflow Project\r\n * @param {number} projectId resume Project id\r\n * @return {Promise}\r\n */\r\nconst resumeWorkflowProject = projectId => {\r\n const url = `/${workflowProjects}/${projectId}/resume`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * cancel Workflow Project\r\n * @param {number} projectId resume Project id\r\n * @return {Promise}\r\n */\r\nconst cancelWorkflowProject = projectId => {\r\n const url = `/${workflowProjects}/${projectId}/cancel`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Get Workflow Roles\r\n * @return {Promise}\r\n */\r\nconst getWorkflowRoles = () => {\r\n const url = `/${workflowRoles}`;\r\n\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Get Workflow Users\r\n * @param {String} roles - Users per each Role\r\n * @return {Promise}\r\n */\r\nconst getWorkflowUsers = roles => {\r\n const url = `/${workflowRoles}/${roles}`;\r\n\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Get Workflow Project Manager Candidates\r\n * @param {Number} templateId Project Template Id\r\n * @return {Promise<{id: Number, name: string, displayName: string, firstName: string, lastName: string, title: String, description: String, email: String}>}\r\n */\r\nconst getManagerCandidates = templateId => {\r\n const url = `/${workflowTemplates}/${templateId}/manager-candidates`;\r\n\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Get Workflow Task User Candidates\r\n * @param {Number} taskId Project Task Id\r\n * @return {Promise<{id: Number, name: string, displayName: string, firstName: string, lastName: string, title: String, description: String, email: String}>}\r\n */\r\nconst getUserCandidates = taskId => {\r\n const url = `/${workflowUserTasks}/${taskId}/assignment-candidates`;\r\n\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Assign Project Manager\r\n * @param {{ projectId: Number, managerId: Number, comment: String, sendNotification: Boolean}} payload\r\n * @return {Promise}\r\n */\r\nconst assignManager = payload => {\r\n const projectId = payload?.projectId ?? -1;\r\n const managerId = payload?.managerId ?? -1;\r\n const comment = payload?.comment ?? \"\";\r\n const notify = payload?.sendNotification ?? false;\r\n\r\n const url = `/${workflowProjects}/${projectId}/assign-manager?userId=${managerId}&comment=${comment}&sendNotification=${notify}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Assign Task User\r\n * @param {{ taskId: Number, userId: Number, comment: String, sendNotification: Boolean}} payload\r\n * @return {Promise}\r\n */\r\nconst assignUser = payload => {\r\n const taskId = payload?.taskId ?? -1;\r\n const userId = payload?.userId ?? -1;\r\n const comment = payload?.comment ?? \"\";\r\n const notify = payload?.sendNotification ?? false;\r\n\r\n const url = `/${workflowUserTasks}/${taskId}/assign?userId=${userId}&comment=${comment}&sendNotification=${notify}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\nexport {\r\n getWorkflowProjects,\r\n getWorkflowProject,\r\n getWorkflowUserTask,\r\n getWorkflowUserTasks,\r\n accept,\r\n reject,\r\n getWorkflowProjectTemplates,\r\n getWorkflowProjectTemplate,\r\n startWorkflowProject,\r\n deleteWorkflowProject,\r\n suspendWorkflowProject,\r\n resumeWorkflowProject,\r\n cancelWorkflowProject,\r\n getWorkflowProjectCategories,\r\n getWorkflowProjectCategory,\r\n getWorkflowProjectCategoryTemplates,\r\n getWorkflowRoles,\r\n getWorkflowUsers,\r\n getWorkflowCalendars,\r\n getManagerCandidates,\r\n assignManager,\r\n getUserCandidates,\r\n assignUser,\r\n takeTask,\r\n releaseTask\r\n};\r\n","// Web API Services\r\nimport {\r\n countChildren,\r\n createRecord as apiCreateRecord,\r\n createAgendaMeeting as apiCreateAgendaMeeting,\r\n fetchBreadcrumbs,\r\n getChildren,\r\n searchRecordsWithIn,\r\n getRecordChildren,\r\n getProjects,\r\n getCategoryProjectTemplateDefinition\r\n} from \"@/services/api/apiContent\";\r\nimport { createAgendaItem as apiCreateAgendaItem } from \"@/services/api/apiAgenda\";\r\n\r\n// apiWorkflow\r\nimport {\r\n startWorkflowProject as apiStartWorkflowProject,\r\n getWorkflowProjectTemplate as apiGetWorkflowProjectTemplate\r\n} from \"@/services/api/apiWorkflow\";\r\n\r\n// record hierarchy mutation types\r\nimport {\r\n SET_BREADCRUMBS,\r\n SET_PROJECT_NEW,\r\n SET_PROJECT_NEW_TEMPLATE,\r\n SET_RECORD_OPEN_PROJECTS,\r\n SET_RECORD_PROJECTS\r\n} from \"@/store/shared/mutationTypes/record/hierarchy-mutation-types\";\r\n\r\n// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\nimport {\r\n createQueryModel,\r\n filterIncludeFields\r\n} from \"@/services/query/queryService\";\r\nimport {\r\n ensureValidRecordFiledValues,\r\n filterFilesAndDocuments\r\n} from \"@/services/record/recordService\";\r\n\r\nimport { getWorkflowProject } from \"@/services/api/apiWorkflow\";\r\n\r\n// store/shared/mutationTypes\r\nimport {\r\n SET_DOCUMENTS,\r\n SET_RECORDS,\r\n SET_RECORD_CREATED,\r\n SET_DOCUMENT_CHILDREN,\r\n APPEND_RECORDS\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// services\r\nimport { prepareNewProject } from \"@/services/project/projectService\";\r\n\r\n// model\r\nimport { recordMode, recordType } from \"@/model/record/recordModel\";\r\nimport {\r\n projectLabel,\r\n startProjectOption\r\n} from \"@/model/workflow/project/projectModel\";\r\n/**\r\n * set Breadcrumbs\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise<{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}[]}[]|(function(): *[])|string|*|*[]>}\r\n */\r\nasync function setBreadcrumbs(context, id) {\r\n try {\r\n const response = await fetchBreadcrumbs(id);\r\n\r\n context.commit(SET_BREADCRUMBS, response?.data ?? []);\r\n\r\n return context.state?.breadcrumbs ?? [];\r\n } catch (e) {\r\n return await handleError(e, `Unable to set breadcrumbs(id: ${id})`);\r\n }\r\n}\r\n\r\n/**\r\n * set Parent Breadcrumbs\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise<{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}[]}[]|(function(): *[])|string|*|*[]>}\r\n */\r\nasync function setParentBreadcrumbs(context, id) {\r\n try {\r\n const response = await fetchBreadcrumbs(id);\r\n const breadcrumbs = (response?.data ?? []).filter(el => el.id !== id) ?? [];\r\n\r\n context.commit(SET_BREADCRUMBS, breadcrumbs);\r\n\r\n return context.state?.breadcrumbs ?? [];\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to set parent's breadcrumbs (id: ${id})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Set Child Records\r\n * @param context\r\n * @param {{id:Number, recordIndex:Number, count:Number}} payload\r\n * @return {Promise<*[]|{children: {number}, name: string, id: number}[]>}\r\n */\r\nasync function setChildRecords(context, payload) {\r\n const id = payload?.id ?? -1;\r\n const startIndex = payload?.recordIndex ?? 1;\r\n if (id < 0) {\r\n context.commit(SET_RECORDS, []);\r\n return Promise.resolve([]);\r\n }\r\n return getRecordChildren(payload)\r\n .then(response => {\r\n const records = response?.data || [];\r\n startIndex === 1 //True, No need to append, reset all the records\r\n ? context.commit(SET_RECORDS, records)\r\n : context.commit(APPEND_RECORDS, records);\r\n return records;\r\n })\r\n .catch(error =>\r\n handleError(error, `Unable to set Child Records. (parent id: ${id})`)\r\n );\r\n}\r\n\r\n/**\r\n * Set Searched Child Records\r\n * @param context\r\n * @param {{CategoryId: {Value: number, Operator: string}, TypeId: {Operator: string, Value: *}, Owner: {Operator: string, Value: *}, CreatedDateTo: {Operator: string, Value: *}, StateId: {Operator: string, Value: *}, Creator: {Operator: string, Value: *}, Name: {Operator: string, Value: *}, Extension: {Operator: string, Value: *}, Pages: {Operator: string, Value: *}, Fields: {Id: number, Include: boolean, Value: *, Operator: string}[], StartPage: number, Version: {Operator: string, Value: *}, CreatedDateFrom: {Operator: string, Value: *}, ModifiedDateTo: {Operator: string, Value: *}, Id: {Operator: string, Value: *}, ModifiedDateFrom: {Operator: string, Value: *}, ChildrenOnly: {Value: number, Operator: string}, WithInId:number, CountPerPage: number}} payload\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nasync function setSearchedChildRecords(context, payload) {\r\n const queryModel = createQueryModel(payload);\r\n const withInId = payload?.WithInId ?? 0;\r\n const childrenOnly = payload?.ChildrenOnly?.Value ?? false;\r\n\r\n return searchRecordsWithIn(\r\n queryModel,\r\n withInId,\r\n childrenOnly,\r\n payload.StartPage,\r\n payload.CountPerPage\r\n )\r\n .then(response => {\r\n const records = response?.data || [];\r\n context.commit(APPEND_RECORDS, records);\r\n return records;\r\n })\r\n .catch(error => handleError(error));\r\n}\r\n\r\n/**\r\n * set Document Children\r\n * @param context\r\n * @param {Number} id compound document id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst setDocumentChildren = async (context, id) => {\r\n if (id < 0) {\r\n return Promise.resolve([]);\r\n }\r\n return countChildren(id)\r\n .then(response => {\r\n return Number(response?.data);\r\n })\r\n .then(count => {\r\n return getChildren(id, Number(count));\r\n })\r\n .then(response => {\r\n const payload = { id: id, children: response?.data };\r\n context.commit(SET_DOCUMENT_CHILDREN, payload);\r\n return Promise.resolve(response?.data ?? []);\r\n })\r\n .catch(error =>\r\n handleError(error, `Unable to get Child Records. (parent id: ${id})`)\r\n );\r\n};\r\n\r\n/**\r\n * Set Found Documents\r\n * @param context\r\n * @param payload\r\n * @return {Promise}\r\n */\r\nasync function setFoundDocuments(context, payload) {\r\n try {\r\n context.commit(SET_DOCUMENTS, []);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n\r\n const queryModel = createQueryModel(payload);\r\n const withInId = payload?.WithInId ?? 0;\r\n const childrenOnly = payload?.ChildrenOnly?.Value ?? false;\r\n\r\n // console.log(`queryModel:`, queryModel);\r\n // console.log(`withInId:`, withInId);\r\n // console.log(`childrenOnly:`, childrenOnly);\r\n // console.log(`StartPage:`, payload.StartPage);\r\n // console.log(`CountPerPage:`, payload.CountPerPage);\r\n\r\n const includeFields = filterIncludeFields(payload?.Fields) || [];\r\n\r\n return searchRecordsWithIn(\r\n queryModel,\r\n withInId,\r\n childrenOnly,\r\n payload.StartPage,\r\n payload.CountPerPage\r\n )\r\n .then(response => {\r\n const docs = filterFilesAndDocuments(response?.data, includeFields);\r\n context.commit(SET_DOCUMENTS, docs);\r\n return response?.data;\r\n })\r\n .catch(error => handleError(error));\r\n}\r\n\r\n/**\r\n * create Record\r\n * @param context\r\n * @param {{record, category}} payload\r\n * @return {Promise<{record}>}\r\n */\r\nasync function createRecord(context, payload) {\r\n const parentId = payload?.record?.parentId ?? 0;\r\n\r\n try {\r\n const category = payload?.category;\r\n const categoryId = category?.id ?? -1;\r\n\r\n const model = {\r\n name: payload?.record?.name ?? \"\",\r\n categoryId: categoryId,\r\n recordTypeId: payload?.record?.recordTypeId ?? recordType.RECORD,\r\n fieldValues: payload?.record?.fieldValues ?? [],\r\n flyingFields: payload?.record?.flyingFields ?? []\r\n };\r\n\r\n const response = await apiCreateRecord(model, parentId);\r\n const record = ensureValidRecordFiledValues(response?.data, category);\r\n\r\n context.commit(SET_RECORD_CREATED, record);\r\n\r\n return record;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to set create record. (parentId: ${parentId})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * create Agenda Meeting\r\n * @param context\r\n * @param {{record, category, agendaTemplateId: number}} payload\r\n * @return {Promise<{record}>}\r\n */\r\nasync function createAgendaMeeting(context, payload) {\r\n const parentId = payload?.record?.parentId ?? 0;\r\n const agendaTemplateId = payload?.agendaTemplateId ?? -1;\r\n\r\n try {\r\n const category = payload?.category;\r\n const categoryId = category?.id ?? -1;\r\n\r\n const model = {\r\n name: payload?.record?.name ?? \"\",\r\n categoryId: categoryId,\r\n agendaTemplateId: agendaTemplateId,\r\n recordTypeId: payload?.record?.recordTypeId ?? recordType.RECORD,\r\n fieldValues: payload?.record?.fieldValues ?? [],\r\n flyingFields: payload?.record?.flyingFields ?? []\r\n };\r\n\r\n const response = await apiCreateAgendaMeeting(model, parentId);\r\n const record = ensureValidRecordFiledValues(response?.data, category);\r\n\r\n context.commit(SET_RECORD_CREATED, record);\r\n\r\n return record;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to create Agenda Meeting. (parentId: ${parentId}) (agendaTemplateId: ${agendaTemplateId})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * create Agenda Item\r\n * @param context\r\n * @param payload\r\n * @return {Promise<*>}\r\n */\r\nasync function createAgendaItem(context, payload) {\r\n const parentId = payload?.record?.parentId ?? 0;\r\n const name = payload?.record?.name ?? \"\";\r\n\r\n try {\r\n console.log(`createAgendaItem() payload:`, payload);\r\n const category = payload?.category;\r\n const categoryId = category?.id ?? -1;\r\n const recordItem = payload?.record;\r\n const agendaTemplateIndex = payload?.agendaTemplateIndex ?? 0;\r\n\r\n // create Agenda Item model\r\n const model = {\r\n name: name,\r\n categoryId: categoryId,\r\n agendaTemplateIndex: agendaTemplateIndex,\r\n recordTypeId: recordItem?.recordTypeId ?? recordType.ITEM,\r\n fieldValues: recordItem?.fieldValues ?? [],\r\n flyingFields: recordItem?.flyingFields ?? []\r\n };\r\n console.log(`createAgendaItem() model:`, model);\r\n\r\n const response = await apiCreateAgendaItem(model, parentId);\r\n const record = ensureValidRecordFiledValues(response?.data, category);\r\n\r\n context.commit(SET_RECORD_CREATED, record);\r\n\r\n return record;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to create Agenda Item: ${name}; (parentId: ${parentId})`\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Set record's projects\r\n * @param context\r\n * @param { number } id record id\r\n * @return {Promise<{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]|*[]>}\r\n */\r\nconst setProjects = async (context, id) => {\r\n try {\r\n const response = await getProjects(id);\r\n\r\n context.commit(SET_RECORD_PROJECTS, response?.data ?? []);\r\n\r\n return context.state?.projects ?? [];\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to set record's Projects by record (id: ${id})`\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * set record's Open Project\r\n * @param context\r\n * @param {number} id record id\r\n * @return {Promise<{projectId: Number, projectName:string, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string, userTasks: {taskId: number, typeId: number, actorId: number, actorName: string, userName: string, assignee: string, canReassign: boolean, canceledRecipients: string, comment: string, dueDate: string, duration: string, isDue: boolean, isMilestone: boolean, isOverdue: boolean, priority: number, recordId: number, recordName: string, status: number, statusText: string, notes: {id: number, created: string, taskId: number, userId: number, userName: string}[]}}>}\r\n */\r\nconst setOpenProject = async (context, id) => {\r\n try {\r\n const response = await getWorkflowProject(id);\r\n\r\n context.commit(SET_RECORD_OPEN_PROJECTS, response?.data ?? []);\r\n\r\n return context.state?.openProjects?.find(p => p.projectId === id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to set Project by (id: ${id})`);\r\n }\r\n};\r\n\r\n/**\r\n * set New Workflow Project for current record\r\n * @param context\r\n * @param {{templateId: number, runOnlyOneProject: boolean}} payload template id\r\n * @return {Promise<{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}}|{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}|(function(): {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}})|*|string>}\r\n */\r\n\r\n/**\r\n * set New Workflow Project for current record\r\n * @param context\r\n * @return {Promise}\r\n */\r\nconst setNewWorkflowProject = async context => {\r\n try {\r\n const mode = context.state?.recordMode ?? -1;\r\n const categoryId =\r\n mode === recordMode.new\r\n ? context.state?.recordNewCategory?.id ?? -1\r\n : context.state?.recordCategory?.id ?? -1;\r\n const definition = (await getCategoryProjectTemplateDefinition(categoryId))\r\n ?.data;\r\n console.log(`setNewWorkflowProject() definition:`, definition);\r\n\r\n const projectTemplate = definition?.projectTemplate;\r\n const payload = {\r\n project: prepareNewProject(\r\n context.state.record,\r\n projectTemplate,\r\n definition?.runOnlyOneProject ?? false,\r\n definition?.startProjectOption ?? startProjectOption.none\r\n ),\r\n template: projectTemplate\r\n };\r\n\r\n context.commit(SET_PROJECT_NEW, payload);\r\n } catch (e) {\r\n return await handleError(e, `Unable to set New ${projectLabel}`);\r\n }\r\n};\r\n\r\n/**\r\n * set Project New Template\r\n * @param context\r\n * @param {id:number} payload project template id\r\n * @return {Promise<{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}|string|*>}\r\n */\r\nconst setProjectNewTemplate = async (context, payload) => {\r\n try {\r\n console.log(`setProjectNewTemplate() payload:`, payload);\r\n\r\n const response =\r\n payload > 0 ? await apiGetWorkflowProjectTemplate(payload) : undefined;\r\n\r\n console.log(`setProjectNewTemplate() response?.data:`, response?.data);\r\n\r\n context.commit(SET_PROJECT_NEW_TEMPLATE, response?.data);\r\n\r\n console.log(\r\n `setProjectNewTemplate() context.state.projectNewTemplate:`,\r\n context.state.projectNewTemplate\r\n );\r\n\r\n return context.state.projectNewTemplate;\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to set Project New Template by (Template id: ${payload})`\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * start Workflow Project\r\n * @param context\r\n * @param {{projectId: Number, projectName: string, comment: string, templateId: number, runOnlyOneProject: boolean}} payload new Workflow Project\r\n * @return {Promise<{projectId: Number, projectName: string, comment: string, templateId: number, runOnlyOneProject: boolean}>}\r\n */\r\nconst startWorkflowProject = async (context, payload) => {\r\n const recordId = payload?.recordId ?? -1;\r\n\r\n try {\r\n const response = await apiStartWorkflowProject(payload);\r\n\r\n const project = response?.data;\r\n const state = context.state;\r\n\r\n if (state.record?.id === project?.recordId ?? -1) {\r\n if (\r\n !state.projects?.find(p => p.projectId === project?.projectId ?? -1)\r\n ) {\r\n if (!state.projects) {\r\n state.projects = [];\r\n }\r\n state.projects.push(project);\r\n }\r\n }\r\n\r\n const projectNew = state.projects?.find(\r\n p => p.projectId === project?.projectId ?? -1\r\n );\r\n\r\n return Promise.resolve(projectNew);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to start project by (record id: ${recordId})`\r\n );\r\n }\r\n};\r\n\r\nexport {\r\n setBreadcrumbs,\r\n setParentBreadcrumbs,\r\n setChildRecords,\r\n setFoundDocuments,\r\n createRecord,\r\n createAgendaMeeting,\r\n createAgendaItem,\r\n setDocumentChildren,\r\n setProjects,\r\n setOpenProject,\r\n startWorkflowProject,\r\n setProjectNewTemplate,\r\n setNewWorkflowProject,\r\n setSearchedChildRecords\r\n};\r\n","// common\r\nimport { filterFilesAndDocuments } from \"@/services/record/recordService\";\r\n\r\n// services\r\nimport {\r\n getCategories,\r\n getCategory,\r\n getCategoryDocuments,\r\n downloadFile,\r\n searchRecords,\r\n countRecords\r\n} from \"@/services/api/apiContent\";\r\nimport { handleError } from \"@/services/error/errorService\";\r\n\r\n// shared mutation types\r\nimport { SET_DOCUMENTS } from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// category mutation-types\r\nimport { SET_CATEGORIES, SET_CATEGORY } from \"@/store/category/mutation-types\";\r\n\r\n// record-actions\r\nimport {\r\n checkOutFile,\r\n clearDocuments,\r\n setDocument,\r\n setFileVersion,\r\n setSearchCategory\r\n} from \"@/store/shared/actions/record/record-actions\";\r\n\r\nimport { setDocumentChildren } from \"@/store/shared/actions/record/hierarchy-actions\";\r\n\r\n// model\r\nimport { categoryAll } from \"@/model/category/categoryModel\";\r\n\r\nconst actions = {\r\n /**\r\n * Set document categories\r\n * @param context\r\n * @returns {Promise<[{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string}]>}\r\n */\r\n async setCategories(context) {\r\n return getCategories()\r\n .then(response => {\r\n context.commit(SET_CATEGORIES, response.data);\r\n return Promise.resolve(response.data);\r\n })\r\n .catch(error => handleError(error, `Unable to set Categories`));\r\n },\r\n\r\n /**\r\n * Set Category\r\n * @param context\r\n * @param {Number} id\r\n * @returns {Promise<{}>}\r\n */\r\n async setCategory(context, id) {\r\n if (id === -1) {\r\n return new Promise(resolutionFunc => {\r\n context.commit(SET_CATEGORY, categoryAll);\r\n resolutionFunc(categoryAll);\r\n });\r\n }\r\n return getCategory(id)\r\n .then(response => {\r\n context.commit(SET_CATEGORY, response.data);\r\n return response.data;\r\n })\r\n .catch(e =>\r\n handleError(e, `Unable to set Category by Category id: ${id}`)\r\n );\r\n },\r\n\r\n /**\r\n * Set documents of current selected category\r\n * @param context\r\n * @param args\r\n * @returns {Promise}\r\n */\r\n setDocuments(context, args) {\r\n const id = context?.state?.category?.id ?? -1;\r\n\r\n // Clear current documents\r\n context.commit(SET_DOCUMENTS, []);\r\n\r\n return getCategoryDocuments(\r\n id,\r\n args.page,\r\n args.pageSize,\r\n args.searchTerm,\r\n args.formData\r\n )\r\n .then(response => {\r\n return response.data;\r\n })\r\n .then(data => {\r\n const docs = filterFilesAndDocuments(data);\r\n\r\n context.commit(SET_DOCUMENTS, docs);\r\n\r\n return data;\r\n })\r\n .catch(error =>\r\n handleError(error, `Couldn't get documents by Category id: ${id}`)\r\n );\r\n },\r\n\r\n /**\r\n * Clear current list of documents\r\n * @param context\r\n */\r\n clearDocuments(context) {\r\n clearDocuments(context);\r\n },\r\n\r\n /**\r\n * Set found documents of current selected category of Category Module\r\n * @param context\r\n * @param payload\r\n * @returns {Promise}\r\n */\r\n setFoundDocuments(context, payload) {\r\n // Clear current documents\r\n context.commit(SET_DOCUMENTS, []);\r\n\r\n const queryModel = {\r\n Id: payload.Id,\r\n Name: payload.Name,\r\n Owner: payload.Owner,\r\n Creator: payload.Creator,\r\n CreatedDateFrom: payload.CreatedDateFrom,\r\n CreatedDateTo: payload.CreatedDateTo,\r\n ModifiedDateFrom: payload.ModifiedDateFrom,\r\n ModifiedDateTo: payload.ModifiedDateTo,\r\n CategoryId: payload.CategoryId,\r\n TypeId: payload.TypeId,\r\n StateId: payload.StateId,\r\n Extension: payload.Extension,\r\n Version: payload.Version,\r\n Pages: payload.Pages,\r\n Fields: payload.Fields\r\n };\r\n\r\n console.log(`StartPage:`, payload.StartPage);\r\n console.log(`CountPerPage:`, payload.CountPerPage);\r\n console.log(`queryModel:`, queryModel);\r\n\r\n const includeFields = [];\r\n if (payload.Fields) {\r\n payload.Fields.filter(el => el.Include).forEach(el => {\r\n if (!includeFields.find(fld => fld === el.Id)) {\r\n includeFields.push(el.Id);\r\n }\r\n });\r\n }\r\n\r\n console.log(`includeFields:`, includeFields);\r\n\r\n return searchRecords(queryModel, payload.StartPage, payload.CountPerPage)\r\n .then(response => {\r\n return response.data;\r\n })\r\n .then(data => {\r\n const docs = filterFilesAndDocuments(data, includeFields);\r\n\r\n context.commit(SET_DOCUMENTS, docs);\r\n\r\n return data;\r\n })\r\n .catch(e => handleError(e, \"Error while searching records\"));\r\n },\r\n\r\n /**\r\n * Set current Document\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\n async setDocument(context, id) {\r\n return await setDocument(context, id);\r\n },\r\n\r\n /**\r\n * Download File\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<*>}\r\n */\r\n async downloadFile(context, id) {\r\n try {\r\n return await downloadFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to download File by id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * Set Document search category\r\n * @param context\r\n * @param {Number} id\r\n * @returns {Promise<{id:number, name:string}>}\r\n */\r\n async setSearchCategory(context, id) {\r\n return await setSearchCategory(context, id);\r\n },\r\n\r\n /**\r\n * set File Version\r\n * @param context\r\n * @param {id:number, version:number} payload\r\n * @return {Promise}\r\n */\r\n async setFileVersion(context, payload) {\r\n return await setFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * set Document Children\r\n * @param context\r\n * @param {Number|number} id parent record id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async setDocumentChildren(context, id) {\r\n return await setDocumentChildren(context, id);\r\n },\r\n\r\n /**\r\n * get Total Result Count- Category\r\n * @param context\r\n * @param { queryModel: {CategoryId: number, TypeId: number, Owner: string, CreatedDateTo: string, StateId: number, Creator: string, Name: string, Extension: string, Pages: number, Fields: {any}[], Version: number, CreatedDateFrom: string, ModifiedDateTo: string, ModifiedDateFrom: string}} queryModel\r\n * @return {Promise}\r\n */\r\n async getTotalCount(context, queryModel) {\r\n return await countRecords(queryModel);\r\n },\r\n\r\n /**\r\n * check Out File\r\n * @param context\r\n * @param {Number|number} id\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 async checkOutFile(context, id) {\r\n return await checkOutFile(context, id);\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// services\r\nimport {\r\n createRecordInfo,\r\n findRecord,\r\n updateRecordFileVersionInfo,\r\n updateRecordInfo,\r\n updateRecordOperations\r\n} from \"@/services/record/recordService\";\r\n\r\n// utils\r\nimport { isArray } from \"@/utils\";\r\n\r\n// model\r\nimport {\r\n findRecordState,\r\n recordMode,\r\n recordState,\r\n recordType\r\n} from \"@/model/record/recordModel\";\r\n\r\n// mutation Types\r\nimport { SET_RECORD_MODE } from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n/**\r\n * get all records, for provides state, by provided record id\r\n * @param state\r\n * @param {Number|number} id record id\r\n * @param {Boolean|boolean} includeCurrentRecord include current Record\r\n * @return {*[]} records\r\n */\r\nconst getRecords = (state, id, includeCurrentRecord = true) => {\r\n const records = [];\r\n\r\n if (includeCurrentRecord) {\r\n if ((state.record?.id ?? -100) === id) {\r\n records.push(state.record);\r\n }\r\n }\r\n\r\n const record = findRecord(state.records, id);\r\n if (record) {\r\n records.push(record);\r\n }\r\n\r\n const document = findRecord(state.documents, id);\r\n if (document) {\r\n records.push(document);\r\n }\r\n\r\n const breadcrumb = findRecord(state.breadcrumbs, id);\r\n if (breadcrumb) {\r\n records.push(breadcrumb);\r\n }\r\n\r\n return records;\r\n};\r\n\r\n/**\r\n * set the Current Record\r\n * @param state\r\n * @param {{record, category, version}} payload\r\n */\r\nconst setCurrentRecord = (state, payload) => {\r\n const record = payload?.record;\r\n const category = payload?.category;\r\n const version = payload?.version;\r\n\r\n /*const record = payload?.record ?? payload;\r\n const category =\r\n (await payload?.category) ??\r\n (await getCategory(record?.categoryId ?? -1))?.data;*/\r\n\r\n // Prevent commit to store if business logic failed\r\n if (record?.categoryId !== category?.id) {\r\n throw `Couldn't set current record, since provided category (id: ${category?.id}) does not match record's category (id:${record?.id})`;\r\n }\r\n\r\n // Set the current record\r\n state.record = record;\r\n\r\n // Set the current record's category\r\n state.recordCategory = category;\r\n\r\n state.recordFileVersion = version;\r\n\r\n console.log(\"recordFileVersion:\", state.recordFileVersion);\r\n\r\n // Get all related records, by specified record id, from provided state\r\n const records = getRecords(state, record.id, false) ?? [];\r\n\r\n // update Record Info in each record of the current state\r\n try {\r\n records.forEach(record => {\r\n updateRecordInfo(record, state.record);\r\n });\r\n } catch (e) {\r\n console.error(\r\n `Error in: setCurrentRecord() while updateRecordInfo. ${e} (id=${record?.id})`\r\n );\r\n }\r\n\r\n // remarks: set current record always ensure recordMode.view mode\r\n setRecordMode(state, recordMode.view);\r\n};\r\n\r\n/**\r\n * set current Document\r\n * @param state\r\n * @param {{document, category}} payload\r\n */\r\nconst setDocument = (state, payload) => {\r\n const document = payload?.document;\r\n const category = payload?.category;\r\n\r\n //\r\n // e.g., how to impose business logic before committing any changes\r\n //\r\n\r\n //\r\n // Prevent commit to store if business logic failed\r\n //\r\n if (document?.categoryId !== category?.id) {\r\n throw `Couldn't set current document, since provided category (id: ${category?.id}) does not match document's category (id:${document?.id})`;\r\n }\r\n\r\n state.document = document;\r\n state.documentCategory = category;\r\n};\r\n\r\n/**\r\n * set Document Children\r\n * @param state\r\n * @param {{document, children}} payload\r\n */\r\nconst setDocumentChildren = (state, payload) => {\r\n const document = state.documents?.find(d => d.id === payload?.id ?? -1);\r\n const children = payload?.children ?? [];\r\n // Update document children\r\n if (document) {\r\n document.children = children?.length ?? 0;\r\n document.childRecords = children ?? [];\r\n\r\n console.log(`setDocumentChildren() document:`, document);\r\n }\r\n};\r\n\r\n/**\r\n * set current File Version\r\n * @param state\r\n * @param {{version, category}} payload\r\n */\r\nconst setFileVersion = (state, payload) => {\r\n const version = payload?.version;\r\n const category = payload?.category;\r\n\r\n //\r\n // e.g., how to impose business logic before committing any changes\r\n //\r\n\r\n //\r\n // Prevent commit to store if business logic failed\r\n //\r\n if (version?.categoryId !== category?.id) {\r\n throw `Couldn't set current FileVersion, since provided category (id: ${version?.id}) does not match File Version's category (id:${category?.id})`;\r\n }\r\n\r\n state.version = version;\r\n state.versionCategory = category;\r\n};\r\n\r\n/**\r\n * set Record Lock\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\nconst setRecordLock = (state, payload) => {\r\n try {\r\n const id = payload?.id ?? -1;\r\n const isLocked = payload?.isLocked ?? false;\r\n const records = getRecords(state, id, true) ?? [];\r\n\r\n records.forEach(record => {\r\n record.isLocked = isLocked;\r\n //updateRecordInfo\r\n updateRecordInfo(record, payload);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * update Record Status of current record and all related records\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\nconst updateRecordStatus = (state, payload) => {\r\n try {\r\n const id = payload?.id ?? -1;\r\n const stateId = payload?.stateId ?? recordState.created;\r\n const stateName = findRecordState(stateId)?.name ?? \"\";\r\n\r\n // get all related records\r\n const records = getRecords(state, id, true) ?? [];\r\n\r\n records.forEach(record => {\r\n record.stateId = stateId;\r\n record.state = stateName;\r\n updateRecordOperations(record, payload);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * update Record Infos\r\n * @param state\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}[]}} payload RecordItemModel (RecordInfo)\r\n */\r\nconst updateRecordInfos = (state, payload) => {\r\n try {\r\n const records = getRecords(state, payload?.id ?? -1, true) ?? [];\r\n\r\n records.forEach(record => {\r\n updateRecordInfo(record, payload);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Record Read Only\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\nconst setRecordReadOnly = (state, payload) => {\r\n try {\r\n const id = payload?.id ?? -1;\r\n const isReadOnly = payload?.isReadOnly ?? false;\r\n const records = getRecords(state, id, true) ?? [];\r\n\r\n records.forEach(record => {\r\n record.isReadOnly = isReadOnly;\r\n //updateRecordInfo\r\n updateRecordInfo(record, payload);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Record Draft\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\nconst setRecordDraft = (state, payload) => {\r\n try {\r\n const id = payload?.id ?? -1;\r\n const isDraft = payload?.isDraft ?? false;\r\n const records = getRecords(state, id, true) ?? [];\r\n\r\n records.forEach(record => {\r\n record.isDraft = isDraft;\r\n //updateRecordInfo\r\n updateRecordInfo(record, payload);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * Update File Version Info\r\n * reminder: RecordInfo - fields are not included\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\nconst updateFileVersionInfo = (state, payload) => {\r\n try {\r\n const id = payload?.id ?? -1;\r\n const records = getRecords(state, id, true) ?? [];\r\n\r\n records.forEach(record => {\r\n updateRecordFileVersionInfo(record, payload);\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Upload File Progress\r\n * @param state\r\n * @param progress\r\n */\r\nconst setUploadFileProgress = (state, progress) => {\r\n state.uploadFileProgress = progress;\r\n};\r\n\r\n/**\r\n * set Record Mode\r\n * @param state\r\n * @param {Number|number} payload Record Mode\r\n */\r\nconst setRecordMode = (state, payload) => {\r\n state.recordMode = payload;\r\n\r\n if (state.recordMode !== recordMode.new) {\r\n state.recordNew = undefined;\r\n state.recordNewCategory = undefined;\r\n state.projectNew = undefined;\r\n state.projectNewTemplate = undefined;\r\n }\r\n\r\n console.log(SET_RECORD_MODE, state.recordMode);\r\n};\r\n\r\n/**\r\n * set the current Record as a New Record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\nconst setRecordNew = (state, payload) => {\r\n try {\r\n // set record Mode\r\n state.recordMode = recordMode.new;\r\n\r\n // set a new record and its category\r\n state.recordNew = payload?.record;\r\n state.recordNewCategory = payload?.category;\r\n\r\n // set a new workflow project and its template\r\n state.projectNew = payload?.project;\r\n state.projectNewTemplate = payload?.projectTemplate;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Record New And its Category\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\nconst setRecordNewAndCategory = (state, payload) => {\r\n state.recordNew = payload?.record;\r\n state.recordNewCategory = payload?.category;\r\n};\r\n\r\nconst setRecordCreated = (state, payload) => {\r\n try {\r\n state.recordNew = payload;\r\n\r\n if (state.recordMode !== recordMode.new) {\r\n state.recordMode = recordMode.new;\r\n\r\n console.log(`setRecordCreated() state.recordMode:`, state.recordMode);\r\n }\r\n\r\n const recordNew = state.recordNew;\r\n\r\n // Update state.records\r\n if ((recordNew?.id ?? -1) > 0) {\r\n if (\r\n (state.record?.parentId ?? -1) === recordNew.parentId ||\r\n (state.record?.id ?? -1) === recordNew.parentId\r\n ) {\r\n // adds recordNew to the end of an array and returns the new length of the array\r\n state.records.push(recordNew);\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set current Record as edit Record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\nconst setRecordEdit = (state, payload) => {\r\n try {\r\n state.recordNew = payload?.record;\r\n state.recordNewCategory = payload?.category;\r\n state.recordMode = recordMode.edit;\r\n\r\n console.log(`setRecordEdit() state.recordMode:`, state.recordMode);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Record Edited\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\nconst setRecordEdited = (state, payload) => {\r\n try {\r\n const record = payload.record;\r\n const category = payload.category;\r\n\r\n const id = record?.id ?? -1;\r\n const records = getRecords(state, id, false) ?? [];\r\n\r\n // if current record, update record & its category\r\n if (id === state.record?.id) {\r\n state.record = record;\r\n state.recordCategory = category;\r\n }\r\n\r\n records.forEach(record => {\r\n updateRecordInfo(record, state.record);\r\n });\r\n\r\n // 4. Update a version of listed file versions\r\n if ((state.record?.recordTypeId ?? recordType.RECORD) === recordType.FILE) {\r\n (state.versions ?? []).forEach(fv => {\r\n updateRecordInfo(fv, state.record);\r\n });\r\n }\r\n\r\n setRecordMode(state, recordMode.view);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\nconst setRecordDeleted = (state, payload) => {\r\n try {\r\n const id = payload ?? -1;\r\n\r\n if (id < 0) {\r\n return;\r\n }\r\n\r\n // 1. Update record state of current record\r\n if ((state.record?.id ?? -1) === id) {\r\n state.record.isDeleted = true;\r\n }\r\n\r\n // 2. Update record itm of listed records\r\n const record = findRecord(state.records, id);\r\n if (record) {\r\n record.isDeleted = true;\r\n\r\n // remove deleted record from the state.records\r\n const index = state.records.indexOf(record);\r\n if (index >= 0) {\r\n state.records.splice(index, 1);\r\n }\r\n }\r\n\r\n // 3. Update record item of listed documents/files/records\r\n const doc = findRecord(state.documents, id);\r\n if (doc) {\r\n doc.isDeleted = true;\r\n }\r\n\r\n // 4. Update a version of listed file versions\r\n if (state.record?.recordTypeId === recordType.FILE) {\r\n (state.versions ?? []).forEach(fv => {\r\n fv.isDeleted = true;\r\n });\r\n }\r\n\r\n // Set Delete Status to true\r\n state.recordDeleted = true;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Record Text Field Value\r\n * @param state\r\n * @param {{id:number, value:string}} payload\r\n */\r\nconst setRecordTextFieldValue = (state, payload) => {\r\n try {\r\n const fieldId = payload?.id ?? -1;\r\n const record =\r\n state.recordMode === recordMode.view ? state?.record : state?.recordNew;\r\n\r\n if ((record?.id ?? -1) >= 0) {\r\n const fv = record?.fieldValues?.find(fv => fv.id === fieldId);\r\n if (fv) {\r\n fv.value = payload?.value ?? \"\";\r\n fv.textLoaded = true;\r\n }\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Record Lookup Data\r\n * @param state\r\n * @param {{id:number, value: any}[]} fieldValues\r\n */\r\nconst setRecordLookupData = (state, fieldValues) => {\r\n try {\r\n const record = state?.recordNew;\r\n if (!record || !fieldValues) return;\r\n\r\n fieldValues.forEach(fv => {\r\n if ((fv?.id ?? -1) >= 0) {\r\n const fieldValue = record?.fieldValues?.find(\r\n el => el.id === (fv.id ?? -1)\r\n );\r\n if (fieldValue) {\r\n fieldValue.value = fv.value;\r\n }\r\n } else if ((fv?.id ?? 0) === -1) {\r\n record.name = fv.value ?? \"\";\r\n }\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * set Compound Document New File Versions\r\n * @param state\r\n * @param payload TODO: list of new Compound Document records (files) instead of a single record\r\n */\r\nconst setCompoundDocumentNewFileVersions = (state, payload) => {\r\n const newRecords = payload;\r\n\r\n console.log(`setCompoundDocumentNewFileVersions() newRecords:`, newRecords);\r\n\r\n if (!isArray(newRecords)) {\r\n return;\r\n }\r\n\r\n // Update child records of SELECTED record\r\n newRecords.forEach(record => {\r\n if ((state?.record?.id ?? -1) === record.parentId) {\r\n if (!state.documents) {\r\n state.documents = [];\r\n }\r\n\r\n //\r\n // TODO: insert/append accordingly\r\n //\r\n state.documents.push(createRecordInfo(record));\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Append new Records to Record List\r\n * @param state\r\n * @param newRecords - Records to be Appended\r\n */\r\nconst appendRecords = (state, newRecords) => {\r\n try {\r\n console.log(`appendRecords() newRecords:`, newRecords);\r\n\r\n if (!isArray(newRecords)) {\r\n return;\r\n }\r\n\r\n // Update child records of SELECTED record\r\n newRecords.forEach(record => {\r\n if (\r\n !state.records.find(recordObj => {\r\n return recordObj.id === record.id; // Check to Avoid Duplications\r\n })\r\n ) {\r\n state.records.push(record);\r\n }\r\n });\r\n } catch (e) {\r\n console.log(e?.toString());\r\n }\r\n};\r\nexport {\r\n setCurrentRecord,\r\n updateRecordStatus,\r\n setRecordLock,\r\n setRecordReadOnly,\r\n setRecordDraft,\r\n updateFileVersionInfo,\r\n updateRecordInfos,\r\n setUploadFileProgress,\r\n setRecordNew,\r\n setRecordNewAndCategory,\r\n setRecordCreated,\r\n setRecordEdit,\r\n setRecordEdited,\r\n setRecordMode,\r\n setRecordDeleted,\r\n setRecordTextFieldValue,\r\n setRecordLookupData,\r\n setCompoundDocumentNewFileVersions,\r\n setDocument,\r\n setDocumentChildren,\r\n setFileVersion,\r\n appendRecords\r\n};\r\n","// services\r\nimport { storeSelectedModuleItemId } from \"@/services/category/categoryModuleService\";\r\n\r\n// shared mutation types\r\nimport {\r\n SET_DRAWER_MINI,\r\n SET_DOCUMENTS,\r\n SET_DOCUMENT,\r\n SET_DOCUMENT_SEARCH_CATEGORY,\r\n SET_FILE_VERSION,\r\n SET_RECORD,\r\n UPDATE_RECORD_STATUS,\r\n UPDATE_RECORD_FILE_VERSION,\r\n UPDATE_RECORD_INFO,\r\n SET_DOCUMENT_CHILDREN\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// category mutation-types\r\nimport { SET_CATEGORIES, SET_CATEGORY } from \"@/store/category/mutation-types\";\r\nimport {\r\n setCurrentRecord,\r\n setDocument,\r\n setFileVersion,\r\n updateRecordStatus,\r\n updateFileVersionInfo,\r\n updateRecordInfos,\r\n setDocumentChildren\r\n} from \"@/store/shared/mutations/record/record-mutations\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\nconst mutations = {\r\n /**\r\n * Set drawer to mini state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_DRAWER_MINI]: (state, payload) => {\r\n state.drawerMini = payload || false;\r\n },\r\n\r\n /**\r\n * SET_CATEGORIES\r\n * @param state\r\n * @param {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string}} categories\r\n */\r\n [SET_CATEGORIES](state, categories) {\r\n state.categories = categories;\r\n console.log(SET_CATEGORIES, state.categories);\r\n },\r\n\r\n [SET_CATEGORY](state, category) {\r\n state.category = category;\r\n console.log(SET_CATEGORY, state.category);\r\n storeSelectedModuleItemId(state.category?.id ?? -1);\r\n },\r\n\r\n /**\r\n * Set current 'category' record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD](state, payload) {\r\n setCurrentRecord(state, payload);\r\n console.log(`${moduleNames.Category}.${SET_RECORD} record:`, state.record);\r\n console.log(\r\n `${moduleNames.Category}.${SET_RECORD} recordCategory:`,\r\n state.recordCategory\r\n );\r\n storeSelectedModuleItemId(state.record?.id ?? -1);\r\n },\r\n\r\n /**\r\n * SET RECORD FILE VERSION\r\n * @param state\r\n * @param payload\r\n */\r\n [UPDATE_RECORD_FILE_VERSION](state, payload) {\r\n updateFileVersionInfo(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Status\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [UPDATE_RECORD_STATUS](state, payload) {\r\n updateRecordStatus(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Infos of current record and all related records\r\n * @param state\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}[]}} payload RecordItemModel\r\n */\r\n [UPDATE_RECORD_INFO](state, payload) {\r\n updateRecordInfos(state, payload);\r\n },\r\n\r\n [SET_DOCUMENTS](state, documents) {\r\n state.documents = documents;\r\n console.log(SET_DOCUMENTS, state.documents);\r\n },\r\n\r\n /**\r\n * Set current selected 'category' document\r\n * @param state\r\n * @param {{document, category}} payload\r\n */\r\n [SET_DOCUMENT](state, payload) {\r\n setDocument(state, payload);\r\n console.log(\r\n `${moduleNames.Category}.${SET_DOCUMENT} document:`,\r\n state.document\r\n );\r\n console.log(\r\n `${moduleNames.Category}.${SET_DOCUMENT} documentCategory:`,\r\n state.documentCategory\r\n );\r\n },\r\n\r\n [SET_DOCUMENT_SEARCH_CATEGORY](state, payload) {\r\n state.searchCategory = payload;\r\n console.log(SET_DOCUMENT_SEARCH_CATEGORY, state.searchCategory);\r\n },\r\n\r\n /**\r\n * Set current 'Category' File Version\r\n * @param state\r\n * @param {{version, category}} payload\r\n */\r\n [SET_FILE_VERSION](state, payload) {\r\n setFileVersion(state, payload);\r\n console.log(\r\n `${moduleNames.Category}.${SET_FILE_VERSION} version:`,\r\n state.version\r\n );\r\n console.log(\r\n `${moduleNames.Category}.${SET_FILE_VERSION} versionCategory:`,\r\n state.versionCategory\r\n );\r\n },\r\n\r\n /**\r\n * Set document children of specified document\r\n * @param state\r\n * @param {{document, children}} payload\r\n */\r\n [SET_DOCUMENT_CHILDREN](state, payload) {\r\n setDocumentChildren(state, payload);\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\n\r\nconst state = {\r\n /**\r\n * TODO: when needed\r\n */\r\n notifications: [],\r\n\r\n /**\r\n * Is drawer Mini\r\n * @type {boolean}\r\n */\r\n drawerMini: false,\r\n\r\n /**\r\n * Record Categories (api.CategoryItemModel)\r\n * @type {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}}[]}\r\n */\r\n categories: [],\r\n\r\n /**\r\n * Current Record Category\r\n * @type {{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}[]}}\r\n */\r\n category: undefined,\r\n\r\n /**\r\n * Record data\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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: undefined,\r\n\r\n /**\r\n * Category of current selected/edited meeting\r\n * @type {{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}[]}}\r\n */\r\n recordCategory: undefined,\r\n\r\n /**\r\n * Child Records of SELECTED tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 documents: [],\r\n\r\n /**\r\n * Selected Document\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n document: undefined,\r\n\r\n /**\r\n * Category of a current selected/edited document\r\n * @type {{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 documentCategory: undefined,\r\n\r\n /**\r\n * Selected File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n version: undefined,\r\n\r\n /**\r\n * Category of a current selected version\r\n * @type {{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 versionCategory: undefined,\r\n\r\n /**\r\n * Category Types\r\n * @type {{id: number, name: string}[]}\r\n */\r\n categoryTypes: [],\r\n\r\n /**\r\n * Current selected search Record Category\r\n * @type {{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 searchCategory: undefined\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","/**\r\n * category module's getters\r\n * Using JavaScript ECMAScript 2021\r\n */\r\nconst getters = {\r\n /**\r\n * Get is category drawer Mini\r\n * @param state\r\n * @return {boolean}\r\n */\r\n drawerMini: state => state.drawerMini,\r\n\r\n /**\r\n * Get selected Module (category) Item (category)\r\n * @param state\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 selectedModuleItem: state => state.category,\r\n\r\n /**\r\n * Get selected Module (category) Item Id (id)\r\n * @param state\r\n * @return {*|number}\r\n */\r\n selectedModuleItemId: state => state.category?.id ?? -1,\r\n\r\n /**\r\n * Get selected Module (category) Item name\r\n * @param state\r\n * @return {string}\r\n */\r\n selectedModuleItemName: state => state.category?.name ?? \"\",\r\n\r\n /**\r\n * Get documents\r\n * @param state\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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 documents: state => state.documents ?? [],\r\n\r\n /**\r\n * find Document\r\n * @param state\r\n * @param getters\r\n * @return {function(*): T}\r\n */\r\n findDocument: (state, getters) => id =>\r\n getters.documents?.find(el => (el?.id ?? -1) === id)\r\n};\r\n\r\nexport default getters;\r\n","import {\r\n submitAgendaItem as apiSubmitAgendaItem,\r\n recallAgendaItem as apiRecallAgendaItem,\r\n postMeeting,\r\n unPostMeeting,\r\n publishMeeting,\r\n unPublishMeeting,\r\n createAgendaDocument,\r\n createDraftAgendaDocument,\r\n createOutlineAgendaDocument,\r\n createAgendaPacket as apiCreateAgendaPacket,\r\n referAgendaItem as apiReferAgendaItem,\r\n deferAgendaItem as apiDeferAgendaItem,\r\n moveMeetingContents as apiMoveMeetingContents,\r\n moveBackupMaterial as apiMoveBackupMaterial,\r\n getAgendaItemLegislatorNote,\r\n getAgendaSectionLegislatorNote,\r\n saveAgendaItemLegislatorNote,\r\n saveAgendaSectionLegislatorNote,\r\n deleteAgendaItemLegislatorNote,\r\n deleteAgendaSectionLegislatorNote,\r\n getAgendaMeetingRollCall,\r\n saveAgendaMeetingRollCall,\r\n submitMeetingAgendaItems,\r\n submitSectionAgendaItems,\r\n recallMeetingAgendaItems,\r\n recallSectionAgendaItems\r\n} from \"@/services/api/apiAgenda\";\r\n\r\n// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\n\r\nimport {\r\n UPDATE_DOCUMENT_LIST_BY_ID,\r\n UPDATE_RECORD_INFO,\r\n UPDATE_RECORD_LIST_BY_ID\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\nimport {\r\n agendaDocumentType,\r\n findAgendaDocumentType\r\n} from \"@/model/agenda/agendaModel\";\r\nimport { recordType } from \"@/model/record/recordModel\";\r\n\r\n/**\r\n * post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} id Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\nconst postAgendaMeeting = async (context, id) => {\r\n return postMeeting(id)\r\n .then(response => {\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to post Agenda Meeting (id: ${id})`));\r\n};\r\n\r\n/**\r\n * un post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} id Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\nconst unPostAgendaMeeting = async (context, id) => {\r\n return unPostMeeting(id)\r\n .then(response => {\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to Un-post Agenda Meeting (id: ${id})`));\r\n};\r\n\r\n/**\r\n * publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} id Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\nconst publishAgendaMeeting = async (context, id) => {\r\n return publishMeeting(id)\r\n .then(response => {\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n context.commit(UPDATE_DOCUMENT_LIST_BY_ID, response?.data?.id ?? -1);\r\n context.commit(UPDATE_RECORD_LIST_BY_ID, response?.data?.id ?? -1);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to publish Agenda Meeting (id: ${id})`));\r\n};\r\n\r\n/**\r\n * un publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} id Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\nconst unPublishAgendaMeeting = async (context, id) => {\r\n return unPublishMeeting(id)\r\n .then(response => {\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n context.commit(UPDATE_DOCUMENT_LIST_BY_ID, response?.data?.id ?? -1);\r\n context.commit(UPDATE_RECORD_LIST_BY_ID, response?.data?.id ?? -1);\r\n return context.state?.record;\r\n })\r\n .catch(e =>\r\n handleError(e, `Unable to un-publish Agenda Meeting (id: ${id})`)\r\n );\r\n};\r\n\r\n/**\r\n * submit Agenda Item\r\n * @param context\r\n * @param {Number|number} id Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\nconst submitAgendaItem = async (context, id) => {\r\n return apiSubmitAgendaItem(id)\r\n .then(response => {\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to submit Agenda Item (id: ${id})`));\r\n};\r\n\r\n/**\r\n * recall Agenda Item\r\n * @param context\r\n * @param {Number|number} id Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\nconst recallAgendaItem = async (context, id) => {\r\n return apiRecallAgendaItem(id)\r\n .then(response => {\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n return context.state?.record;\r\n })\r\n .catch(e => handleError(e, `Unable to recall Agenda Item (id: ${id})`));\r\n};\r\n\r\n/**\r\n *\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, type: number}} payload\r\n * @return {Promise}\r\n */\r\nconst createAgenda = async (context, payload) => {\r\n const typeId = payload?.type ?? -1;\r\n const type = findAgendaDocumentType(typeId);\r\n\r\n try {\r\n switch (typeId) {\r\n case agendaDocumentType.agendaDocument: {\r\n const response = await createAgendaDocument(\r\n payload?.meetingId ?? -1,\r\n payload?.recordId ?? -1\r\n );\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n break;\r\n }\r\n case agendaDocumentType.agendaDraft: {\r\n const response = await createDraftAgendaDocument(\r\n payload?.meetingId ?? -1,\r\n payload?.recordId ?? -1\r\n );\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n break;\r\n }\r\n case agendaDocumentType.agendaOutline: {\r\n const response = await createOutlineAgendaDocument(\r\n payload?.meetingId ?? -1,\r\n payload?.recordId ?? -1\r\n );\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n break;\r\n }\r\n default: {\r\n throw type\r\n ? `Not implemented ${type.label} yet.`\r\n : `Invalid Agenda document Type id: ${typeId}`;\r\n }\r\n }\r\n } catch (e) {\r\n return await handleError(e, `Unable to create ${type?.label})`);\r\n }\r\n};\r\n\r\n/**\r\n *\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, option: any}} payload\r\n * @return {Promise}\r\n */\r\nconst createAgendaPacket = async (context, payload) => {\r\n try {\r\n const response = await apiCreateAgendaPacket(\r\n payload?.meetingId ?? -1,\r\n payload?.recordId ?? -1,\r\n payload?.option ?? null\r\n );\r\n context.commit(UPDATE_RECORD_INFO, response?.data);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to create ${\r\n findAgendaDocumentType(agendaDocumentType.agendaPacket)?.label\r\n })`\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * Refer Agenda Item\r\n * @param context\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:number}} payload\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst referAgendaItem = async (context, payload) => {\r\n try {\r\n return await apiReferAgendaItem(\r\n payload.sourceId,\r\n payload.destinationId,\r\n payload.option,\r\n payload.index\r\n );\r\n } catch (e) {\r\n return await handleError(e, `Unable to Refer Agenda Item`);\r\n }\r\n};\r\n\r\n/**\r\n * Defer Agenda Item\r\n * @param context\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:number}} payload\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst deferAgendaItem = async (context, payload) => {\r\n try {\r\n return await apiDeferAgendaItem(\r\n payload.sourceId,\r\n payload.destinationId,\r\n payload.option,\r\n payload.index\r\n );\r\n } catch (e) {\r\n return await handleError(e, `Unable to Defer Agenda Item`);\r\n }\r\n};\r\n\r\n/**\r\n * Get Legislator Note\r\n * @param context\r\n * @param {{record}} record\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\nconst getLegislatorNote = async (context, record) => {\r\n try {\r\n const isAgendaItem =\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM;\r\n const response = isAgendaItem\r\n ? await getAgendaItemLegislatorNote(record?.id)\r\n : await getAgendaSectionLegislatorNote(record?.id);\r\n\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(e, `Unable to Get Legislator Note`);\r\n }\r\n};\r\n\r\n/**\r\n * Save Legislator Note\r\n * @param context\r\n * @param {{record: Object, note: String}} payload\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\nconst saveLegislatorNote = async (context, payload) => {\r\n try {\r\n const isAgendaItem =\r\n (payload.record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM;\r\n const response = isAgendaItem\r\n ? await saveAgendaItemLegislatorNote(payload.record.id, payload.note)\r\n : await saveAgendaSectionLegislatorNote(payload.record.id, payload.note);\r\n\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(e, `Unable to Save Legislator Note`);\r\n }\r\n};\r\n\r\n/**\r\n * Delete Legislator Note\r\n * @param context\r\n * @param {{record: Object}} record\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst deleteLegislatorNote = async (context, record) => {\r\n try {\r\n const isAgendaItem =\r\n (record?.recordTypeId ?? recordType.RECORD) === recordType.ITEM;\r\n const response = isAgendaItem\r\n ? await deleteAgendaItemLegislatorNote(record?.id)\r\n : await deleteAgendaSectionLegislatorNote(record?.id);\r\n\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(e, `Unable to Delete Legislator Note`);\r\n }\r\n};\r\n\r\n/**\r\n * Get Roll Call\r\n * @param context\r\n * @param {id:Number} id\r\n * @return {Promise<{rollCall:Object[], actor:Object[], rollCallStatus:Object[] }>}\r\n */\r\nconst getRollCall = async (context, id) => {\r\n try {\r\n const response = await getAgendaMeetingRollCall(id);\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(e, `Unable to Get Roll Call`);\r\n }\r\n};\r\n\r\n/**\r\n * Save Roll Call\r\n * @param context\r\n * @param {{id:number, rollCall:Array}} payload\r\n * @return {Promise}\r\n */\r\nconst saveRollCall = async (context, payload) => {\r\n try {\r\n const response = await saveAgendaMeetingRollCall(payload);\r\n return response?.data;\r\n } catch (e) {\r\n return await handleError(e, `Unable to Save Roll Call`);\r\n }\r\n};\r\n\r\n/**\r\n * Submit Meeting Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst submitAgendaItemsMeeting = async (context, id) => {\r\n try {\r\n return await submitMeetingAgendaItems(id).then(response => {\r\n const records = response?.data ?? [];\r\n\r\n records.forEach(record => {\r\n context.commit(UPDATE_RECORD_INFO, record);\r\n });\r\n\r\n return records;\r\n });\r\n } catch (e) {\r\n return await handleError(e, `Unable to Submit AgendaItems`);\r\n }\r\n};\r\n\r\n/**\r\n * Submit Section Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst submitAgendaItemsSection = async (context, id) => {\r\n try {\r\n return await submitSectionAgendaItems(id).then(response => {\r\n const records = response?.data ?? [];\r\n\r\n records.forEach(record => {\r\n context.commit(UPDATE_RECORD_INFO, record);\r\n });\r\n\r\n return records;\r\n });\r\n } catch (e) {\r\n return await handleError(e, `Unable to Submit AgendaItems`);\r\n }\r\n};\r\n\r\n/**\r\n * recall Meeting Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst recallAgendaItemsMeeting = async (context, id) => {\r\n try {\r\n return await recallMeetingAgendaItems(id).then(response => {\r\n const records = response?.data ?? [];\r\n\r\n records.forEach(record => {\r\n context.commit(UPDATE_RECORD_INFO, record);\r\n });\r\n\r\n return records;\r\n });\r\n } catch (e) {\r\n return await handleError(e, `Unable to Recall AgendaItems`);\r\n }\r\n};\r\n\r\n/**\r\n * recall Section Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]|*[]>}\r\n */\r\nconst recallAgendaItemsSection = async (context, id) => {\r\n try {\r\n return await recallSectionAgendaItems(id).then(response => {\r\n const records = response?.data ?? [];\r\n\r\n records.forEach(record => {\r\n context.commit(UPDATE_RECORD_INFO, record);\r\n });\r\n\r\n return records;\r\n });\r\n } catch (e) {\r\n return await handleError(e, `Unable to Recall AgendaItems`);\r\n }\r\n};\r\n\r\n/**\r\n * move Meeting Contents\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst moveMeetingContents = async (context, payload) => {\r\n try {\r\n const response = await apiMoveMeetingContents(payload);\r\n context.commit(UPDATE_DOCUMENT_LIST_BY_ID, response?.data?.parentId ?? -1);\r\n return response;\r\n } catch (e) {\r\n return await handleError(e, `Move Failed`);\r\n }\r\n};\r\n\r\n/**\r\n * move Backup Material\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst moveBackupMaterial = async (context, payload) => {\r\n try {\r\n const response = await apiMoveBackupMaterial(payload);\r\n context.commit(UPDATE_DOCUMENT_LIST_BY_ID, response?.data?.parentId ?? -1);\r\n return response;\r\n } catch (e) {\r\n return await handleError(e, `Move Failed`);\r\n }\r\n};\r\n\r\nexport {\r\n postAgendaMeeting,\r\n unPostAgendaMeeting,\r\n publishAgendaMeeting,\r\n unPublishAgendaMeeting,\r\n submitAgendaItem,\r\n recallAgendaItem,\r\n createAgenda,\r\n createAgendaPacket,\r\n referAgendaItem,\r\n deferAgendaItem,\r\n getLegislatorNote,\r\n saveLegislatorNote,\r\n deleteLegislatorNote,\r\n getRollCall,\r\n saveRollCall,\r\n submitAgendaItemsMeeting,\r\n submitAgendaItemsSection,\r\n recallAgendaItemsMeeting,\r\n recallAgendaItemsSection,\r\n moveMeetingContents,\r\n moveBackupMaterial\r\n};\r\n","// common\r\nimport { filterFilesAndDocuments } from \"@/services/record/recordService\";\r\n\r\n// services\r\nimport {\r\n getCategories,\r\n getCategory,\r\n getCategoryDocuments,\r\n downloadFile,\r\n countRecords\r\n} from \"@/services/api/apiContent\";\r\nimport { handleError } from \"@/services/error/errorService\";\r\n\r\n// shared mutation types\r\nimport { SET_DOCUMENTS } from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// category mutation-types\r\nimport { SET_CATEGORIES, SET_CATEGORY } from \"@/store/category/mutation-types\";\r\n\r\n// record-actions\r\nimport {\r\n checkOutFile,\r\n clearDocuments,\r\n deleteRecord,\r\n deleteRecordShortcut,\r\n lockRecord,\r\n restoreRecord,\r\n setDocument,\r\n setFileVersion,\r\n setReadOnlyRecord,\r\n setSearchCategory,\r\n unLockRecord\r\n} from \"@/store/shared/actions/record/record-actions\";\r\n\r\nimport {\r\n setDocumentChildren,\r\n setFoundDocuments\r\n} from \"@/store/shared/actions/record/hierarchy-actions\";\r\n\r\n// model\r\nimport { categoryAll } from \"@/model/category/categoryModel\";\r\nimport {\r\n recallAgendaItem,\r\n submitAgendaItem\r\n} from \"@/store/shared/actions/agenda/agenda-actions\";\r\n\r\nconst actions = {\r\n /**\r\n * Set document categories\r\n * @param context\r\n * @returns {Promise<[{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string}]>}\r\n */\r\n async setCategories(context) {\r\n return getCategories()\r\n .then(response => {\r\n context.commit(SET_CATEGORIES, response.data);\r\n return Promise.resolve(response.data);\r\n })\r\n .catch(error => handleError(error, `Unable to set Categories`));\r\n },\r\n\r\n /**\r\n * Set Category\r\n * @param context\r\n * @param {Number} id\r\n * @returns {Promise<{}>}\r\n */\r\n async setCategory(context, id) {\r\n if (id === -1) {\r\n return new Promise(resolutionFunc => {\r\n context.commit(SET_CATEGORY, categoryAll);\r\n resolutionFunc(categoryAll);\r\n });\r\n }\r\n return getCategory(id)\r\n .then(response => {\r\n context.commit(SET_CATEGORY, response.data);\r\n return response.data;\r\n })\r\n .catch(e =>\r\n handleError(e, `Unable to set Category by Category id: ${id}`)\r\n );\r\n },\r\n\r\n /**\r\n * Set documents of current selected category\r\n * @param context\r\n * @param args\r\n * @returns {Promise}\r\n */\r\n setDocuments(context, args) {\r\n const id = context?.state?.category?.id ?? -1;\r\n\r\n // Clear current documents\r\n context.commit(SET_DOCUMENTS, []);\r\n\r\n return getCategoryDocuments(\r\n id,\r\n args.page,\r\n args.pageSize,\r\n args.searchTerm,\r\n args.formData\r\n )\r\n .then(response => {\r\n return response.data;\r\n })\r\n .then(data => {\r\n const docs = filterFilesAndDocuments(data);\r\n\r\n context.commit(SET_DOCUMENTS, docs);\r\n\r\n return data;\r\n })\r\n .catch(error =>\r\n handleError(error, `Couldn't get documents by Category id: ${id}`)\r\n );\r\n },\r\n\r\n /**\r\n * Clear current list of documents\r\n * @param context\r\n */\r\n clearDocuments(context) {\r\n clearDocuments(context);\r\n },\r\n\r\n /**\r\n * Set found documents of current selected record of record Module and provided search criteria\r\n * @param context\r\n * @param payload\r\n * @returns {Promise}\r\n */\r\n async setFoundDocuments(context, payload) {\r\n return await setFoundDocuments(context, payload);\r\n },\r\n\r\n /**\r\n * Set current Document\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\n async setDocument(context, id) {\r\n return await setDocument(context, id);\r\n },\r\n\r\n /**\r\n * Download File\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<*>}\r\n */\r\n async downloadFile(context, id) {\r\n try {\r\n return await downloadFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to download File by id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * Set Document search category\r\n * @param context\r\n * @param {Number} id\r\n * @returns {Promise<{id:number, name:string}>}\r\n */\r\n async setSearchCategory(context, id) {\r\n return await setSearchCategory(context, id);\r\n },\r\n\r\n /**\r\n * set File Version\r\n * @param context\r\n * @param {id:number, version:number} payload\r\n * @return {Promise}\r\n */\r\n async setFileVersion(context, payload) {\r\n return await setFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * set Document Children\r\n * @param context\r\n * @param {Number|number} id parent record id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async setDocumentChildren(context, id) {\r\n return await setDocumentChildren(context, id);\r\n },\r\n\r\n /**\r\n * get Total Result Count- Category\r\n * @param context\r\n * @param { queryModel: {CategoryId: number, TypeId: number, Owner: string, CreatedDateTo: string, StateId: number, Creator: string, Name: string, Extension: string, Pages: number, Fields: {any}[], Version: number, CreatedDateFrom: string, ModifiedDateTo: string, ModifiedDateFrom: string}} queryModel\r\n * @return {Promise}\r\n */\r\n async getTotalCount(context, queryModel) {\r\n return await countRecords(queryModel);\r\n },\r\n\r\n /**\r\n * check Out File\r\n * @param context\r\n * @param {Number|number} id\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 async checkOutFile(context, id) {\r\n return await checkOutFile(context, id);\r\n },\r\n\r\n /**\r\n * delete Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async deleteRecord(context, payload) {\r\n return await deleteRecord(context, payload);\r\n },\r\n\r\n /**\r\n * delete Record Shortcut\r\n * @param context\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async deleteRecordShortcut(context, payload) {\r\n return await deleteRecordShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * Restore Record\r\n * @param context\r\n * @param id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\n async restoreRecord(context, id) {\r\n return await restoreRecord(context, id);\r\n },\r\n\r\n /**\r\n * submit Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async submitAgendaItem(context, payload) {\r\n return await submitAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * recall Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async recallAgendaItem(context, payload) {\r\n return await recallAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async lockRecord(context, id) {\r\n return await lockRecord(context, id);\r\n },\r\n\r\n /**\r\n * Un Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async unLockRecord(context, id) {\r\n return await unLockRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Read Only Record\r\n * @param context\r\n * @param {Number|number} id\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 async setReadOnlyRecord(context, id) {\r\n return await setReadOnlyRecord(context, id);\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// services\r\nimport { storeSelectedModuleItemId } from \"@/services/category/categoryModuleService\";\r\n\r\n// shared mutation types\r\nimport {\r\n SET_DRAWER_MINI,\r\n SET_DOCUMENTS,\r\n SET_DOCUMENT,\r\n SET_DOCUMENT_SEARCH_CATEGORY,\r\n SET_FILE_VERSION,\r\n SET_RECORD,\r\n UPDATE_RECORD_STATUS,\r\n UPDATE_RECORD_FILE_VERSION,\r\n UPDATE_RECORD_INFO,\r\n SET_DOCUMENT_CHILDREN,\r\n SET_RECORD_DELETED\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// category mutation-types\r\nimport { SET_CATEGORIES, SET_CATEGORY } from \"@/store/category/mutation-types\";\r\nimport {\r\n setCurrentRecord,\r\n setDocument,\r\n setFileVersion,\r\n updateRecordStatus,\r\n updateFileVersionInfo,\r\n updateRecordInfos,\r\n setDocumentChildren,\r\n setRecordDeleted\r\n} from \"@/store/shared/mutations/record/record-mutations\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\nconst mutations = {\r\n /**\r\n * Set drawer to mini state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_DRAWER_MINI]: (state, payload) => {\r\n state.drawerMini = payload || false;\r\n },\r\n\r\n /**\r\n * SET_CATEGORIES\r\n * @param state\r\n * @param {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string}} categories\r\n */\r\n [SET_CATEGORIES](state, categories) {\r\n state.categories = categories;\r\n console.log(SET_CATEGORIES, state.categories);\r\n },\r\n\r\n [SET_CATEGORY](state, category) {\r\n state.category = category;\r\n console.log(SET_CATEGORY, state.category);\r\n storeSelectedModuleItemId(state.category?.id ?? -1);\r\n },\r\n\r\n /**\r\n * Set current 'category' record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD](state, payload) {\r\n setCurrentRecord(state, payload);\r\n console.log(`${moduleNames.Category}.${SET_RECORD} record:`, state.record);\r\n console.log(\r\n `${moduleNames.Category}.${SET_RECORD} recordCategory:`,\r\n state.recordCategory\r\n );\r\n storeSelectedModuleItemId(state.record?.id ?? -1);\r\n },\r\n\r\n /**\r\n * SET RECORD FILE VERSION\r\n * @param state\r\n * @param payload\r\n */\r\n [UPDATE_RECORD_FILE_VERSION](state, payload) {\r\n updateFileVersionInfo(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Status\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [UPDATE_RECORD_STATUS](state, payload) {\r\n updateRecordStatus(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Infos of current record and all related records\r\n * @param state\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}[]}} payload RecordItemModel\r\n */\r\n [UPDATE_RECORD_INFO](state, payload) {\r\n updateRecordInfos(state, payload);\r\n },\r\n\r\n [SET_DOCUMENTS](state, documents) {\r\n state.documents = documents;\r\n console.log(SET_DOCUMENTS, state.documents);\r\n },\r\n\r\n /**\r\n * Set current selected 'category' document\r\n * @param state\r\n * @param {{document, category}} payload\r\n */\r\n [SET_DOCUMENT](state, payload) {\r\n setDocument(state, payload);\r\n console.log(\r\n `${moduleNames.Category}.${SET_DOCUMENT} document:`,\r\n state.document\r\n );\r\n console.log(\r\n `${moduleNames.Category}.${SET_DOCUMENT} documentCategory:`,\r\n state.documentCategory\r\n );\r\n },\r\n\r\n [SET_DOCUMENT_SEARCH_CATEGORY](state, payload) {\r\n state.searchCategory = payload;\r\n console.log(SET_DOCUMENT_SEARCH_CATEGORY, state.searchCategory);\r\n },\r\n\r\n /**\r\n * Set current 'Category' File Version\r\n * @param state\r\n * @param {{version, category}} payload\r\n */\r\n [SET_FILE_VERSION](state, payload) {\r\n setFileVersion(state, payload);\r\n console.log(\r\n `${moduleNames.Category}.${SET_FILE_VERSION} version:`,\r\n state.version\r\n );\r\n console.log(\r\n `${moduleNames.Category}.${SET_FILE_VERSION} versionCategory:`,\r\n state.versionCategory\r\n );\r\n },\r\n\r\n /**\r\n * Set document children of specified document\r\n * @param state\r\n * @param {{document, children}} payload\r\n */\r\n [SET_DOCUMENT_CHILDREN](state, payload) {\r\n setDocumentChildren(state, payload);\r\n },\r\n\r\n [SET_RECORD_DELETED](state, payload) {\r\n setRecordDeleted(state, payload);\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\n\r\nconst state = {\r\n /**\r\n * TODO: when needed\r\n */\r\n notifications: [],\r\n\r\n /**\r\n * Is drawer Mini\r\n * @type {boolean}\r\n */\r\n drawerMini: false,\r\n\r\n /**\r\n * Record Categories (api.CategoryItemModel)\r\n * @type {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}}[]}\r\n */\r\n categories: [],\r\n\r\n /**\r\n * Current Record Category\r\n * @type {{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}[]}}\r\n */\r\n category: undefined,\r\n\r\n /**\r\n * Record data\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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: undefined,\r\n\r\n /**\r\n * Category of current selected/edited meeting\r\n * @type {{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}[]}}\r\n */\r\n recordCategory: undefined,\r\n\r\n /**\r\n * Child Records of SELECTED tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 documents: [],\r\n\r\n /**\r\n * Selected Document\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n document: undefined,\r\n\r\n /**\r\n * Category of a current selected/edited document\r\n * @type {{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 documentCategory: undefined,\r\n\r\n /**\r\n * Selected File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n version: undefined,\r\n\r\n /**\r\n * Category of a current selected version\r\n * @type {{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 versionCategory: undefined,\r\n\r\n /**\r\n * Category Types\r\n * @type {{id: number, name: string}[]}\r\n */\r\n categoryTypes: [],\r\n\r\n /**\r\n * Current selected search Record Category\r\n * @type {{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 searchCategory: undefined\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","/**\r\n * folder module's getters\r\n * Using Java Script ECMAScript 2021\r\n */\r\nconst getters = {\r\n /**\r\n * Get is folder drawer Mini\r\n * @param state\r\n * @return {boolean}\r\n */\r\n drawerMini: state => state.drawerMini ?? true,\r\n\r\n /**\r\n * Get selected Module (folder) Item (record)\r\n * @param state\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}[]}}\r\n */\r\n selectedModuleItem: state => state.record,\r\n\r\n /**\r\n * Get selected Module (folder) Item Id (id)\r\n * @param state\r\n * @return {number|number}\r\n */\r\n selectedModuleItemId: state => state.record?.id ?? -1,\r\n\r\n /**\r\n * Get selected Module (folder) Item name\r\n * @param state\r\n * @return {string}\r\n */\r\n selectedModuleItemName: state => state.record?.name ?? \"\",\r\n\r\n /**\r\n * Get documents\r\n * @param state\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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 documents: state => state.documents ?? [],\r\n\r\n /**\r\n * find Document\r\n * @param state\r\n * @param getters\r\n * @return {function(*): T}\r\n */\r\n findDocument: (state, getters) => id =>\r\n getters.documents?.find(el => (el?.id ?? -1) === id),\r\n\r\n /**\r\n * find record's Project by provided project id\r\n * @param state\r\n * @param getters\r\n * @return {function(*): *}\r\n */\r\n findProject: (state, getters) => id =>\r\n getters.projects?.find(el => (el?.projectId ?? -1) === id)\r\n};\r\n\r\nexport default getters;\r\n","// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\nimport {\r\n deleteWorkflowProject as apiDeleteWorkflowProject,\r\n cancelWorkflowProject as apiCancelWorkflowProject,\r\n suspendWorkflowProject as apiSuspendWorkflowProject,\r\n resumeWorkflowProject as apiResumeWorkflowProject\r\n} from \"@/services/api/apiWorkflow\";\r\n\r\n// store\r\nimport {\r\n SET_PROJECT_DELETED,\r\n SET_PROJECT_CANCELED,\r\n SET_PROJECT_SUSPENDED,\r\n SET_PROJECT_RESUMED\r\n} from \"@/store/shared/mutationTypes/project/project-mutation-types\";\r\n\r\n/**\r\n * delete Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\nconst deleteWorkflowProject = async (context, id) => {\r\n try {\r\n console.log(`deleteWorkflowProject() id:`, id);\r\n const response = await apiDeleteWorkflowProject(id);\r\n if (response.data) {\r\n context.commit(SET_PROJECT_DELETED, id);\r\n }\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to delete project. (Project id: ${id})`\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * suspend Workflow Project\r\n * @param context\r\n * @param {{ id: Number, message: String}} payload\r\n * @return {Promise}\r\n */\r\nconst suspendWorkflowProject = async (context, payload) => {\r\n const id = payload?.id ?? -1;\r\n const message = payload?.message ?? undefined;\r\n try {\r\n console.log(`suspendWorkflowProject() id:`, id);\r\n const response = await apiSuspendWorkflowProject(id, message);\r\n if (response.data) {\r\n context.commit(SET_PROJECT_SUSPENDED, id);\r\n }\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to suspend project. (Project id: ${id})`\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * cancel Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\nconst cancelWorkflowProject = async (context, id) => {\r\n try {\r\n console.log(`cancelWorkflowProject() id:`, id);\r\n const response = await apiCancelWorkflowProject(id);\r\n if (response.data) {\r\n context.commit(SET_PROJECT_CANCELED, id);\r\n }\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to cancel project. (Project id: ${id})`\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * resume Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\nconst resumeWorkflowProject = async (context, id) => {\r\n try {\r\n console.log(`resumeWorkflowProject() id:`, id);\r\n const response = await apiResumeWorkflowProject(id);\r\n if (response.data) {\r\n context.commit(SET_PROJECT_RESUMED, id);\r\n }\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to resume project. (Project id: ${id})`\r\n );\r\n }\r\n};\r\n\r\nexport {\r\n deleteWorkflowProject,\r\n suspendWorkflowProject,\r\n cancelWorkflowProject,\r\n resumeWorkflowProject\r\n};\r\n","// Web API Service\r\n\r\n// apiContent\r\nimport {\r\n downloadFile,\r\n getRecordInfo,\r\n reindexDocument,\r\n reindexFile,\r\n countRecordsWithIn\r\n} from \"@/services/api/apiContent\";\r\n\r\n// shared record actions\r\nimport {\r\n lockRecord,\r\n unLockRecord,\r\n setDraftRecord,\r\n setReadOnlyRecord,\r\n uploadFile,\r\n uploadCompoundDocumentFile,\r\n setDocument,\r\n setRecord,\r\n setDocuments,\r\n clearDocuments,\r\n setSearchCategory,\r\n checkOutFile,\r\n checkOutFileForSign,\r\n releaseFile,\r\n checkInFile,\r\n setFileVersions,\r\n setFileVersion,\r\n downloadImageFileVersion as apiDownloadImageFileVersion,\r\n saveRecord,\r\n deleteRecord,\r\n setNewRecordCategory,\r\n setRecordTextFieldValue,\r\n setDatabaseLookupData,\r\n checkInScannedFile,\r\n checkInEditedDocument,\r\n moveRecord,\r\n copyRecord,\r\n createShortcut,\r\n deleteRecordShortcut,\r\n moveRecordShortcut,\r\n copyRecordShortcut,\r\n setRecordShortcut,\r\n setChildrenDocuments,\r\n restoreRecord\r\n} from \"@/store/shared/actions/record/record-actions\";\r\n\r\n// record hierarchy actions\r\nimport {\r\n setBreadcrumbs,\r\n setFoundDocuments,\r\n setParentBreadcrumbs,\r\n setChildRecords,\r\n createRecord,\r\n createAgendaMeeting,\r\n createAgendaItem,\r\n setDocumentChildren,\r\n setProjects,\r\n setOpenProject,\r\n startWorkflowProject,\r\n setProjectNewTemplate,\r\n setNewWorkflowProject,\r\n setSearchedChildRecords\r\n} from \"@/store/shared/actions/record/hierarchy-actions\";\r\n\r\n// agenda-actions\r\nimport {\r\n submitAgendaItem,\r\n recallAgendaItem,\r\n postAgendaMeeting,\r\n unPostAgendaMeeting,\r\n publishAgendaMeeting,\r\n unPublishAgendaMeeting,\r\n createAgenda,\r\n createAgendaPacket,\r\n referAgendaItem,\r\n deferAgendaItem,\r\n submitAgendaItemsMeeting,\r\n submitAgendaItemsSection,\r\n recallAgendaItemsMeeting,\r\n recallAgendaItemsSection,\r\n moveMeetingContents,\r\n moveBackupMaterial\r\n} from \"@/store/shared/actions/agenda/agenda-actions\";\r\n\r\n// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\nimport {\r\n cancelWorkflowProject,\r\n deleteWorkflowProject,\r\n resumeWorkflowProject,\r\n suspendWorkflowProject\r\n} from \"@/store/shared/actions/project/project-actions\";\r\nimport { assignManager } from \"@/services/api/apiWorkflow\";\r\n\r\nconst actions = {\r\n /**\r\n * set Breadcrumbs\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise<{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}[]}[]|(function(): *[])|string|*|*[]>}\r\n */\r\n async setBreadcrumbs(context, id) {\r\n return await setBreadcrumbs(context, id);\r\n },\r\n\r\n /**\r\n * set Parent Breadcrumbs\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise<{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}[]}[]|(function(): *[])|string|*|*[]>}\r\n */\r\n async setParentBreadcrumbs(context, id) {\r\n return await setParentBreadcrumbs(context, id);\r\n },\r\n\r\n /**\r\n * Set Child Records\r\n * @param context\r\n * @param {{id:Number, recordIndex:Number, count:Number}} payload\r\n * @returns {Promise<[]|void|[{children:name: string, id: number}]>}\r\n */\r\n async setChildRecords(context, payload) {\r\n return await setChildRecords(context, payload);\r\n },\r\n\r\n /**\r\n * Set Searched Child Records\r\n * @param context\r\n * @param {{CategoryId: {Value: number, Operator: string}, TypeId: {Operator: string, Value: *}, Owner: {Operator: string, Value: *}, CreatedDateTo: {Operator: string, Value: *}, StateId: {Operator: string, Value: *}, Creator: {Operator: string, Value: *}, Name: {Operator: string, Value: *}, Extension: {Operator: string, Value: *}, Pages: {Operator: string, Value: *}, Fields: {Id: number, Include: boolean, Value: *, Operator: string}[], StartPage: number, Version: {Operator: string, Value: *}, CreatedDateFrom: {Operator: string, Value: *}, ModifiedDateTo: {Operator: string, Value: *}, Id: {Operator: string, Value: *}, ModifiedDateFrom: {Operator: string, Value: *}, ChildrenOnly: {Value: number, Operator: string}, WithInId:number, CountPerPage: number}} payload\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\n async setSearchedChildRecords(context, payload) {\r\n return await setSearchedChildRecords(context, payload);\r\n },\r\n\r\n /**\r\n * Set the current record\r\n * @param context\r\n * @param {number} id record id\r\n * @return {Promise<{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}}, 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 async setRecord(context, id) {\r\n return setRecord(context, id);\r\n },\r\n\r\n /**\r\n * Set record shortcut\r\n * @param context\r\n * @param payload {{id:Number, parentId: Number}}\r\n * @return {Promise<{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}}, 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 async setRecordShortcut(context, payload) {\r\n return setRecordShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * Set current documents\r\n * @param context\r\n * @param {Number|number} id\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 async setDocuments(context, id) {\r\n return await setDocuments(context, id);\r\n },\r\n\r\n /**\r\n * Set children documents\r\n * @param context\r\n * @param {{id:Number, recordIndex:Number, count: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 async setChildrenDocuments(context, payload) {\r\n return await setChildrenDocuments(context, payload);\r\n },\r\n\r\n /**\r\n * Clear current list of documents\r\n * @param context\r\n */\r\n clearDocuments(context) {\r\n clearDocuments(context);\r\n },\r\n\r\n /**\r\n * set File Versions\r\n * @param context\r\n * @param id\r\n * @return {Promise}\r\n */\r\n async setFileVersions(context, id) {\r\n return await setFileVersions(context, id);\r\n },\r\n\r\n /**\r\n * set File Version\r\n * @param context\r\n * @param {id:number, version:number} payload\r\n * @return {Promise<{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, 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}}, 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 async setFileVersion(context, payload) {\r\n return await setFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Set found documents of current selected record of record Module and provided search criteria\r\n * @param context\r\n * @param payload\r\n * @returns {Promise}\r\n */\r\n async setFoundDocuments(context, payload) {\r\n return await setFoundDocuments(context, payload);\r\n },\r\n\r\n /**\r\n * Set current Document\r\n * @param context\r\n * @param {Number|number} id Document id\r\n * @return {Promise<{id: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}}, 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, 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}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\n async setDocument(context, id) {\r\n return setDocument(context, id);\r\n },\r\n\r\n /**\r\n * Download File\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<*>}\r\n */\r\n async downloadFile(context, id) {\r\n try {\r\n return await downloadFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to download File by id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * download image File Version\r\n * @param context\r\n * @param payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadImageFileVersion(context, payload) {\r\n return await apiDownloadImageFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Upload File to an empty record\r\n * @param context\r\n * @param {{id:Number, file:any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} payload\r\n * @return {Promise}\r\n */\r\n async uploadFile(context, payload) {\r\n return await uploadFile(context, payload);\r\n },\r\n\r\n /**\r\n * upload Compound Document File\r\n * @param context\r\n * @param {{id: Number, file: any, insertBeforePage: Number, enqueue: Boolean, comments: string}} 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 async uploadCompoundDocumentFile(context, payload) {\r\n return await uploadCompoundDocumentFile(context, payload);\r\n },\r\n\r\n /**\r\n * check Out File\r\n * @param context\r\n * @param {Number|number} id\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 async checkOutFile(context, id) {\r\n return await checkOutFile(context, id);\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 * @param context\r\n * @param {Number|number} id\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 async checkOutFileForSign(context, id) {\r\n return await checkOutFileForSign(context, id);\r\n },\r\n\r\n /**\r\n * release File\r\n * @param context\r\n * @param {Number|number} id\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 async releaseFile(context, id) {\r\n return await releaseFile(context, id);\r\n },\r\n\r\n /**\r\n * check In File\r\n * @param context\r\n * @param {{id: Number, file: any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} 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 async checkInFile(context, payload) {\r\n return await checkInFile(context, payload);\r\n },\r\n\r\n /**\r\n * Set Document search category\r\n * @param context\r\n * @param {Number} id\r\n * @returns {Promise<{id:number, name:string}>}\r\n */\r\n async setSearchCategory(context, id) {\r\n return await setSearchCategory(context, id);\r\n },\r\n\r\n /**\r\n * Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async lockRecord(context, id) {\r\n return await lockRecord(context, id);\r\n },\r\n\r\n /**\r\n * Un Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async unLockRecord(context, id) {\r\n return await unLockRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Draft Record\r\n * @param context\r\n * @param {Number|number} id\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 async setDraftRecord(context, id) {\r\n return await setDraftRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Read Only Record\r\n * @param context\r\n * @param {Number|number} id\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 async setReadOnlyRecord(context, id) {\r\n return await setReadOnlyRecord(context, id);\r\n },\r\n\r\n /**\r\n * create Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async createRecord(context, payload) {\r\n return await createRecord(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Meeting\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async createAgendaMeeting(context, payload) {\r\n return await createAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Item\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async createAgendaItem(context, payload) {\r\n return await createAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * save Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async saveRecord(context, payload) {\r\n return await saveRecord(context, payload);\r\n },\r\n\r\n /**\r\n * delete Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async deleteRecord(context, payload) {\r\n return await deleteRecord(context, payload);\r\n },\r\n\r\n /**\r\n * set new/edit Record Category\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setNewRecordCategory(context, payload) {\r\n await setNewRecordCategory(context, payload);\r\n },\r\n\r\n /**\r\n * set current record Text field value\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setRecordTextFieldValue(context, payload) {\r\n await setRecordTextFieldValue(context, payload);\r\n },\r\n\r\n /**\r\n * set Database Lookup Data of current inserting/editing record\r\n * @param context\r\n * @return {Promise<{id: number, value: any}[]>}\r\n */\r\n async setDatabaseLookupData(context) {\r\n return await setDatabaseLookupData(context);\r\n },\r\n\r\n /**\r\n * check In uploaded scanned image File\r\n * @param context\r\n * @param {{insert: boolean, insertAtBeginning: boolean}|undefined} 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 async checkInScannedFile(context, payload = undefined) {\r\n return await checkInScannedFile(context, payload);\r\n },\r\n\r\n /**\r\n * check In Edited File\r\n * @param context\r\n * @param 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 async checkInEditedDocument(context, payload) {\r\n return await checkInEditedDocument(context, payload);\r\n },\r\n\r\n /**\r\n * Get Record Info\r\n * @param context\r\n * @param payload\r\n */\r\n async getRecordInfo(context, payload) {\r\n try {\r\n const result = await getRecordInfo(payload);\r\n return result ? result.data : { id: payload };\r\n } catch (e) {\r\n await handleError(e, `Unable to get Record Info. (id: ${payload.id})`);\r\n }\r\n },\r\n\r\n /**\r\n * post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async postAgendaMeeting(context, payload) {\r\n return await postAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPostAgendaMeeting(context, payload) {\r\n return await unPostAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async publishAgendaMeeting(context, payload) {\r\n return await publishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPublishAgendaMeeting(context, payload) {\r\n return await unPublishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * submit Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async submitAgendaItem(context, payload) {\r\n return await submitAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * recall Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async recallAgendaItem(context, payload) {\r\n return await recallAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, type: number}} payload\r\n * @return {Promise<*>}\r\n */\r\n async createAgenda(context, payload) {\r\n return await createAgenda(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Packet\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, option: any}} payload\r\n * @return {Promise}\r\n */\r\n async createAgendaPacket(context, payload) {\r\n return await createAgendaPacket(context, payload);\r\n },\r\n\r\n /**\r\n * move Record\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async moveRecord(context, payload) {\r\n return await moveRecord(context, payload);\r\n },\r\n\r\n /**\r\n * move Meeting Contents\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async moveMeetingContents(context, payload) {\r\n return await moveMeetingContents(context, payload);\r\n },\r\n\r\n /**\r\n * move Backup Material\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async moveBackupMaterial(context, payload) {\r\n return await moveBackupMaterial(context, payload);\r\n },\r\n\r\n /**\r\n * copy Record\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async copyRecord(context, payload) {\r\n return await copyRecord(context, payload);\r\n },\r\n\r\n /**\r\n * move Record Shortcut\r\n * @param context\r\n * @param {{recordId:Number,recordParentId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async moveRecordShortcut(context, payload) {\r\n return await moveRecordShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * copy Record Shortcut\r\n * @param context\r\n * @param {{recordId:Number,recordParentId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async copyRecordShortcut(context, payload) {\r\n return await copyRecordShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * Refer Agenda Item\r\n * @param context\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:number}} payload\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\n async referAgendaItem(context, payload) {\r\n return await referAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * Defer Agenda Item\r\n * @param context\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:number}} payload\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\n async deferAgendaItem(context, payload) {\r\n return await deferAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * create Record Shortcut\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async createShortcut(context, payload) {\r\n return await createShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * delete Record Shortcut\r\n * @param context\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async deleteRecordShortcut(context, payload) {\r\n return await deleteRecordShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * Re-index Document\r\n * @param context\r\n * @param {Number} id\r\n */\r\n async reindexDocument(context, id) {\r\n await reindexDocument(id);\r\n },\r\n\r\n /**\r\n * Re-index File\r\n * @param context\r\n * @param {Number} id\r\n */\r\n async reindexFile(context, id) {\r\n await reindexFile(id);\r\n },\r\n\r\n /**\r\n * set Document Children\r\n * @param context\r\n * @param {Number|number} id parent record id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async setDocumentChildren(context, id) {\r\n return await setDocumentChildren(context, id);\r\n },\r\n\r\n /**\r\n * get Total Result Count\r\n * @param context\r\n * @param {{id: (number|number), queryModel: {CategoryId: number, TypeId: number, Owner: string, CreatedDateTo: string, StateId: number, Creator: string, Name: string, Extension: string, Pages: number, Fields: {any}[], Version: number, CreatedDateFrom: string, ModifiedDateTo: string, ModifiedDateFrom: string}}}payload\r\n * @return {Promise}\r\n */\r\n async getTotalCountWithin(context, payload) {\r\n return await countRecordsWithIn(payload);\r\n },\r\n\r\n /**\r\n * set workflow Projects\r\n * @param context\r\n * @param {number} id record id\r\n * @return {Promise<{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]|*[]>}\r\n */\r\n async setProjects(context, id) {\r\n return await setProjects(context, id);\r\n },\r\n\r\n /**\r\n * set record's Open Project\r\n * @param context\r\n * @param {number} id record id\r\n * @return {Promise<*|*[]>}\r\n */\r\n async setOpenProject(context, id) {\r\n return await setOpenProject(context, id);\r\n },\r\n\r\n /**\r\n * set New Workflow Project\r\n * @param context\r\n * @param {{templateId: number, runOnlyOneProject: boolean}} payload\r\n * @return {Promise}\r\n */\r\n async setNewWorkflowProject(context, payload) {\r\n return await setNewWorkflowProject(context, payload);\r\n },\r\n\r\n /**\r\n * change Template of current record's new project\r\n * @param context\r\n * @param {id:number} payload project template id\r\n * @return {Promise<{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}>}\r\n */\r\n async setProjectNewTemplate(context, payload) {\r\n return await setProjectNewTemplate(context, payload);\r\n },\r\n\r\n /**\r\n * start Workflow Project\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{projectId: Number, projectName: string, comment: string, templateId: number, runOnlyOneProject: boolean}>}\r\n */\r\n async startWorkflowProject(context, payload) {\r\n return await startWorkflowProject(context, payload);\r\n },\r\n\r\n /**\r\n * delete Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async deleteWorkflowProject(context, id) {\r\n await deleteWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * suspend Workflow Project\r\n * @param context\r\n * @param {{ id: Number, message: String}} payload\r\n * @return {Promise}\r\n */\r\n async suspendWorkflowProject(context, payload) {\r\n await suspendWorkflowProject(context, payload);\r\n },\r\n\r\n /**\r\n * cancel Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async cancelWorkflowProject(context, id) {\r\n await cancelWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * resume Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async resumeWorkflowProject(context, id) {\r\n await resumeWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * Assign Manager\r\n * @param context\r\n * @param {{ projectId: Number, managerId: Number, comment: String, sendNotification: Boolean}} payload\r\n * @return {Promise}\r\n */\r\n async assignManager(context, payload) {\r\n return await assignManager(payload);\r\n },\r\n\r\n /**\r\n * Restore Record\r\n * @param context\r\n * @param id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\n async restoreRecord(context, id) {\r\n return await restoreRecord(context, id);\r\n },\r\n\r\n /**\r\n * Submit Meeting Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async submitMeetingAgendaItems(context, id) {\r\n return await submitAgendaItemsMeeting(context, id);\r\n },\r\n\r\n /**\r\n * Submit Section Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async submitSectionAgendaItems(context, id) {\r\n return await submitAgendaItemsSection(context, id);\r\n },\r\n\r\n /**\r\n * recall Meeting Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async recallMeetingAgendaItems(context, id) {\r\n return await recallAgendaItemsMeeting(context, id);\r\n },\r\n\r\n /**\r\n * recall Section Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async recallSectionAgendaItems(context, id) {\r\n return await recallAgendaItemsSection(context, id);\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// services\r\nimport { createRecordInfo } from \"@/services/record/recordService\";\r\nimport { updateNewProject } from \"@/services/project/projectService\";\r\n\r\n// utils\r\nimport { isArray } from \"@/utils\";\r\n\r\n// model\r\nimport { recordMode } from \"@/model/record/recordModel\";\r\n\r\n/**\r\n * set Compound Document New File Version\r\n * @param state\r\n * @param payload TODO: list of new Compound Document records (files) instead of a single record\r\n */\r\nconst setCompoundDocumentNewFileVersions = (state, payload) => {\r\n const newRecords = payload;\r\n if (!isArray(newRecords)) {\r\n return;\r\n }\r\n\r\n // Update child records of expanded record\r\n const breadcrumbsCount = state?.breadcrumbs?.length ?? 0;\r\n if (breadcrumbsCount > 0) {\r\n const expandedRecord = state?.breadcrumbs[breadcrumbsCount - 1];\r\n if (expandedRecord) {\r\n newRecords.forEach(record => {\r\n if (record.parentId === expandedRecord.id) {\r\n state.records.push(createRecordInfo(record));\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Update child records of SELECTED record\r\n newRecords.forEach(record => {\r\n if ((state?.record?.id ?? -1) === record.parentId) {\r\n if (!state.documents) {\r\n state.documents = [];\r\n }\r\n\r\n //\r\n // TODO: insert/append accordingly\r\n //\r\n state.documents.push(createRecordInfo(record));\r\n }\r\n });\r\n};\r\n\r\nconst setRecordProjects = (state, payload) => {\r\n state.projects = payload;\r\n state.openProjects = [];\r\n\r\n console.log(`setRecordProjects projects:`, state?.projects);\r\n console.log(`setRecordProjects openProjects:`, state?.openProjects);\r\n};\r\n\r\nconst setRecordOpenProjects = (state, payload) => {\r\n const project = payload;\r\n\r\n if (!state.openProjects) {\r\n state.openProjects = [];\r\n }\r\n\r\n const foundProject = state.openProjects.find(\r\n p => p.projectId === project?.projectId ?? -1\r\n );\r\n\r\n if (foundProject) {\r\n const index = state.openProjects.indexOf(foundProject);\r\n if (index >= 0) {\r\n state.openProjects[index] = project;\r\n }\r\n } else {\r\n state.openProjects.push(project);\r\n }\r\n\r\n console.log(`setRecordOpenProjects projects:`, state?.openProjects);\r\n};\r\n\r\n/**\r\n * set new Project\r\n * @param state\r\n * @param {{project, template}} payload (projectNew, template)\r\n */\r\nconst setProjectNew = (state, payload) => {\r\n state.recordMode = recordMode.newProject;\r\n state.projectNew = payload?.project;\r\n state.projectNewTemplate = payload?.template;\r\n\r\n console.log(`setProjectNew() state.projectNew:`, state.projectNew);\r\n console.log(\r\n `setProjectNew() state.projectNewTemplate:`,\r\n state.projectNewTemplate\r\n );\r\n};\r\n\r\n/**\r\n * change the template of current new workflow project\r\n * @param state\r\n * @param {{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}}} payload template of current new workflow project\r\n */\r\nconst setProjectNewTemplate = (state, payload) => {\r\n state.projectNewTemplate = payload;\r\n\r\n if (state.projectNew) {\r\n updateNewProject(state.projectNew, state.projectNewTemplate);\r\n }\r\n\r\n console.log(`setProjectNewTemplate() state.projectNew:`, state.projectNew);\r\n console.log(\r\n `setProjectNewTemplate() state.projectNewTemplate:`,\r\n state.projectNewTemplate\r\n );\r\n};\r\n\r\n/**\r\n * set New Record Project\r\n * @param state\r\n * @param {{ project, projectTemplate }} payload\r\n */\r\nconst setNewRecordProject = (state, payload) => {\r\n state.projectNew = payload.project;\r\n state.projectNewTemplate = payload.projectTemplate;\r\n\r\n console.log(`setNewRecordProject() state.projectNew:`, state.projectNew);\r\n console.log(\r\n `setNewRecordProject() state.projectNewTemplate:`,\r\n state.projectNewTemplate\r\n );\r\n};\r\n\r\nexport {\r\n setCompoundDocumentNewFileVersions,\r\n setRecordProjects,\r\n setRecordOpenProjects,\r\n setProjectNew,\r\n setProjectNewTemplate,\r\n setNewRecordProject\r\n};\r\n","/**\r\n * set Project Deleted\r\n * @param state\r\n * @param {number} projectId workflow project id\r\n */\r\nimport { projectState } from \"@/model/workflow/project/projectModel\";\r\n\r\nconst setProjectDeleted = (state, projectId) => {\r\n console.log(`setProjectDeleted() projectId:`, projectId);\r\n\r\n // update projects\r\n let project = state.projects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n // remove a deleted project from the state.projects\r\n const index = state.projects.indexOf(project);\r\n if (index >= 0) {\r\n state.projects.splice(index, 1);\r\n }\r\n\r\n //\r\n // do more updates here ...\r\n //\r\n }\r\n\r\n // update open projects e.g. ...\r\n project = state.openProjects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n // remove a deleted project from the state.projects\r\n const index = state.openProjects.indexOf(project);\r\n if (index >= 0) {\r\n state.openProjects.splice(index, 1);\r\n }\r\n\r\n //\r\n // do more updates here ...\r\n //\r\n }\r\n};\r\n\r\n/**\r\n * set Project Canceled\r\n * @param state\r\n * @param {number} projectId workflow project id\r\n */\r\nconst setProjectCanceled = (state, projectId) => {\r\n console.log(`setProjectCanceled() projectId:`, projectId);\r\n\r\n if (state.project) {\r\n state.project.status = projectState.canceled;\r\n }\r\n\r\n // update projects\r\n let project = state.projects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n project.status = projectState.canceled;\r\n // TODO: update project state/status ...\r\n // const index = state.projects.indexOf(project);\r\n //\r\n // do more updates here if/when...\r\n //\r\n }\r\n\r\n // update open projects e.g. ...\r\n project = state.openProjects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n project.status = projectState.canceled;\r\n // TODO: update project state/status ...\r\n // const index = state.projects.indexOf(project);\r\n //\r\n // do more updates here if/when...\r\n //\r\n }\r\n};\r\n\r\n/**\r\n * set Project Suspended\r\n * @param state\r\n * @param {number} projectId workflow project id\r\n */\r\nconst setProjectSuspended = (state, projectId) => {\r\n console.log(`setProjectSuspended() projectId:`, projectId);\r\n\r\n if (state.project) {\r\n state.project.status = projectState.suspended;\r\n }\r\n\r\n // update projects\r\n let project = state.projects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n project.status = projectState.suspended;\r\n // TODO: update project state\r\n // const index = state.projects.indexOf(project);\r\n //\r\n // do more updates here if/when...\r\n //\r\n }\r\n\r\n // update open projects e.g. ...\r\n project = state.openProjects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n project.status = projectState.suspended;\r\n // TODO: update project state\r\n // const index = state.projects.indexOf(project);\r\n //\r\n // do more updates here if/when...\r\n //\r\n }\r\n};\r\n\r\n/**\r\n * set Project Resumed\r\n * @param state\r\n * @param {number} projectId workflow project id\r\n */\r\nconst setProjectResumed = (state, projectId) => {\r\n console.log(`setProjectResumed() projectId:`, projectId);\r\n\r\n if (state.project) {\r\n state.project.status = projectState.executing;\r\n }\r\n\r\n // update projects\r\n let project = state.projects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n project.status = projectState.executing;\r\n // TODO: update project state\r\n // const index = state.projects.indexOf(project);\r\n //\r\n // do more updates here if/when...\r\n //\r\n }\r\n\r\n // update open projects e.g. ...\r\n project = state.openProjects?.find(p => p.projectId === projectId);\r\n if (project) {\r\n project.status = projectState.executing;\r\n // TODO: update project state\r\n // const index = state.projects.indexOf(project);\r\n //\r\n // do more updates here if/when...\r\n //\r\n }\r\n};\r\n\r\n/**\r\n * update Task Assignee\r\n * @param state\r\n * @param {string} userName - task assignee\r\n */\r\nconst updateTaskAssignee = (state, userName) => {\r\n console.log(`updateTaskAssignee() userName:`, userName);\r\n\r\n const actorId = state.task?.actorId ?? -1;\r\n\r\n // Update task properties based on conditions\r\n state.task = {\r\n ...state.task,\r\n actorName: actorId > 0 ? userName : state.task?.actorName,\r\n assignedTo: actorId <= 0 ? userName : state.task?.assignedTo\r\n };\r\n};\r\n\r\nexport {\r\n setProjectDeleted,\r\n setProjectCanceled,\r\n setProjectSuspended,\r\n setProjectResumed,\r\n updateTaskAssignee\r\n};\r\n","// services\r\nimport { storeSelectedModuleItemId } from \"@/services/folder/folderModuleService\";\r\n\r\n// shared mutation types\r\nimport {\r\n SET_DRAWER_MINI,\r\n SET_RECORDS,\r\n SET_RECORD,\r\n UPDATE_RECORD_STATUS,\r\n SET_DOCUMENTS,\r\n SET_DOCUMENT,\r\n SET_DOCUMENT_SEARCH_CATEGORY,\r\n SET_RECORD_LOCK,\r\n SET_RECORD_READ_ONLY,\r\n SET_RECORD_DRAFT,\r\n UPDATE_RECORD_FILE_VERSION,\r\n SET_UPLOAD_FILE_PROGRESS,\r\n SET_FILE_VERSIONS,\r\n SET_FILE_VERSION,\r\n SET_RECORD_NEW,\r\n SET_RECORD_EDIT,\r\n SET_RECORD_NEW_CATEGORY,\r\n SET_RECORD_MODE,\r\n SET_RECORD_EDITED,\r\n SET_RECORD_CREATED,\r\n SET_RECORD_DELETED,\r\n SET_RECORD_TEXT_FIELD_VALUE,\r\n SET_RECORD_LOOKUP_DATA,\r\n SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION,\r\n UPDATE_RECORD_INFO,\r\n SET_MOVED_RECORD,\r\n SET_LOCAL_UPLOADED_FILE,\r\n SET_DOCUMENT_CHILDREN,\r\n APPEND_RECORDS,\r\n SET_RECORD_DELETE_STATUS,\r\n SET_RECORD_NEW_AND_CATEGORY,\r\n SET_MOVED_RECORDS,\r\n UPDATE_RECORD_LIST_BY_ID,\r\n UPDATE_DOCUMENT_LIST_BY_ID\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\nimport {\r\n SET_BREADCRUMBS,\r\n SET_RECORD_PROJECTS,\r\n SET_RECORD_OPEN_PROJECTS,\r\n SET_PROJECT_NEW,\r\n SET_PROJECT_NEW_TEMPLATE,\r\n SET_RECORD_NEW_PROJECT\r\n} from \"@/store/shared/mutationTypes/record/hierarchy-mutation-types\";\r\n\r\n// mutation Helper\r\nimport {\r\n updateRecordStatus,\r\n setRecordDraft,\r\n setRecordLock,\r\n updateFileVersionInfo,\r\n setRecordReadOnly,\r\n setUploadFileProgress,\r\n setRecordNew,\r\n setRecordCreated,\r\n setRecordEdit,\r\n setRecordEdited,\r\n setRecordDeleted,\r\n setRecordMode,\r\n setRecordTextFieldValue,\r\n setRecordLookupData,\r\n setCurrentRecord,\r\n setFileVersion,\r\n setDocument,\r\n updateRecordInfos,\r\n setDocumentChildren,\r\n appendRecords,\r\n setRecordNewAndCategory\r\n} from \"@/store/shared/mutations/record/record-mutations\";\r\n\r\nimport {\r\n setCompoundDocumentNewFileVersions,\r\n setNewRecordProject,\r\n setProjectNew,\r\n setProjectNewTemplate,\r\n setRecordOpenProjects,\r\n setRecordProjects\r\n} from \"@/store/shared/mutations/record/hierarchy-mutations\";\r\n\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\nimport {\r\n SET_PROJECT_CANCELED,\r\n SET_PROJECT_DELETED,\r\n SET_PROJECT_RESUMED,\r\n SET_PROJECT_SUSPENDED,\r\n UPDATE_PROJECT_MANAGER\r\n} from \"@/store/shared/mutationTypes/project/project-mutation-types\";\r\nimport {\r\n setProjectCanceled,\r\n setProjectDeleted,\r\n setProjectResumed,\r\n setProjectSuspended\r\n} from \"@/store/shared/mutations/project/project-mutations\";\r\n\r\nconst mutations = {\r\n /**\r\n * Set drawer to mini state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_DRAWER_MINI]: (state, payload) => {\r\n state.drawerMini = payload || false;\r\n },\r\n\r\n [SET_RECORDS](state, payload) {\r\n state.records = payload;\r\n console.log(SET_RECORDS, state.records);\r\n },\r\n\r\n [APPEND_RECORDS](state, payload) {\r\n appendRecords(state, payload);\r\n },\r\n\r\n /**\r\n * Set current 'folder' record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD](state, payload) {\r\n setCurrentRecord(state, payload);\r\n\r\n console.log(`${moduleNames.Folder}.${SET_RECORD} record:`, state.record);\r\n console.log(\r\n `${moduleNames.Folder}.${SET_RECORD} recordCategory:`,\r\n state.recordCategory\r\n );\r\n\r\n state.projects = [];\r\n state.openProjects = [];\r\n\r\n storeSelectedModuleItemId(state.record?.id ?? -1);\r\n },\r\n\r\n /**\r\n * update Record Status\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [UPDATE_RECORD_STATUS](state, payload) {\r\n updateRecordStatus(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Infos of current record and all related records\r\n * @param state\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}[]}} payload RecordItemModel\r\n */\r\n [UPDATE_RECORD_INFO](state, payload) {\r\n updateRecordInfos(state, payload);\r\n },\r\n\r\n [SET_DOCUMENTS](state, payload) {\r\n state.documents = payload;\r\n console.log(SET_DOCUMENTS, state.documents);\r\n },\r\n\r\n /**\r\n * Set the current selected 'folder' document\r\n * @param state\r\n * @param {{document, category}} payload\r\n */\r\n [SET_DOCUMENT](state, payload) {\r\n setDocument(state, payload);\r\n console.log(\r\n `${moduleNames.Folder}.${SET_DOCUMENT} document:`,\r\n state.document\r\n );\r\n console.log(\r\n `${moduleNames.Folder}.${SET_DOCUMENT} documentCategory:`,\r\n state.documentCategory\r\n );\r\n },\r\n\r\n [SET_BREADCRUMBS](state, payload) {\r\n state.breadcrumbs = payload;\r\n console.log(SET_BREADCRUMBS, state.breadcrumbs);\r\n },\r\n\r\n [SET_DOCUMENT_SEARCH_CATEGORY](state, payload) {\r\n state.searchCategory = payload;\r\n console.log(SET_DOCUMENT_SEARCH_CATEGORY, state.searchCategory);\r\n },\r\n\r\n /**\r\n * Set current 'folder' record lock\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_LOCK](state, payload) {\r\n setRecordLock(state, payload);\r\n },\r\n\r\n /**\r\n * Set current 'folder' record Read Only\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_READ_ONLY](state, payload) {\r\n setRecordReadOnly(state, payload);\r\n },\r\n\r\n /**\r\n * Set the current 'folder' record as Draft\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_DRAFT](state, payload) {\r\n setRecordDraft(state, payload);\r\n },\r\n\r\n /**\r\n * Update Record file version\r\n * @param state\r\n * @param payload\r\n */\r\n [UPDATE_RECORD_FILE_VERSION](state, payload) {\r\n updateFileVersionInfo(state, payload);\r\n },\r\n\r\n /**\r\n * SET UPLOAD FILE PROGRESS\r\n * @param state\r\n * @param {Number|number} progress\r\n */\r\n [SET_UPLOAD_FILE_PROGRESS](state, progress) {\r\n setUploadFileProgress(state, progress);\r\n },\r\n\r\n [SET_FILE_VERSIONS](state, payload) {\r\n state.versions = payload || [];\r\n console.log(SET_FILE_VERSIONS, state.versions);\r\n },\r\n\r\n /**\r\n * Set current 'folder' File Version\r\n * @param state\r\n * @param {{version, category}} payload\r\n */\r\n [SET_FILE_VERSION](state, payload) {\r\n setFileVersion(state, payload);\r\n console.log(\r\n `${moduleNames.Folder}.${SET_FILE_VERSION} version:`,\r\n state.version\r\n );\r\n console.log(\r\n `${moduleNames.Folder}.${SET_FILE_VERSION} versionCategory:`,\r\n state.versionCategory\r\n );\r\n },\r\n\r\n [SET_RECORD_MODE](state, payload) {\r\n setRecordMode(state, payload);\r\n },\r\n\r\n /**\r\n * set 'folder' current Record as a New Record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD_NEW](state, payload) {\r\n setRecordNew(state, payload);\r\n },\r\n\r\n [SET_RECORD_CREATED](state, payload) {\r\n setRecordCreated(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDIT](state, payload) {\r\n setRecordEdit(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDITED](state, payload) {\r\n setRecordEdited(state, payload);\r\n },\r\n\r\n [SET_RECORD_DELETED](state, payload) {\r\n setRecordDeleted(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_AND_CATEGORY](state, payload) {\r\n setRecordNewAndCategory(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_CATEGORY](state, payload) {\r\n state.recordNewCategory = payload;\r\n },\r\n\r\n [SET_RECORD_TEXT_FIELD_VALUE](state, payload) {\r\n setRecordTextFieldValue(state, payload);\r\n },\r\n\r\n [SET_RECORD_LOOKUP_DATA](state, payload) {\r\n setRecordLookupData(state, payload);\r\n },\r\n\r\n [SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION](state, payload) {\r\n setCompoundDocumentNewFileVersions(state, payload);\r\n },\r\n\r\n [SET_MOVED_RECORD](state, payload) {\r\n state.movedRecord.moveType = payload?.type ?? undefined;\r\n state.movedRecord.record = payload?.record ?? undefined;\r\n },\r\n\r\n [SET_MOVED_RECORDS](state, payload) {\r\n state.batchMovedRecords.moveType = payload?.type ?? undefined;\r\n state.batchMovedRecords.records = payload?.records ?? [];\r\n },\r\n\r\n [SET_LOCAL_UPLOADED_FILE](state, payload) {\r\n state.localUploadedFile = payload ?? undefined;\r\n },\r\n\r\n /**\r\n * Set document children of specified document\r\n * @param state\r\n * @param {{document, children}} payload\r\n */\r\n [SET_DOCUMENT_CHILDREN](state, payload) {\r\n setDocumentChildren(state, payload);\r\n },\r\n\r\n /**\r\n * Set RECORD DELETE STATUS\r\n * @param state\r\n * @param {Boolean} payload\r\n */\r\n [SET_RECORD_DELETE_STATUS](state, payload) {\r\n state.recordDeleted = payload ?? false;\r\n },\r\n\r\n /**\r\n * Set RECORD PROJECTS\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_RECORD_PROJECTS](state, payload) {\r\n setRecordProjects(state, payload);\r\n },\r\n\r\n /**\r\n * Set RECORD OPEN PROJECTS\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_RECORD_OPEN_PROJECTS](state, payload) {\r\n setRecordOpenProjects(state, payload);\r\n },\r\n\r\n /**\r\n * set PROJECT NEW\r\n * @param state\r\n * @param {{project, template}} payload\r\n */\r\n [SET_PROJECT_NEW](state, payload) {\r\n setProjectNew(state, payload);\r\n },\r\n\r\n /**\r\n * change new project template\r\n * @param state\r\n * @param {{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}} payload project template\r\n */\r\n [SET_PROJECT_NEW_TEMPLATE](state, payload) {\r\n setProjectNewTemplate(state, payload);\r\n },\r\n\r\n [SET_PROJECT_DELETED](state, payload) {\r\n setProjectDeleted(state, payload);\r\n },\r\n\r\n [SET_PROJECT_CANCELED](state, payload) {\r\n setProjectCanceled(state, payload);\r\n },\r\n\r\n [SET_PROJECT_SUSPENDED](state, payload) {\r\n setProjectSuspended(state, payload);\r\n },\r\n\r\n [SET_PROJECT_RESUMED](state, payload) {\r\n setProjectResumed(state, payload);\r\n },\r\n\r\n [UPDATE_PROJECT_MANAGER](state, payload) {\r\n const project = state.openProjects?.find(p => p.projectId === payload.id);\r\n project.projectManagerName = payload.managerName;\r\n },\r\n\r\n [SET_RECORD_NEW_PROJECT](state, payload) {\r\n setNewRecordProject(state, payload);\r\n },\r\n\r\n [UPDATE_RECORD_LIST_BY_ID](state, payload) {\r\n state.fetchRecordListById = payload;\r\n },\r\n\r\n [UPDATE_DOCUMENT_LIST_BY_ID](state, payload) {\r\n state.fetchDocumentListById = payload;\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\n\r\n// model\r\nimport { recordMode } from \"@/model/record/recordModel\";\r\n\r\nconst state = {\r\n /**\r\n * TODO: when needed\r\n */\r\n notifications: [],\r\n\r\n /**\r\n * Is drawer Mini\r\n * @type {boolean}\r\n */\r\n drawerMini: false,\r\n\r\n /**\r\n * Child Records of expanded tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, recordEventModel: {recordEventType: Number, recordAncestorEventType: 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 records: [],\r\n\r\n /**\r\n * current Record\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, recordEventModel: {recordEventType: Number, recordAncestorEventType: Number}, 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: undefined,\r\n\r\n /**\r\n * current Record File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n recordFileVersion: undefined,\r\n\r\n /**\r\n * Category of current selected/edited record\r\n * @type {{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, description: string, workflowName: string, comment: string}}}}\r\n */\r\n recordCategory: undefined,\r\n\r\n /**\r\n * Current record Mode\r\n */\r\n recordMode: recordMode.view,\r\n\r\n /**\r\n * New Record\r\n * @type {{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, 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 recordNew: undefined,\r\n\r\n /**\r\n * New Record Category\r\n * @type {{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}[]}}\r\n */\r\n recordNewCategory: undefined,\r\n\r\n /**\r\n * Child Records of SELECTED tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 documents: [],\r\n\r\n /**\r\n * Selected Document\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n document: undefined,\r\n\r\n /**\r\n * Category of a current selected/edited document\r\n * @type {{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 documentCategory: undefined,\r\n\r\n /**\r\n * File versions\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 versions: [],\r\n\r\n /**\r\n * Selected File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n version: undefined,\r\n\r\n /**\r\n * Category of a current selected version\r\n * @type {{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}[]}[]}|undefined}\r\n */\r\n versionCategory: undefined,\r\n\r\n /**\r\n * breadcrumbs\r\n * @type {{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, 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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]}\r\n */\r\n breadcrumbs: [],\r\n\r\n /**\r\n * Current selected search Record Category\r\n * @type {{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 searchCategory: undefined,\r\n\r\n /**\r\n * Upload File Progress\r\n * @type {Number|number}\r\n */\r\n uploadFileProgress: 0,\r\n\r\n /**\r\n * Record that user wants to move (Cut/Copy)\r\n * @type {{moveType:String, record: {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, 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 movedRecord: {\r\n moveType: undefined,\r\n record: undefined\r\n },\r\n\r\n /**\r\n * Batch Records that user wants to move (Cut/Copy)\r\n * @type {{moveType:String, record: {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, 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 batchMovedRecords: {\r\n moveType: undefined,\r\n records: []\r\n },\r\n\r\n /**\r\n * Local Uploaded File\r\n * @type {File}\r\n */\r\n localUploadedFile: undefined,\r\n\r\n /**\r\n * Record Deleted\r\n */\r\n recordDeleted: false,\r\n\r\n /**\r\n * Workflow Projects\r\n * @type {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n projects: [],\r\n\r\n /**\r\n * Opened Workflow Projects\r\n * @type {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n openProjects: [],\r\n\r\n /**\r\n * new record's workflow project\r\n * @type {{recordId: Number, projectName: string, projectManager: string, comment: string, templateId: number, runOnlyOneProject: boolean, startProjectOption: number, 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: undefined,\r\n\r\n /**\r\n * Template of the new project\r\n * @type {{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: undefined,\r\n\r\n /**\r\n * Fetch Records List Id ( Drawer requires updated Records)\r\n * @type {Number}\r\n */\r\n fetchRecordListById: undefined,\r\n\r\n /**\r\n * Fetch Documents List Id ( Documents List requires updated Records )\r\n * @type {Number}\r\n */\r\n fetchDocumentListById: undefined\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","/**\r\n * inbox module's getters\r\n * Using Java Script ECMAScript 2021\r\n */\r\nconst getters = {\r\n /**\r\n * Get is Inbox drawer Mini\r\n * @param state\r\n * @return {boolean}\r\n */\r\n drawerMini: state => state.drawerMini,\r\n\r\n /**\r\n * Get selected Module (inbox) Item (task)\r\n * @param state\r\n * @return {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId: number, projectName: string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId: number, assignee: string, assignmentMethod: string, assignmentMethodType: number, assignmentMethodTypeText: string, assignmentNotificationType: number, assignmentNotificationTypeText: string, assignmentRole: string, canReassign: boolean, comment: string, dueDate: string, duration: string, isDue: boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation: boolean, priority: number, selfReleaseDisabled: boolean, notes: {id: number, taskId: number, text: string, userId: number, userName: string, created: string}[]}}\r\n */\r\n selectedModuleItem: state => state.task,\r\n\r\n /**\r\n * Get selected Module (inbox) Item Id (taskId)\r\n * @param state\r\n * @return {number|number}\r\n */\r\n selectedModuleItemId: state => state.task?.taskId ?? -1,\r\n\r\n /**\r\n * Get selected Module (inbox-task) Item name\r\n * @param state\r\n * @return {string}\r\n */\r\n selectedModuleItemName: state => state.task?.name ?? \"\",\r\n\r\n /**\r\n * Get documents\r\n * @param state\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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 documents: state => state.documents ?? [],\r\n\r\n /**\r\n * find Document\r\n * @param state\r\n * @param getters\r\n * @return {function(*): T}\r\n */\r\n findDocument: (state, getters) => id =>\r\n getters.documents?.find(el => (el?.id ?? -1) === id)\r\n};\r\n\r\nexport default getters;\r\n","// Web API Service\r\nimport {\r\n checkOutFileForSign,\r\n downloadFile,\r\n getRecordInfo\r\n} from \"@/services/api/apiContent\";\r\nimport {\r\n getWorkflowUserTask,\r\n getWorkflowUserTasks,\r\n accept,\r\n reject,\r\n getUserCandidates,\r\n assignUser,\r\n takeTask,\r\n releaseTask\r\n} from \"@/services/api/apiWorkflow\";\r\n\r\n// shared record actions\r\nimport {\r\n setDocument,\r\n setDocuments,\r\n setRecord,\r\n lockRecord,\r\n setDraftRecord,\r\n setReadOnlyRecord,\r\n unLockRecord,\r\n uploadFile,\r\n setFileDocuments,\r\n checkOutFile,\r\n releaseFile,\r\n checkInFile,\r\n setFileVersions,\r\n setFileVersion,\r\n downloadImageFileVersion,\r\n saveRecord,\r\n setNewRecordCategory,\r\n setRecordTextFieldValue,\r\n setDatabaseLookupData,\r\n checkInScannedFile,\r\n checkInEditedDocument,\r\n uploadCompoundDocumentFile\r\n} from \"@/store/shared/actions/record/record-actions\";\r\n\r\nimport { setDocumentChildren } from \"@/store/shared/actions/record/hierarchy-actions\";\r\n\r\n// agenda-actions\r\nimport {\r\n submitAgendaItem,\r\n recallAgendaItem,\r\n postAgendaMeeting,\r\n unPostAgendaMeeting,\r\n publishAgendaMeeting,\r\n unPublishAgendaMeeting,\r\n createAgenda,\r\n createAgendaPacket\r\n} from \"@/store/shared/actions/agenda/agenda-actions\";\r\n\r\n// Task mutation types\r\nimport { SET_TASKS, SET_TASK } from \"@/store/inbox/mutation-types\";\r\n\r\n// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\nimport {\r\n cancelWorkflowProject,\r\n deleteWorkflowProject,\r\n resumeWorkflowProject,\r\n suspendWorkflowProject\r\n} from \"@/store/shared/actions/project/project-actions\";\r\n\r\n// model\r\nimport {\r\n findUserTaskCommand,\r\n userTaskCommandType\r\n} from \"@/model/workflow/task/taskModel\";\r\n\r\nconst actions = {\r\n /**\r\n * Set Workflow User Tasks\r\n * @param context\r\n * @return {Promise<{taskId: number, name: string, typeId: number, templateId: number, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number}[]>}\r\n */\r\n async setTasks(context) {\r\n return getWorkflowUserTasks()\r\n .then(response => {\r\n if (response.status !== 200) {\r\n return Promise.reject(\r\n new Error(\r\n `Status Code: ${response.status}. ${response.statusText}.`\r\n )\r\n );\r\n }\r\n\r\n if (Array.isArray(response.data)) {\r\n context.commit(SET_TASKS, response.data);\r\n return Promise.resolve(response.data);\r\n } else {\r\n const text = response.data\r\n ? response.data.toString().toLowerCase()\r\n : response.toString();\r\n\r\n return Promise.reject(new Error(text));\r\n }\r\n })\r\n .catch(error => handleError(error, `Unable to set Workflow User Tasks`));\r\n },\r\n\r\n /**\r\n * Set current Task\r\n * @param context\r\n * @param {Number} id\r\n * @return {Promise<{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee:string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole:string, canReassign:boolean, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone:boolean, isOverdue:boolean, notifyOnEscalation:boolean, priority:number, selfReleaseDisabled:boolean, workflowDefinitionId:number, notes: {id:number, taskId:number, text:string, userId:number, userName:string, created:string}[]}>}\r\n */\r\n async setTask(context, id) {\r\n return getWorkflowUserTask(id)\r\n .then(response => {\r\n context.commit(SET_TASK, response.data);\r\n return response.data;\r\n })\r\n .catch(e => handleError(e, `Unable to set User Task by id: ${id}`));\r\n },\r\n\r\n /**\r\n * Set current User Task's Record\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async setRecord(context, id) {\r\n return await setRecord(context, id);\r\n },\r\n\r\n /**\r\n * Set current documents\r\n * @param context\r\n * @param {Number|number} id\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 async setDocuments(context, id) {\r\n return await setDocuments(context, id);\r\n },\r\n\r\n /**\r\n * Set File(s) of current selected file-record\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise}\r\n */\r\n async setFileDocuments(context, id) {\r\n return setFileDocuments(context, id);\r\n },\r\n\r\n /**\r\n * Set current Document\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\n async setDocument(context, id) {\r\n return await setDocument(context, id);\r\n },\r\n\r\n /**\r\n * set File Versions\r\n * @param context\r\n * @param id\r\n * @return {Promise}\r\n */\r\n async setFileVersions(context, id) {\r\n return await setFileVersions(context, id);\r\n },\r\n\r\n /**\r\n * set File Version\r\n * @param context\r\n * @param {id:number, version:number} payload\r\n * @return {Promise}\r\n */\r\n async setFileVersion(context, payload) {\r\n return await setFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Download File\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<*>}\r\n */\r\n async downloadFile(context, id) {\r\n try {\r\n return await downloadFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to download File by id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * download image File Version\r\n * @param context\r\n * @param payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadImageFileVersion(context, payload) {\r\n return await downloadImageFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Upload File to an empty record\r\n * @param context\r\n * @param {{id:Number, file:any}} payload\r\n * @return {Promise}\r\n */\r\n async uploadFile(context, payload) {\r\n return await uploadFile(context, payload);\r\n },\r\n\r\n /**\r\n * upload Compound Document File\r\n * @param context\r\n * @param {{id: Number, file: any, insertBeforePage: Number, enqueue: Boolean, comments: string}} 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 async uploadCompoundDocumentFile(context, payload) {\r\n return await uploadCompoundDocumentFile(context, payload);\r\n },\r\n\r\n /**\r\n * check Out File\r\n * @param context\r\n * @param {Number|number} id\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 async checkOutFile(context, id) {\r\n return await checkOutFile(context, id);\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 * @param context\r\n * @param {Number|number} id\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 async checkOutFileForSign(context, id) {\r\n return await checkOutFileForSign(context, id);\r\n },\r\n\r\n /**\r\n * release File\r\n * @param context\r\n * @param {Number|number} id\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 async releaseFile(context, id) {\r\n return await releaseFile(context, id);\r\n },\r\n\r\n /**\r\n * check In File\r\n * @param context\r\n * @param {{id:Number, file:any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} 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 async checkInFile(context, payload) {\r\n return await checkInFile(context, payload);\r\n },\r\n\r\n /**\r\n * Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async lockRecord(context, id) {\r\n return await lockRecord(context, id);\r\n },\r\n\r\n /**\r\n * Un Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async unLockRecord(context, id) {\r\n return await unLockRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Draft Record\r\n * @param context\r\n * @param {Number|number} id\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 async setDraftRecord(context, id) {\r\n return await setDraftRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Read Only Record\r\n * @param context\r\n * @param {Number|number} id\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 async setReadOnlyRecord(context, id) {\r\n return await setReadOnlyRecord(context, id);\r\n },\r\n\r\n /**\r\n * save Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async saveRecord(context, payload) {\r\n return await saveRecord(context, payload);\r\n },\r\n\r\n /**\r\n * set new/edit Record Category\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setNewRecordCategory(context, payload) {\r\n await setNewRecordCategory(context, payload);\r\n },\r\n\r\n /**\r\n * set current record Text field value\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setRecordTextFieldValue(context, payload) {\r\n await setRecordTextFieldValue(context, payload);\r\n },\r\n\r\n /**\r\n * set Database Lookup Data of current inserting/editing record\r\n * @param context\r\n * @return {Promise<{id: number, value: any}[]>}\r\n */\r\n async setDatabaseLookupData(context) {\r\n return await setDatabaseLookupData(context);\r\n },\r\n\r\n /**\r\n * check In uploaded scanned image File\r\n * @param context\r\n * @param {{insert: boolean, insertAtBeginning: boolean}|undefined} 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 async checkInScannedFile(context, payload = undefined) {\r\n return await checkInScannedFile(context, payload);\r\n },\r\n\r\n /**\r\n * check In Edited File\r\n * @param context\r\n * @param 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 async checkInEditedDocument(context, payload) {\r\n return await checkInEditedDocument(context, payload);\r\n },\r\n\r\n /**\r\n * Get Record Info\r\n * @param context\r\n * @param payload\r\n */\r\n async getRecordInfo(context, payload) {\r\n try {\r\n const result = await getRecordInfo(payload);\r\n return result ? result.data : { id: payload };\r\n } catch (e) {\r\n await handleError(e, `Unable to fetch Document by id: ${payload.id}`);\r\n }\r\n },\r\n\r\n /**\r\n * post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async postAgendaMeeting(context, payload) {\r\n return await postAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPostAgendaMeeting(context, payload) {\r\n return await unPostAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async publishAgendaMeeting(context, payload) {\r\n return await publishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPublishAgendaMeeting(context, payload) {\r\n return await unPublishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * submit Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async submitAgendaItem(context, payload) {\r\n return await submitAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * recall Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async recallAgendaItem(context, payload) {\r\n return await recallAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, type: number}} payload\r\n * @return {Promise<*>}\r\n */\r\n async createAgenda(context, payload) {\r\n return await createAgenda(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Packet\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, option: any}} payload\r\n * @return {Promise}\r\n */\r\n async createAgendaPacket(context, payload) {\r\n return await createAgendaPacket(context, payload);\r\n },\r\n\r\n /**\r\n * accept Task\r\n * @param context\r\n * @param {{taskId: number, note: string}} payload\r\n * @return {Promise}\r\n */\r\n async acceptTask(context, payload) {\r\n const taskId = payload?.taskId ?? -1;\r\n const note = payload?.note ?? \"\";\r\n\r\n try {\r\n await accept(taskId, note);\r\n\r\n const response = await getWorkflowUserTasks();\r\n\r\n context.commit(SET_TASKS, response?.data ?? []);\r\n\r\n const result = !context.state.tasks?.find(el => el.taskId === taskId);\r\n\r\n return Promise.resolve(result);\r\n } catch (e) {\r\n return await handleError(e, `Unable to accept Task. (taskId: ${taskId})`);\r\n }\r\n },\r\n\r\n /**\r\n * reject Task\r\n * @param context\r\n * @param {{taskId: Number|number, note: String|string}} payload\r\n * @return {Promise}\r\n */\r\n async rejectTask(context, payload) {\r\n const taskId = payload?.taskId ?? -1;\r\n const note = payload?.note ?? \"\";\r\n\r\n try {\r\n await reject(taskId, note);\r\n\r\n const response = await getWorkflowUserTasks();\r\n\r\n context.commit(SET_TASKS, response?.data ?? []);\r\n\r\n const result = !context.state.tasks?.find(el => el.taskId === taskId);\r\n\r\n return Promise.resolve(result);\r\n } catch (e) {\r\n return await handleError(e, `Unable to reject Task. (taskId: ${taskId})`);\r\n }\r\n },\r\n\r\n /**\r\n * take Task\r\n * @param context\r\n * @param {{taskId: number, note: string, sendNotification: boolean}} payload\r\n * @return {Promise>}\r\n */\r\n async takeTask(context, payload) {\r\n const taskId = payload?.taskId ?? -1;\r\n const note = payload?.note ?? \"\";\r\n const sendNotification = payload?.sendNotification ?? false;\r\n\r\n try {\r\n const response = await takeTask(taskId, note, sendNotification);\r\n const result = response?.data ?? false;\r\n\r\n if (result) {\r\n await context.dispatch(\"setTask\", taskId);\r\n }\r\n\r\n return Promise.resolve(result);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to ${\r\n findUserTaskCommand(userTaskCommandType.take)?.label\r\n } Task. (taskId: ${taskId})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * release Task\r\n * @param context\r\n * @param {{taskId: number, note: string, sendNotification: boolean}} payload\r\n * @return {Promise>}\r\n */\r\n async releaseTask(context, payload) {\r\n const taskId = payload?.taskId ?? -1;\r\n const note = payload?.note ?? \"\";\r\n const sendNotification = payload?.sendNotification ?? false;\r\n\r\n try {\r\n const response = await releaseTask(taskId, note, sendNotification);\r\n const result = response?.data ?? false;\r\n\r\n if (result) {\r\n await context.dispatch(\"setTask\", taskId);\r\n }\r\n\r\n return Promise.resolve(result);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to ${\r\n findUserTaskCommand(userTaskCommandType.release)?.label\r\n } Task. (taskId: ${taskId})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * set Document Children\r\n * @param context\r\n * @param {Number|number} id parent record id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async setDocumentChildren(context, id) {\r\n return await setDocumentChildren(context, id);\r\n },\r\n\r\n /**\r\n * delete Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async deleteWorkflowProject(context, id) {\r\n await deleteWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * suspend Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async suspendWorkflowProject(context, id) {\r\n await suspendWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * cancel Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async cancelWorkflowProject(context, id) {\r\n await cancelWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * resume Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async resumeWorkflowProject(context, id) {\r\n await resumeWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * Get Workflow Task User Candidates\r\n * @param context\r\n * @param {Number} taskId Task id\r\n * @return {Promise<{id: Number, name: string, displayName: string, firstName: string, lastName: string, title: String, description: String, email: String}>}\r\n */\r\n async getUserCandidates(context, taskId) {\r\n return await getUserCandidates(taskId);\r\n },\r\n\r\n /**\r\n * Assign User\r\n * @param context\r\n * @param {{ taskId: Number, userId: Number, comment: String, sendNotification: Boolean}} payload\r\n * @return {Promise}\r\n */\r\n async assignUser(context, payload) {\r\n const taskId = payload?.taskId ?? -1;\r\n try {\r\n const response = await assignUser(payload);\r\n const result = response?.data ?? false;\r\n\r\n if (result) {\r\n await context.dispatch(\"setTask\", taskId);\r\n }\r\n\r\n return Promise.resolve(result);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to ${\r\n findUserTaskCommand(userTaskCommandType.reassign)?.label\r\n } Task. (taskId: ${taskId})`\r\n );\r\n }\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// services\r\nimport { storeSelectedModuleItemId } from \"@/services/inbox/inboxModuleService\";\r\n\r\n// mutation-types\r\nimport {\r\n SET_DRAWER_MINI,\r\n SET_RECORD,\r\n SET_DOCUMENTS,\r\n SET_DOCUMENT,\r\n SET_RECORD_DRAFT,\r\n SET_RECORD_LOCK,\r\n SET_RECORD_READ_ONLY,\r\n UPDATE_RECORD_FILE_VERSION,\r\n SET_UPLOAD_FILE_PROGRESS,\r\n UPDATE_RECORD_STATUS,\r\n SET_FILE_VERSIONS,\r\n SET_FILE_VERSION,\r\n SET_RECORD_MODE,\r\n SET_RECORD_EDIT,\r\n SET_RECORD_EDITED,\r\n SET_RECORD_NEW_CATEGORY,\r\n SET_RECORD_TEXT_FIELD_VALUE,\r\n SET_RECORD_LOOKUP_DATA,\r\n SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION,\r\n UPDATE_RECORD_INFO,\r\n SET_DOCUMENT_CHILDREN,\r\n SET_RECORD_NEW_AND_CATEGORY\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\nimport {\r\n SET_TASKS,\r\n SET_TASK,\r\n UPDATE_TASK_ASSIGNEE\r\n} from \"@/store/inbox/mutation-types\";\r\n\r\nimport {\r\n setCompoundDocumentNewFileVersions,\r\n setCurrentRecord,\r\n setDocument,\r\n setFileVersion,\r\n setRecordDraft,\r\n setRecordEdit,\r\n setRecordEdited,\r\n setRecordLock,\r\n setRecordLookupData,\r\n setRecordMode,\r\n setRecordReadOnly,\r\n updateRecordStatus,\r\n setRecordTextFieldValue,\r\n setUploadFileProgress,\r\n updateFileVersionInfo,\r\n updateRecordInfos,\r\n setDocumentChildren,\r\n setRecordNewAndCategory\r\n} from \"@/store/shared/mutations/record/record-mutations\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\nimport {\r\n SET_PROJECT_CANCELED,\r\n SET_PROJECT_DELETED,\r\n SET_PROJECT_RESUMED,\r\n SET_PROJECT_SUSPENDED\r\n} from \"@/store/shared/mutationTypes/project/project-mutation-types\";\r\nimport {\r\n setProjectCanceled,\r\n setProjectDeleted,\r\n setProjectResumed,\r\n setProjectSuspended,\r\n updateTaskAssignee\r\n} from \"@/store/shared/mutations/project/project-mutations\";\r\n\r\nconst mutations = {\r\n /**\r\n * Set drawer to mini state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_DRAWER_MINI]: (state, payload) => {\r\n state.drawerMini = payload || false;\r\n },\r\n /**\r\n * Set Workflow user tasks state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_TASKS](state, payload) {\r\n state.tasks = payload;\r\n console.log(SET_TASKS, state.tasks);\r\n },\r\n /**\r\n * Set Workflow user task state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_TASK](state, payload) {\r\n state.task = payload;\r\n console.log(SET_TASK, state.task);\r\n storeSelectedModuleItemId(state.task?.taskId ?? -1);\r\n },\r\n\r\n /**\r\n * Set current 'inbox' record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD](state, payload) {\r\n setCurrentRecord(state, payload);\r\n console.log(`${moduleNames.MyWork}.${SET_RECORD} record:`, state.record);\r\n console.log(\r\n `${moduleNames.MyWork}.${SET_RECORD} recordCategory:`,\r\n state.recordCategory\r\n );\r\n },\r\n\r\n /**\r\n * update Record Status\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [UPDATE_RECORD_STATUS](state, payload) {\r\n updateRecordStatus(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Infos of current record and all related records\r\n * @param state\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}[]}} payload RecordItemModel\r\n */\r\n [UPDATE_RECORD_INFO](state, payload) {\r\n updateRecordInfos(state, payload);\r\n },\r\n\r\n [SET_DOCUMENTS]: (state, payload) => {\r\n state.documents = payload;\r\n console.log(SET_DOCUMENTS, state.documents);\r\n },\r\n\r\n /**\r\n * Set current selected 'inbox' document\r\n * @param state\r\n * @param {{document, category}} payload\r\n */\r\n [SET_DOCUMENT](state, payload) {\r\n setDocument(state, payload);\r\n console.log(\r\n `${moduleNames.MyWork}.${SET_DOCUMENT} document:`,\r\n state.document\r\n );\r\n console.log(\r\n `${moduleNames.MyWork}.${SET_DOCUMENT} documentCategory:`,\r\n state.documentCategory\r\n );\r\n },\r\n\r\n /**\r\n * Set current 'inbox' record lock\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_LOCK](state, payload) {\r\n setRecordLock(state, payload);\r\n },\r\n\r\n /**\r\n * Set current 'folder' record Read Only\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_READ_ONLY](state, payload) {\r\n setRecordReadOnly(state, payload);\r\n },\r\n\r\n /**\r\n * Set current 'folder' record as Draft\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_DRAFT](state, payload) {\r\n setRecordDraft(state, payload);\r\n },\r\n\r\n /**\r\n * SET RECORD FILE VERSION\r\n * @param state\r\n * @param payload\r\n */\r\n [UPDATE_RECORD_FILE_VERSION](state, payload) {\r\n updateFileVersionInfo(state, payload);\r\n },\r\n\r\n /**\r\n * SET UPLOAD FILE PROGRESS\r\n * @param state\r\n * @param {Number|number} progress\r\n */\r\n [SET_UPLOAD_FILE_PROGRESS](state, progress) {\r\n setUploadFileProgress(state, progress);\r\n },\r\n\r\n [SET_FILE_VERSIONS](state, payload) {\r\n state.versions = payload || [];\r\n console.log(SET_FILE_VERSIONS, state.versions);\r\n },\r\n\r\n /**\r\n * Set current 'inbox' File Version\r\n * @param state\r\n * @param {{version, category}} payload\r\n */\r\n [SET_FILE_VERSION](state, payload) {\r\n setFileVersion(state, payload);\r\n console.log(\r\n `${moduleNames.MyWork}.${SET_FILE_VERSION} version:`,\r\n state.version\r\n );\r\n console.log(\r\n `${moduleNames.MyWork}.${SET_FILE_VERSION} versionCategory:`,\r\n state.versionCategory\r\n );\r\n },\r\n\r\n [SET_RECORD_MODE](state, payload) {\r\n setRecordMode(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDIT](state, payload) {\r\n setRecordEdit(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDITED](state, payload) {\r\n setRecordEdited(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_AND_CATEGORY](state, payload) {\r\n setRecordNewAndCategory(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_CATEGORY](state, payload) {\r\n state.recordNewCategory = payload;\r\n },\r\n\r\n [SET_RECORD_TEXT_FIELD_VALUE](state, payload) {\r\n setRecordTextFieldValue(state, payload);\r\n },\r\n\r\n [SET_RECORD_LOOKUP_DATA](state, payload) {\r\n setRecordLookupData(state, payload);\r\n },\r\n\r\n [SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION](state, payload) {\r\n setCompoundDocumentNewFileVersions(state, payload);\r\n },\r\n\r\n /**\r\n * Set document children of specified document\r\n * @param state\r\n * @param {{document, children}} payload\r\n */\r\n [SET_DOCUMENT_CHILDREN](state, payload) {\r\n setDocumentChildren(state, payload);\r\n },\r\n\r\n [SET_PROJECT_DELETED](state, payload) {\r\n setProjectDeleted(state, payload);\r\n },\r\n\r\n [SET_PROJECT_CANCELED](state, payload) {\r\n setProjectCanceled(state, payload);\r\n },\r\n\r\n [SET_PROJECT_SUSPENDED](state, payload) {\r\n setProjectSuspended(state, payload);\r\n },\r\n\r\n [SET_PROJECT_RESUMED](state, payload) {\r\n setProjectResumed(state, payload);\r\n },\r\n\r\n [UPDATE_TASK_ASSIGNEE](state, payload) {\r\n if (state.task) updateTaskAssignee(state, payload);\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport { recordMode } from \"@/model/record/recordModel\";\r\n\r\nconst state = {\r\n notifications: [],\r\n\r\n /**\r\n * Workflow User Tasks\r\n * @type {{taskId: number, name: string, typeId: number, templateId: number, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusChanged: string, statusText: string, projectId: number, projectName: string, priority: number, isOverdue: boolean, isMilestone: boolean, isDue: boolean, dueDate: string, comment: string, assignee: string}[]}\r\n */\r\n tasks: [],\r\n\r\n /**\r\n * Current Workflow User Task\r\n * @type {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusChanged: string, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, created: string, effective: string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}}\r\n */\r\n task: undefined,\r\n\r\n /**\r\n * User Task's Record\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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: undefined,\r\n\r\n /**\r\n * current Record File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n recordFileVersion: undefined,\r\n\r\n /**\r\n * User Task's Record Category\r\n * @type {{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}[]}}\r\n */\r\n recordCategory: undefined,\r\n\r\n /**\r\n * Current record Mode\r\n */\r\n recordMode: recordMode.view,\r\n\r\n /**\r\n * New Record\r\n * @type {{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}}, 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 recordNew: undefined,\r\n\r\n /**\r\n * New Record Category\r\n * @type {{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}[]}}\r\n */\r\n recordNewCategory: undefined,\r\n\r\n /**\r\n * Child Records of SELECTED tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 documents: [],\r\n\r\n /**\r\n * Selected Document\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n document: undefined,\r\n\r\n /**\r\n * Category of current selected/edited document/file\r\n * @type {{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 documentCategory: undefined,\r\n\r\n /**\r\n * File versions\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 versions: [],\r\n\r\n /**\r\n * Selected File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n version: undefined,\r\n\r\n /**\r\n * Category of a current selected version\r\n * @type {{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}[]}[]}|undefined}\r\n */\r\n versionCategory: undefined,\r\n\r\n /**\r\n * Is drawer Mini\r\n * @type {boolean}\r\n */\r\n drawerMini: false,\r\n\r\n /**\r\n * Upload File Progress\r\n * @type {Number|number}\r\n */\r\n uploadFileProgress: 0\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","/**\r\n * project module's getters\r\n * Using Java Script ECMAScript 2021\r\n */\r\nconst getters = {\r\n /**\r\n * Get is project drawer Mini\r\n * @param state\r\n * @return {boolean}\r\n */\r\n drawerMini: state => state.drawerMini,\r\n\r\n /**\r\n * Get selected Module (project) Item (project)\r\n * @param state\r\n * @return {{projectId: Number, projectName: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName: string, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment: string, durableInstanceUid: string, creationDate: string}}\r\n */\r\n selectedModuleItem: state => state.project,\r\n\r\n /**\r\n * Get selected Module (project) Item Id (projectId)\r\n * @param state\r\n * @return {Number|number}\r\n */\r\n selectedModuleItemId: state => state.project?.projectId ?? -1,\r\n\r\n /**\r\n * Get selected Module (project) Item name\r\n * @param state\r\n * @return {string}\r\n */\r\n selectedModuleItemName: state => state.project?.projectName ?? \"\",\r\n\r\n /**\r\n * Get documents\r\n * @param state\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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 documents: state => state.documents ?? [],\r\n\r\n /**\r\n * find Document\r\n * @param state\r\n * @param getters\r\n * @return {function(*): T}\r\n */\r\n findDocument: (state, getters) => id =>\r\n getters.documents?.find(el => (el?.id ?? -1) === id),\r\n\r\n /**\r\n * find Project Category\r\n * @param state\r\n * @param getters\r\n * @return {function(*): T}\r\n */\r\n findProjectCategory: (state, getters) => id =>\r\n getters.projectCategories?.find(el => (el?.id ?? -1) === id)\r\n};\r\n\r\nexport default getters;\r\n","const SET_PROJECTS = \"SET_PROJECTS\";\r\nconst SET_PROJECT = \"SET_PROJECT\";\r\n\r\nconst SET_PROJECT_TEMPLATES = \"SET_PROJECT_TEMPLATES\";\r\nconst SET_PROJECT_TEMPLATE = \"SET_PROJECT_TEMPLATE\";\r\nconst SET_WORKFLOW_ROLES = \"SET_WORKFLOW_ROLES\";\r\nconst SET_WORKFLOW_CALENDARS = \"SET_WORKFLOW_CALENDARS\";\r\n\r\nconst SET_PROJECT_CATEGORIES = \"SET_PROJECT_CATEGORIES\";\r\nconst SET_PROJECT_CATEGORY = \"SET_PROJECT_CATEGORY\";\r\nconst SET_PROJECT_CATEGORY_TEMPLATES = \"SET_PROJECT_CATEGORY_TEMPLATES\";\r\n\r\nexport {\r\n SET_PROJECTS,\r\n SET_PROJECT,\r\n SET_PROJECT_TEMPLATES,\r\n SET_PROJECT_TEMPLATE,\r\n SET_PROJECT_CATEGORIES,\r\n SET_PROJECT_CATEGORY,\r\n SET_PROJECT_CATEGORY_TEMPLATES,\r\n SET_WORKFLOW_ROLES,\r\n SET_WORKFLOW_CALENDARS\r\n};\r\n","// Web API Service\r\nimport {\r\n checkOutFileForSign,\r\n downloadFile,\r\n getRecordInfo\r\n} from \"@/services/api/apiContent\";\r\nimport {\r\n getWorkflowProjects,\r\n getWorkflowProject,\r\n getWorkflowProjectTemplates,\r\n getWorkflowProjectTemplate,\r\n getWorkflowProjectCategories,\r\n getWorkflowProjectCategoryTemplates,\r\n getWorkflowRoles,\r\n getWorkflowUsers,\r\n getWorkflowCalendars,\r\n getManagerCandidates,\r\n assignManager\r\n} from \"@/services/api/apiWorkflow\";\r\n\r\n// store\r\nimport {\r\n cancelWorkflowProject,\r\n suspendWorkflowProject,\r\n deleteWorkflowProject,\r\n resumeWorkflowProject\r\n} from \"@/store/shared/actions/project/project-actions\";\r\n\r\n// shared record actions\r\nimport {\r\n setDocument,\r\n setDocuments,\r\n setRecord,\r\n lockRecord,\r\n setDraftRecord,\r\n setReadOnlyRecord,\r\n unLockRecord,\r\n uploadFile,\r\n setFileDocuments,\r\n checkOutFile,\r\n releaseFile,\r\n checkInFile,\r\n setFileVersions,\r\n setFileVersion,\r\n downloadImageFileVersion as apiDownloadImageFileVersion,\r\n saveRecord,\r\n setNewRecordCategory,\r\n setRecordTextFieldValue,\r\n setDatabaseLookupData,\r\n checkInScannedFile,\r\n uploadCompoundDocumentFile,\r\n checkInEditedDocument\r\n} from \"@/store/shared/actions/record/record-actions\";\r\n\r\nimport { setDocumentChildren } from \"@/store/shared/actions/record/hierarchy-actions\";\r\n\r\nimport {\r\n createAgenda,\r\n createAgendaPacket,\r\n postAgendaMeeting,\r\n publishAgendaMeeting,\r\n recallAgendaItem,\r\n submitAgendaItem,\r\n unPostAgendaMeeting,\r\n unPublishAgendaMeeting\r\n} from \"@/store/shared/actions/agenda/agenda-actions\";\r\n\r\n// Project mutation types\r\nimport {\r\n SET_PROJECTS,\r\n SET_PROJECT,\r\n SET_PROJECT_TEMPLATES,\r\n SET_PROJECT_TEMPLATE,\r\n SET_PROJECT_CATEGORIES,\r\n SET_PROJECT_CATEGORY_TEMPLATES,\r\n SET_WORKFLOW_ROLES,\r\n SET_WORKFLOW_CALENDARS\r\n} from \"@/store/project/mutation-types\";\r\n\r\n// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\n\r\n// model\r\nimport { projectTemplateLabel } from \"@/model/workflow/project/projectTemplateModel\";\r\n\r\nconst actions = {\r\n /**\r\n * Set Workflow Projects\r\n * @param context\r\n * @return {Promise<[{projectId: number, definitionId: number, workflowInstanceId: number, workflowTypeId: number, projectName: String, recordId: number, subject: String, owner: String, projectManagerId: number, templateId: number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}]>}\r\n */\r\n async setProjects(context) {\r\n return getWorkflowProjects()\r\n .then(response => {\r\n if (response.status !== 200) {\r\n return Promise.reject(\r\n new Error(\r\n `Status Code: ${response.status}. ${response.statusText}.`\r\n )\r\n );\r\n }\r\n\r\n if (Array.isArray(response.data)) {\r\n context.commit(SET_PROJECTS, response.data);\r\n return Promise.resolve(response.data);\r\n } else {\r\n const text = response.data\r\n ? response.data.toString().toLowerCase()\r\n : response.toString();\r\n\r\n return Promise.reject(new Error(text));\r\n }\r\n })\r\n .catch(error => handleError(error, `Unable to set Workflow Projects`));\r\n },\r\n /**\r\n * Set current meeting\r\n * @param context\r\n * @param {Number} id\r\n * @return {Promise<{projectId: Number, projectName:string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string}>}\r\n */\r\n async setProject(context, id) {\r\n return getWorkflowProject(id)\r\n .then(response => {\r\n context.commit(SET_PROJECT, response.data);\r\n return response.data;\r\n })\r\n .catch(e =>\r\n handleError(e, `Unable to set Workflow Project by id: ${id}`)\r\n );\r\n },\r\n\r\n /**\r\n * set Project's Record\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async setRecord(context, id) {\r\n return setRecord(context, id);\r\n },\r\n\r\n /**\r\n * Set current documents\r\n * @param context\r\n * @param {Number|number} id\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 async setDocuments(context, id) {\r\n return await setDocuments(context, id);\r\n },\r\n\r\n /**\r\n * Set File(s) of current selected file-record\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise}\r\n */\r\n async setFileDocuments(context, id) {\r\n return setFileDocuments(context, id);\r\n },\r\n\r\n /**\r\n * Set current Document\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\n async setDocument(context, id) {\r\n return await setDocument(context, id);\r\n },\r\n\r\n /**\r\n * set File Versions\r\n * @param context\r\n * @param id\r\n * @return {Promise}\r\n */\r\n async setFileVersions(context, id) {\r\n return await setFileVersions(context, id);\r\n },\r\n\r\n /**\r\n * set File Version\r\n * @param context\r\n * @param {id:number, version:number} payload\r\n * @return {Promise}\r\n */\r\n async setFileVersion(context, payload) {\r\n return await setFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Download File\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<*>}\r\n */\r\n async downloadFile(context, id) {\r\n try {\r\n return await downloadFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to download File by id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * download File Version\r\n * @param context\r\n * @param payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadImageFileVersion(context, payload) {\r\n return await apiDownloadImageFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Upload File to an empty record\r\n * @param context\r\n * @param {{id:Number, file:any}} payload\r\n * @return {Promise}\r\n */\r\n async uploadFile(context, payload) {\r\n return await uploadFile(context, payload);\r\n },\r\n\r\n /**\r\n * upload Compound Document File\r\n * @param context\r\n * @param {{id: Number, file: any, insertBeforePage: Number, enqueue: Boolean, comments: string}} 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 async uploadCompoundDocumentFile(context, payload) {\r\n return await uploadCompoundDocumentFile(context, payload);\r\n },\r\n\r\n /**\r\n * check Out File\r\n * @param context\r\n * @param {Number|number} id\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 async checkOutFile(context, id) {\r\n return await checkOutFile(context, id);\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 * @param context\r\n * @param {Number|number} id\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 async checkOutFileForSign(context, id) {\r\n return await checkOutFileForSign(context, id);\r\n },\r\n\r\n /**\r\n * release File\r\n * @param context\r\n * @param {Number|number} id\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 async releaseFile(context, id) {\r\n return await releaseFile(context, id);\r\n },\r\n\r\n /**\r\n * check In File\r\n * @param context\r\n * @param {{id:Number, file:any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} 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 async checkInFile(context, payload) {\r\n return await checkInFile(context, payload);\r\n },\r\n\r\n /**\r\n * Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async lockRecord(context, id) {\r\n return await lockRecord(context, id);\r\n },\r\n\r\n /**\r\n * Un Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async unLockRecord(context, id) {\r\n return await unLockRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Draft Record\r\n * @param context\r\n * @param {Number|number} id\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 async setDraftRecord(context, id) {\r\n return await setDraftRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Read Only Record\r\n * @param context\r\n * @param {Number|number} id\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 async setReadOnlyRecord(context, id) {\r\n return await setReadOnlyRecord(context, id);\r\n },\r\n\r\n /**\r\n * save Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async saveRecord(context, payload) {\r\n return await saveRecord(context, payload);\r\n },\r\n\r\n /**\r\n * set new/edit Record Category\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setNewRecordCategory(context, payload) {\r\n await setNewRecordCategory(context, payload);\r\n },\r\n\r\n /**\r\n * set current record Text field value\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setRecordTextFieldValue(context, payload) {\r\n await setRecordTextFieldValue(context, payload);\r\n },\r\n\r\n /**\r\n * set Database Lookup Data of current inserting/editing record\r\n * @param context\r\n * @return {Promise<{id: number, value: any}[]>}\r\n */\r\n async setDatabaseLookupData(context) {\r\n return await setDatabaseLookupData(context);\r\n },\r\n\r\n /**\r\n * check In uploaded scanned image File\r\n * @param context\r\n * @param {{insert: boolean, insertAtBeginning: boolean}|undefined} 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 async checkInScannedFile(context, payload = undefined) {\r\n return await checkInScannedFile(context, payload);\r\n },\r\n\r\n /**\r\n * check In Edited File\r\n * @param context\r\n * @param 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 async checkInEditedDocument(context, payload) {\r\n return await checkInEditedDocument(context, payload);\r\n },\r\n\r\n /**\r\n * Get Record Info\r\n * @param context\r\n * @param payload\r\n */\r\n async getRecordInfo(context, payload) {\r\n try {\r\n const result = await getRecordInfo(payload);\r\n return result ? result.data : { id: payload };\r\n } catch (e) {\r\n await handleError(e, `Unable to fetch Document by id: ${payload.id}`);\r\n }\r\n },\r\n\r\n /**\r\n * post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async postAgendaMeeting(context, payload) {\r\n return await postAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPostAgendaMeeting(context, payload) {\r\n return await unPostAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async publishAgendaMeeting(context, payload) {\r\n return await publishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPublishAgendaMeeting(context, payload) {\r\n return await unPublishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * submit Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async submitAgendaItem(context, payload) {\r\n return await submitAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * recall Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async recallAgendaItem(context, payload) {\r\n return await recallAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, type: number}} payload\r\n * @return {Promise<*>}\r\n */\r\n async createAgenda(context, payload) {\r\n return await createAgenda(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Packet\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, option: any}} payload\r\n * @return {Promise}\r\n */\r\n async createAgendaPacket(context, payload) {\r\n return await createAgendaPacket(context, payload);\r\n },\r\n\r\n /**\r\n * set Document Children\r\n * @param context\r\n * @param {Number|number} id parent record id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async setDocumentChildren(context, id) {\r\n return await setDocumentChildren(context, id);\r\n },\r\n\r\n /**\r\n * set Workflow Project Categories\r\n * @param context\r\n * @return {Promise<*|*[]>}\r\n */\r\n async setWorkflowProjectCategories(context) {\r\n try {\r\n const response = await getWorkflowProjectCategories();\r\n\r\n context.commit(SET_PROJECT_CATEGORIES, response.data);\r\n\r\n return context.state.projectCategories ?? [];\r\n } catch (e) {\r\n await handleError(e, `Unable to set Workflow Project Templates`);\r\n }\r\n },\r\n\r\n /**\r\n * set Workflow Project Category Templates\r\n * @param context\r\n * @param {{number}} payload Project Category id\r\n * @return {Promise<[]|*[]>}\r\n */\r\n async setProjectCategoryTemplates(context, payload) {\r\n try {\r\n const response = await getWorkflowProjectCategoryTemplates(payload);\r\n\r\n console.log(\r\n `setWorkflowProjectCategoryTemplates() response.data:`,\r\n response.data\r\n );\r\n\r\n const payloadCategory = {\r\n categoryId: payload,\r\n templates: response?.data ?? []\r\n };\r\n\r\n context.commit(SET_PROJECT_CATEGORY_TEMPLATES, payloadCategory);\r\n\r\n return response?.data ?? [];\r\n } catch (e) {\r\n await handleError(\r\n e,\r\n `Unable to set Workflow Project Category Templates by Project Category id: ${payload}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * set Workflow Project Templates\r\n * @param context\r\n * @return {Promise<*|*[]>}\r\n */\r\n async setWorkflowProjectTemplates(context) {\r\n try {\r\n const response = await getWorkflowProjectTemplates();\r\n\r\n context.commit(SET_PROJECT_TEMPLATES, response.data);\r\n\r\n return context.state.projectTemplates ?? [];\r\n } catch (e) {\r\n await handleError(e, `Unable to set ${projectTemplateLabel}s`);\r\n }\r\n },\r\n\r\n /**\r\n * set Workflow Project Template\r\n * @param context\r\n * @param {number} id Project Template id\r\n * @return {Promise<*>}\r\n */\r\n async setWorkflowProjectTemplate(context, id) {\r\n try {\r\n const response = await getWorkflowProjectTemplate(id);\r\n\r\n context.commit(SET_PROJECT_TEMPLATE, response.data);\r\n\r\n return context.state.projectTemplate;\r\n } catch (e) {\r\n await handleError(e, `Unable to set ${projectTemplateLabel}s`);\r\n }\r\n },\r\n\r\n /**\r\n * delete Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async deleteWorkflowProject(context, id) {\r\n await deleteWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * suspend Workflow Project\r\n * @param context\r\n * @param {{ id: Number, message: String}} payload\r\n * @return {Promise}\r\n */\r\n async suspendWorkflowProject(context, payload) {\r\n await suspendWorkflowProject(context, payload);\r\n },\r\n\r\n /**\r\n * cancel Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async cancelWorkflowProject(context, id) {\r\n await cancelWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * resume Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async resumeWorkflowProject(context, id) {\r\n await resumeWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * Set WorkFlow Roles\r\n * @return {Promise<{string}[]>}\r\n */\r\n async setWorkflowRoles(context) {\r\n const response = await getWorkflowRoles();\r\n context.commit(SET_WORKFLOW_ROLES, response?.data ?? []);\r\n return context.state.workflowRoles ?? [];\r\n },\r\n\r\n /**\r\n * Set WorkFlow Calendars\r\n * @return {Promise<{string}[]>}\r\n */\r\n async setWorkflowCalendars(context) {\r\n const response = await getWorkflowCalendars();\r\n context.commit(SET_WORKFLOW_CALENDARS, response?.data ?? []);\r\n return context.state.workflowCalendars ?? [];\r\n },\r\n\r\n /**\r\n * Get WorkFlow Users\r\n * @param context\r\n * @param {string} roles Workflow Users\r\n * @return {Promise<{string}[]>}\r\n */\r\n async getWorkflowUsers(context, roles) {\r\n return await getWorkflowUsers(roles);\r\n },\r\n\r\n /**\r\n * Get Workflow Project Manager Candidates\r\n * @param context\r\n * @param {Number} templateId Project Template Id\r\n * @return {Promise<{id: Number, name: string, displayName: string, firstName: string, lastName: string, title: String, description: String, email: String}>}\r\n */\r\n async getManagerCandidates(context, templateId) {\r\n return await getManagerCandidates(templateId);\r\n },\r\n\r\n /**\r\n * Assign Manager\r\n * @param context\r\n * @param {{ projectId: Number, managerId: Number, comment: String, sendNotification: Boolean}} payload\r\n * @return {Promise}\r\n */\r\n async assignManager(context, payload) {\r\n return await assignManager(payload);\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// services\r\nimport { storeSelectedModuleItemId } from \"@/services/project/projectModuleService\";\r\n\r\n// shared mutation types\r\nimport {\r\n SET_DRAWER_MINI,\r\n SET_RECORD,\r\n SET_DOCUMENTS,\r\n SET_DOCUMENT,\r\n SET_RECORD_DRAFT,\r\n SET_RECORD_LOCK,\r\n SET_RECORD_READ_ONLY,\r\n UPDATE_RECORD_FILE_VERSION,\r\n SET_UPLOAD_FILE_PROGRESS,\r\n UPDATE_RECORD_STATUS,\r\n SET_FILE_VERSIONS,\r\n SET_FILE_VERSION,\r\n SET_RECORD_MODE,\r\n SET_RECORD_EDIT,\r\n SET_RECORD_EDITED,\r\n SET_RECORD_NEW_CATEGORY,\r\n SET_RECORD_TEXT_FIELD_VALUE,\r\n SET_RECORD_LOOKUP_DATA,\r\n SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION,\r\n UPDATE_RECORD_INFO,\r\n SET_DOCUMENT_CHILDREN,\r\n SET_RECORD_NEW_AND_CATEGORY\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// project mutation types\r\nimport {\r\n SET_PROJECTS,\r\n SET_PROJECT,\r\n SET_PROJECT_TEMPLATES,\r\n SET_PROJECT_TEMPLATE,\r\n SET_PROJECT_CATEGORIES,\r\n SET_PROJECT_CATEGORY,\r\n SET_PROJECT_CATEGORY_TEMPLATES,\r\n SET_WORKFLOW_ROLES,\r\n SET_WORKFLOW_CALENDARS\r\n} from \"@/store/project/mutation-types\";\r\n\r\nimport {\r\n setCompoundDocumentNewFileVersions,\r\n setCurrentRecord,\r\n setDocument,\r\n setFileVersion,\r\n setRecordDraft,\r\n setRecordEdit,\r\n setRecordEdited,\r\n setRecordLock,\r\n setRecordLookupData,\r\n setRecordMode,\r\n setRecordReadOnly,\r\n updateRecordStatus,\r\n setRecordTextFieldValue,\r\n setUploadFileProgress,\r\n updateFileVersionInfo,\r\n updateRecordInfos,\r\n setDocumentChildren,\r\n setRecordNewAndCategory\r\n} from \"@/store/shared/mutations/record/record-mutations\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\nimport {\r\n SET_PROJECT_CANCELED,\r\n SET_PROJECT_DELETED,\r\n SET_PROJECT_RESUMED,\r\n SET_PROJECT_SUSPENDED,\r\n UPDATE_PROJECT_MANAGER\r\n} from \"@/store/shared/mutationTypes/project/project-mutation-types\";\r\n\r\nimport {\r\n setProjectCanceled,\r\n setProjectDeleted,\r\n setProjectResumed,\r\n setProjectSuspended\r\n} from \"@/store/shared/mutations/project/project-mutations\";\r\n\r\nconst mutations = {\r\n /**\r\n * Set drawer to mini state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_DRAWER_MINI]: (state, payload) => {\r\n state.drawerMini = payload || false;\r\n },\r\n /**\r\n * Set Workflow Projects state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_PROJECTS](state, payload) {\r\n state.projects = payload;\r\n console.log(SET_PROJECTS, state.projects);\r\n },\r\n /**\r\n * Set Workflow Project\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_PROJECT](state, payload) {\r\n state.project = payload;\r\n console.log(SET_PROJECT, state.project);\r\n storeSelectedModuleItemId(state.project?.projectId ?? -1);\r\n },\r\n\r\n /**\r\n * Set current 'project' record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD](state, payload) {\r\n setCurrentRecord(state, payload);\r\n console.log(`project.${SET_RECORD} record:`, state.record);\r\n console.log(`project.${SET_RECORD} recordCategory:`, state.recordCategory);\r\n },\r\n\r\n /**\r\n * update Record Status\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [UPDATE_RECORD_STATUS](state, payload) {\r\n updateRecordStatus(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Infos of current record and all related records\r\n * @param state\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}[]}} payload RecordItemModel\r\n */\r\n [UPDATE_RECORD_INFO](state, payload) {\r\n updateRecordInfos(state, payload);\r\n },\r\n\r\n [SET_DOCUMENTS]: (state, payload) => {\r\n state.documents = payload;\r\n console.log(SET_DOCUMENTS, state.documents);\r\n },\r\n\r\n /**\r\n * Set current selected 'project' document\r\n * @param state\r\n * @param {{document, category}} payload\r\n */\r\n [SET_DOCUMENT](state, payload) {\r\n setDocument(state, payload);\r\n console.log(\r\n `${moduleNames.Projects}.${SET_DOCUMENT} document:`,\r\n state.document\r\n );\r\n console.log(\r\n `${moduleNames.Projects}.${SET_DOCUMENT} documentCategory:`,\r\n state.documentCategory\r\n );\r\n },\r\n\r\n /**\r\n * Set current 'project' record lock\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_LOCK](state, payload) {\r\n setRecordLock(state, payload);\r\n },\r\n\r\n /**\r\n * Set current 'project' record Read Only\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_READ_ONLY](state, payload) {\r\n setRecordReadOnly(state, payload);\r\n },\r\n\r\n /**\r\n * Set the current 'folder' record as Draft\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_DRAFT](state, payload) {\r\n setRecordDraft(state, payload);\r\n },\r\n\r\n /**\r\n * SET RECORD FILE VERSION\r\n * @param state\r\n * @param payload\r\n */\r\n [UPDATE_RECORD_FILE_VERSION](state, payload) {\r\n updateFileVersionInfo(state, payload);\r\n },\r\n\r\n /**\r\n * SET UPLOAD FILE PROGRESS\r\n * @param state\r\n * @param {Number|number} progress\r\n */\r\n [SET_UPLOAD_FILE_PROGRESS](state, progress) {\r\n setUploadFileProgress(state, progress);\r\n },\r\n\r\n [SET_FILE_VERSIONS](state, payload) {\r\n state.versions = payload || [];\r\n console.log(SET_FILE_VERSIONS, state.versions);\r\n },\r\n\r\n /**\r\n * Set current 'Project' File Version\r\n * @param state\r\n * @param {{version, category}} payload\r\n */\r\n [SET_FILE_VERSION](state, payload) {\r\n setFileVersion(state, payload);\r\n console.log(\r\n `${moduleNames.Projects}.${SET_FILE_VERSION} version:`,\r\n state.version\r\n );\r\n console.log(\r\n `${moduleNames.Projects}.${SET_FILE_VERSION} versionCategory:`,\r\n state.versionCategory\r\n );\r\n },\r\n\r\n [SET_RECORD_MODE](state, payload) {\r\n setRecordMode(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDIT](state, payload) {\r\n setRecordEdit(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDITED](state, payload) {\r\n setRecordEdited(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_AND_CATEGORY](state, payload) {\r\n setRecordNewAndCategory(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_CATEGORY](state, payload) {\r\n state.recordNewCategory = payload;\r\n },\r\n\r\n [SET_RECORD_TEXT_FIELD_VALUE](state, payload) {\r\n setRecordTextFieldValue(state, payload);\r\n },\r\n\r\n [SET_RECORD_LOOKUP_DATA](state, payload) {\r\n setRecordLookupData(state, payload);\r\n },\r\n\r\n [SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION](state, payload) {\r\n setCompoundDocumentNewFileVersions(state, payload);\r\n },\r\n\r\n /**\r\n * Set document children of specified document\r\n * @param state\r\n * @param {{document, children}} payload\r\n */\r\n [SET_DOCUMENT_CHILDREN](state, payload) {\r\n setDocumentChildren(state, payload);\r\n },\r\n\r\n [SET_PROJECT_TEMPLATES](state, payload) {\r\n state.projectTemplates = payload ?? [];\r\n console.log(SET_PROJECT_TEMPLATES, state.projectTemplates);\r\n },\r\n\r\n [SET_PROJECT_TEMPLATE](state, payload) {\r\n state.projectTemplate = payload;\r\n console.log(SET_PROJECT_TEMPLATE, state.projectTemplate);\r\n },\r\n\r\n [SET_PROJECT_CATEGORIES](state, payload) {\r\n state.projectCategories = payload ?? [];\r\n console.log(SET_PROJECT_CATEGORIES, state.projectCategories);\r\n },\r\n\r\n /**\r\n * SET PROJECT CATEGORY TEMPLATES\r\n * @param state\r\n * @param {{categoryId: number, templates}} payload\r\n */\r\n [SET_PROJECT_CATEGORY_TEMPLATES](state, payload) {\r\n const categoryId = payload?.categoryId ?? -1;\r\n const templates = payload?.templates ?? [];\r\n\r\n const pc = state.projectCategories?.find(c => c.id === categoryId);\r\n if (pc) {\r\n pc.templates = templates;\r\n }\r\n\r\n console.log(SET_PROJECT_CATEGORY_TEMPLATES, pc?.templates);\r\n },\r\n\r\n [SET_PROJECT_CATEGORY](state, payload) {\r\n state.projectCategory = payload;\r\n console.log(SET_PROJECT_CATEGORY, state.projectCategory);\r\n },\r\n\r\n [SET_PROJECT_DELETED](state, payload) {\r\n setProjectDeleted(state, payload);\r\n },\r\n\r\n [SET_PROJECT_CANCELED](state, payload) {\r\n setProjectCanceled(state, payload);\r\n },\r\n\r\n [SET_PROJECT_SUSPENDED](state, payload) {\r\n setProjectSuspended(state, payload);\r\n },\r\n\r\n [SET_PROJECT_RESUMED](state, payload) {\r\n setProjectResumed(state, payload);\r\n },\r\n\r\n [SET_WORKFLOW_ROLES](state, payload) {\r\n state.workflowRoles = payload ?? [];\r\n },\r\n\r\n [SET_WORKFLOW_CALENDARS](state, payload) {\r\n state.workflowCalendars = payload ?? [];\r\n },\r\n\r\n [UPDATE_PROJECT_MANAGER](state, payload) {\r\n state.project.projectManagerName =\r\n payload.managerName ?? state.project.projectManagerName;\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\n\r\n// model\r\nimport { recordMode } from \"@/model/record/recordModel\";\r\n\r\nconst state = {\r\n notifications: [],\r\n\r\n /**\r\n * Workflow Projects\r\n * @type {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n projects: [],\r\n\r\n /**\r\n * Current Workflow Project\r\n * @type {{projectId: Number, projectName:string, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string, userTasks: {taskId: number, typeId: number, actorId: number, actorName: string, userName: string, assignee: string, canReassign: boolean, canceledRecipients: string, comment: string, dueDate: string, duration: string, isDue: boolean, isMilestone: boolean, isOverdue: boolean, priority: number, recordId: number, recordName: string, status: number, statusText: string, notes: {id: number, created: string, taskId: number, userId: number, userName: string}[]}}}\r\n */\r\n project: undefined,\r\n\r\n /**\r\n * Selected Workflow Project's Record\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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: undefined,\r\n\r\n /**\r\n * current Record File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n recordFileVersion: undefined,\r\n\r\n /**\r\n * Workflow Project's Record's Category\r\n * @type {{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}[]}}\r\n */\r\n recordCategory: undefined,\r\n\r\n /**\r\n * Current record Mode\r\n */\r\n recordMode: recordMode.view,\r\n\r\n /**\r\n * New Record\r\n * @type {{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}}, 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 recordNew: undefined,\r\n\r\n /**\r\n * New Record Category\r\n * @type {{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}[]}}\r\n */\r\n recordNewCategory: undefined,\r\n\r\n /**\r\n * Child Records of SELECTED tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 documents: [],\r\n\r\n /**\r\n * Selected Document\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n document: undefined,\r\n\r\n /**\r\n * Category of current selected/edited document/file\r\n * @type {{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 documentCategory: undefined,\r\n\r\n /**\r\n * File versions\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 versions: [],\r\n\r\n /**\r\n * Selected File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n version: undefined,\r\n\r\n /**\r\n * Category of current selected version\r\n * @type {{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}[]}[]}|undefined}\r\n */\r\n versionCategory: undefined,\r\n\r\n /**\r\n * Is drawer Mini\r\n * @type {boolean}\r\n */\r\n drawerMini: false,\r\n\r\n /**\r\n * Upload File Progress\r\n * @type {Number|number}\r\n */\r\n\r\n uploadFileProgress: 0,\r\n\r\n /**\r\n * Project Templates\r\n * @type {Array}\r\n */\r\n projectTemplates: [],\r\n\r\n /**\r\n * Project Template\r\n * @type {Object}\r\n */\r\n projectTemplate: undefined,\r\n\r\n /**\r\n * Project Categories\r\n * @type {Array}\r\n */\r\n projectCategories: [],\r\n\r\n /**\r\n * Project Category\r\n * @type {Object}\r\n */\r\n projectCategory: undefined,\r\n\r\n /**\r\n * Workflow Roles\r\n * @type {Array}[]\r\n */\r\n workflowRoles: [],\r\n\r\n /**\r\n * Workflow Roles\r\n * @type {{string}[]}\r\n */\r\n workflowCalendars: []\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","/**\r\n * agenda module's getters\r\n * Using JavaScript ECMAScript 2021\r\n */\r\nconst getters = {\r\n /**\r\n * Get is folder drawer Mini\r\n * @param state\r\n * @return {boolean}\r\n */\r\n drawerMini: state => state.drawerMini ?? true,\r\n\r\n /**\r\n * Get selected Module (agenda) Item (record)\r\n * @param state\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}[]}}\r\n */\r\n selectedModuleItem: state => state.record,\r\n\r\n /**\r\n * Get selected Module (agenda) Item Id (id)\r\n * @param state\r\n * @return {number|number}\r\n */\r\n selectedModuleItemId: state => state.record?.id ?? -1,\r\n\r\n /**\r\n * Get selected Module (agenda) Item name\r\n * @param state\r\n * @return {*|string}\r\n */\r\n selectedModuleItemName: state => state.record?.name ?? \"\",\r\n\r\n /**\r\n * Get documents\r\n * @param state\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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 documents: state => state.documents ?? [],\r\n\r\n /**\r\n * find Document by provided Document id\r\n * @param state\r\n * @param getters\r\n * @return {function(*): T}\r\n */\r\n findDocument: (state, getters) => id =>\r\n getters.documents?.find(el => (el?.id ?? -1) === id),\r\n\r\n /**\r\n * find record's Project by provided project id\r\n * @param state\r\n * @param getters\r\n * @return {function(*): *}\r\n */\r\n findProject: (state, getters) => id =>\r\n getters.projects?.find(el => (el?.projectId ?? -1) === id)\r\n};\r\n\r\nexport default getters;\r\n","import { getAxios } from \"@/services/api/apiCommon\";\r\n\r\n/**\r\n * Document Templates\r\n */\r\n\r\n/**\r\n * Document Templates web api controller name\r\n * @type {string}\r\n */\r\nconst documentTemplates = \"DocumentTemplates\";\r\n\r\n/**\r\n * Get Document Assembly Templates\r\n * @return Meeting Template Model {Promise<{id:number, name:string}[]>}\r\n */\r\nconst getDocumentAssemblyTemplates = () =>\r\n getAxios().get(`/${documentTemplates}`);\r\n\r\n/**\r\n * get Document Assembly Template by its id\r\n * @param {Number|number} id template id\r\n * @return {Promise<{record:{fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], Description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}, mapping:{mappingSourceType:string, text:string, name:string, gUID:string, source:{propertyName:string, entityName:string, fullName:string, entityKey:string, entityID:string, entityCategory:string, propertyDisplayName:string, entityDisplayName:string, fullDisplayName:string, entityValue:string}, destination:{propertyName:string, entityName:string, fullName:string, entityKey:string, entityID:string, entityCategory:string, propertyDisplayName:string, entityDisplayName:string, fullDisplayName:string, entityValue:string}, property:string, bookmarkName:string, mappings:string[]}, id:number, name:string}}>}\r\n */\r\nconst getDocumentAssemblyTemplate = id =>\r\n getAxios().get(`/${documentTemplates}/${id}`);\r\n\r\nexport { getDocumentAssemblyTemplates, getDocumentAssemblyTemplate };\r\n","// apiService\r\nimport {\r\n checkOutFileForSign,\r\n countRecordsWithIn,\r\n downloadFile,\r\n getRecordInfo\r\n} from \"@/services/api/apiContent\";\r\n\r\n// apiAgenda\r\nimport {\r\n getAgendaItemTemplates,\r\n getAgendaMeetings\r\n} from \"@/services/api/apiAgenda\";\r\n\r\n// apiAgenda\r\nimport {\r\n getMeetingAgendaTemplates,\r\n getMeetingAgendaTemplate\r\n} from \"@/services/api/apiAgenda\";\r\n\r\n// shared record actions\r\nimport {\r\n lockRecord,\r\n unLockRecord,\r\n setDraftRecord,\r\n setReadOnlyRecord,\r\n uploadFile,\r\n uploadCompoundDocumentFile,\r\n setDocument,\r\n setRecord,\r\n setDocuments,\r\n clearDocuments,\r\n setSearchCategory,\r\n checkOutFile,\r\n releaseFile,\r\n checkInFile,\r\n setFileVersions,\r\n setFileVersion,\r\n downloadImageFileVersion as apiDownloadImageFileVersion,\r\n saveRecord,\r\n deleteRecord,\r\n setNewRecordCategory,\r\n setRecordTextFieldValue,\r\n setDatabaseLookupData,\r\n checkInScannedFile,\r\n moveRecord,\r\n copyRecord,\r\n setChildrenDocuments,\r\n setRecordShortcut,\r\n deleteRecordShortcut,\r\n restoreRecord\r\n} from \"@/store/shared/actions/record/record-actions\";\r\n\r\n// record hierarchy actions\r\nimport {\r\n setBreadcrumbs,\r\n setParentBreadcrumbs,\r\n setFoundDocuments,\r\n setChildRecords,\r\n createRecord,\r\n createAgendaMeeting,\r\n createAgendaItem,\r\n setDocumentChildren,\r\n setOpenProject,\r\n setProjects,\r\n startWorkflowProject,\r\n setProjectNewTemplate,\r\n setNewWorkflowProject\r\n} from \"@/store/shared/actions/record/hierarchy-actions\";\r\nimport { checkInEditedDocument } from \"../shared/actions/record/record-actions\";\r\nimport {\r\n submitAgendaItem,\r\n recallAgendaItem,\r\n postAgendaMeeting,\r\n unPostAgendaMeeting,\r\n publishAgendaMeeting,\r\n unPublishAgendaMeeting,\r\n createAgenda,\r\n createAgendaPacket,\r\n referAgendaItem,\r\n deferAgendaItem,\r\n getLegislatorNote,\r\n saveLegislatorNote,\r\n deleteLegislatorNote,\r\n getRollCall,\r\n saveRollCall,\r\n submitAgendaItemsMeeting,\r\n submitAgendaItemsSection,\r\n recallAgendaItemsMeeting,\r\n recallAgendaItemsSection,\r\n moveMeetingContents,\r\n moveBackupMaterial\r\n} from \"@/store/shared/actions/agenda/agenda-actions\";\r\n\r\n// shared mutation types\r\nimport { SET_RECORDS } from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// services\r\nimport { handleError } from \"@/services/error/errorService\";\r\nimport {\r\n cancelWorkflowProject,\r\n deleteWorkflowProject,\r\n resumeWorkflowProject,\r\n suspendWorkflowProject\r\n} from \"@/store/shared/actions/project/project-actions\";\r\nimport { assignManager } from \"@/services/api/apiWorkflow\";\r\nimport {\r\n getDocumentAssemblyTemplate,\r\n getDocumentAssemblyTemplates\r\n} from \"@/services/api/apiDocumentAssembly\";\r\n\r\n//import store from \"@/store/index\";\r\n\r\nconst actions = {\r\n /**\r\n * set Breadcrumbs\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise<{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}[]}[]|(function(): *[])|string|*|*[]>}\r\n */\r\n async setBreadcrumbs(context, id) {\r\n return await setBreadcrumbs(context, id);\r\n },\r\n\r\n /**\r\n * set Parent Breadcrumbs\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise<{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}[]}[]|(function(): *[])|string|*|*[]>}\r\n */\r\n async setParentBreadcrumbs(context, id) {\r\n return await setParentBreadcrumbs(context, id);\r\n },\r\n\r\n /**\r\n * Set Child Records\r\n * @param context\r\n * @param {{id:Number, recordIndex:Number, count:Number}} payload\r\n * @returns {Promise<[]|void|[{children:name: string, id: number}]>}\r\n */\r\n async setChildRecords(context, payload) {\r\n return await setChildRecords(context, payload);\r\n },\r\n\r\n /**\r\n * Set found documents of current selected record of Agenda Module and provided search criteria\r\n * @param context\r\n * @param payload\r\n * @returns {Promise}\r\n */\r\n async setFoundDocuments(context, payload) {\r\n return await setFoundDocuments(context, payload);\r\n },\r\n\r\n /**\r\n * Set Agenda Meetings\r\n * @param context\r\n * @param {{startPage:number, countPerPage:number}} payload\r\n * @return {Promise<{id: number, name: String}>}\r\n */\r\n async setAgendaMeetings(context, payload) {\r\n const queryModel = {};\r\n\r\n return getAgendaMeetings(\r\n payload.startPage,\r\n payload.countPerPage,\r\n queryModel\r\n )\r\n .then(response => {\r\n if (response?.status !== 200) {\r\n return Promise.reject(\r\n new Error(\r\n `Status Code: ${response?.status}. ${response?.statusText}.`\r\n )\r\n );\r\n }\r\n\r\n if (Array.isArray(response?.data)) {\r\n context.commit(SET_RECORDS, response?.data);\r\n return Promise.resolve(response?.data);\r\n }\r\n\r\n const text = response?.data\r\n ? response?.data?.toString().toLowerCase()\r\n : response?.toString();\r\n\r\n return Promise.reject(new Error(text));\r\n })\r\n .catch(error => handleError(error, `Unable to set Agenda Meetings`));\r\n },\r\n\r\n /**\r\n * Set the current record\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async setRecord(context, id) {\r\n return setRecord(context, id);\r\n },\r\n\r\n /**\r\n * Set record shortcut\r\n * @param context\r\n * @param payload {{id:Number, parentId: Number}}\r\n * @return {Promise<{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}}, 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 async setRecordShortcut(context, payload) {\r\n return setRecordShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * Set current documents\r\n * @param context\r\n * @param {Number|number} id\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 async setDocuments(context, id) {\r\n return await setDocuments(context, id);\r\n },\r\n\r\n /**\r\n * Set children documents\r\n * @param context\r\n * @param {{id:Number, recordIndex:Number, count: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 async setChildrenDocuments(context, payload) {\r\n return await setChildrenDocuments(context, payload);\r\n },\r\n\r\n /**\r\n * Clear current list of documents\r\n * @param context\r\n */\r\n clearDocuments(context) {\r\n clearDocuments(context);\r\n },\r\n\r\n /**\r\n * Set current Document\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\n async setDocument(context, id) {\r\n return await setDocument(context, id);\r\n },\r\n\r\n /**\r\n * set File Versions\r\n * @param context\r\n * @param id\r\n * @return {Promise}\r\n */\r\n async setFileVersions(context, id) {\r\n return await setFileVersions(context, id);\r\n },\r\n\r\n /**\r\n * set File Version\r\n * @param context\r\n * @param {id:number, version:number} payload\r\n * @return {Promise<*>}\r\n */\r\n async setFileVersion(context, payload) {\r\n return await setFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Download File\r\n * @param context\r\n * @param {number} id\r\n * @return {Promise<*>}\r\n */\r\n async downloadFile(context, id) {\r\n try {\r\n return await downloadFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to download File by id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * download image File Version\r\n * @param context\r\n * @param payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadImageFileVersion(context, payload) {\r\n return await apiDownloadImageFileVersion(context, payload);\r\n },\r\n\r\n /**\r\n * Upload File to an empty record\r\n * @param context\r\n * @param {{id:Number, file:any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} payload\r\n * @return {Promise}\r\n */\r\n async uploadFile(context, payload) {\r\n return await uploadFile(context, payload);\r\n },\r\n\r\n /**\r\n * upload Compound Document File\r\n * @param context\r\n * @param {{id: Number, file: any, insertBeforePage: Number, enqueue: Boolean, comments: string}} 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 async uploadCompoundDocumentFile(context, payload) {\r\n return await uploadCompoundDocumentFile(context, payload);\r\n },\r\n\r\n /**\r\n * check Out File\r\n * @param context\r\n * @param {Number|number} id\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 async checkOutFile(context, id) {\r\n return await checkOutFile(context, id);\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 * @param context\r\n * @param {Number|number} id\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 async checkOutFileForSign(context, id) {\r\n return await checkOutFileForSign(context, id);\r\n },\r\n\r\n /**\r\n * release File\r\n * @param context\r\n * @param {Number|number} id\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 async releaseFile(context, id) {\r\n return await releaseFile(context, id);\r\n },\r\n\r\n /**\r\n * check In File\r\n * @param context\r\n * @param {{id:Number, file:any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} 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 async checkInFile(context, payload) {\r\n return await checkInFile(context, payload);\r\n },\r\n\r\n /**\r\n * Set Document search category\r\n * @param context\r\n * @param {Number} id\r\n * @returns {Promise<{id:number, name:string}>}\r\n */\r\n async setSearchCategory(context, id) {\r\n return await setSearchCategory(context, id);\r\n },\r\n\r\n /**\r\n * Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async lockRecord(context, id) {\r\n return await lockRecord(context, id);\r\n },\r\n\r\n /**\r\n * Un Lock Record\r\n * @param context\r\n * @param {Number|number} id\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 async unLockRecord(context, id) {\r\n return await unLockRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Draft Record\r\n * @param context\r\n * @param {Number|number} id\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 async setDraftRecord(context, id) {\r\n return await setDraftRecord(context, id);\r\n },\r\n\r\n /**\r\n * set Read Only Record\r\n * @param context\r\n * @param {Number|number} id\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 async setReadOnlyRecord(context, id) {\r\n return await setReadOnlyRecord(context, id);\r\n },\r\n\r\n /**\r\n * create Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async createRecord(context, payload) {\r\n return await createRecord(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Meeting\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async createAgendaMeeting(context, payload) {\r\n return await createAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Item\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async createAgendaItem(context, payload) {\r\n return await createAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * save Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isComposite: boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[] }>}\r\n */\r\n async saveRecord(context, payload) {\r\n return await saveRecord(context, payload);\r\n },\r\n\r\n /**\r\n * delete Record\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async deleteRecord(context, payload) {\r\n return await deleteRecord(context, payload);\r\n },\r\n\r\n /**\r\n * delete Record Shortcut\r\n * @param context\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async deleteRecordShortcut(context, payload) {\r\n return await deleteRecordShortcut(context, payload);\r\n },\r\n\r\n /**\r\n * set new/edit Record Category\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setNewRecordCategory(context, payload) {\r\n await setNewRecordCategory(context, payload);\r\n },\r\n\r\n /**\r\n * set current record Text field value\r\n * @param context\r\n * @param {number} payload\r\n * @return {Promise}\r\n */\r\n async setRecordTextFieldValue(context, payload) {\r\n await setRecordTextFieldValue(context, payload);\r\n },\r\n\r\n /**\r\n * set Database Lookup Data of current inserting/editing record\r\n * @param context\r\n * @return {Promise<{id: number, value: any}[]>}\r\n */\r\n async setDatabaseLookupData(context) {\r\n return await setDatabaseLookupData(context);\r\n },\r\n\r\n /**\r\n * check In uploaded scanned image File\r\n * @param context\r\n * @param {{insert: boolean, insertAtBeginning: boolean}|undefined} 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 async checkInScannedFile(context, payload = undefined) {\r\n return await checkInScannedFile(context, payload);\r\n },\r\n\r\n /**\r\n * check In Edited File\r\n * @param context\r\n * @param 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 async checkInEditedDocument(context, payload) {\r\n return await checkInEditedDocument(context, payload);\r\n },\r\n\r\n /**\r\n * Get Record Info\r\n * @param context\r\n * @param payload\r\n */\r\n async getRecordInfo(context, payload) {\r\n try {\r\n const result = await getRecordInfo(payload);\r\n return result ? result.data : { id: payload };\r\n } catch (e) {\r\n await handleError(e, `Unable to fetch Document by id: ${payload.id}`);\r\n }\r\n },\r\n\r\n /**\r\n * get Meeting Agenda Templates\r\n * @return {Promise<{id:number, name:string}[]>} Agenda Meeting Templates\r\n */\r\n async getMeetingAgendaTemplates() {\r\n try {\r\n return (await getMeetingAgendaTemplates()) ?? [];\r\n } catch (e) {\r\n await handleError(e, `Unable to getMeetingAgendaTemplates:`);\r\n }\r\n },\r\n\r\n /**\r\n * get Document Assembly Templates\r\n * @return {Promise<{id:number, name:string}[]>} Document Assembly Templates\r\n */\r\n async getDocumentAssemblyTemplates() {\r\n try {\r\n return (await getDocumentAssemblyTemplates()) ?? [];\r\n } catch (e) {\r\n await handleError(e, `Unable to getDocumentAssemblyTemplates:`);\r\n }\r\n },\r\n\r\n /**\r\n * get Meeting Agenda Template\r\n * @param context\r\n * @param {{number}} id Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async getMeetingAgendaTemplate(context, id) {\r\n try {\r\n return await getMeetingAgendaTemplate(id);\r\n } catch (e) {\r\n await handleError(\r\n e,\r\n `Unable to get Meeting Agenda Template by Template id: ${id}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * get Document AssemblyTemplate\r\n * @param context\r\n * @param {{number}} id Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async getDocumentAssemblyTemplate(context, id) {\r\n try {\r\n return await getDocumentAssemblyTemplate(id);\r\n } catch (e) {\r\n await handleError(\r\n e,\r\n `Unable to get Document Assembly Template by Template id: ${id}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * get Agenda Item Templates\r\n * @param context\r\n * @param {number} sectionId Agenda Section id\r\n * @return {Promise<*>}\r\n */\r\n async getAgendaItemTemplates(context, sectionId) {\r\n try {\r\n return await getAgendaItemTemplates(sectionId);\r\n } catch (e) {\r\n await handleError(\r\n e,\r\n `Unable to get Agenda Item Templates. (Section id: ${sectionId})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async postAgendaMeeting(context, payload) {\r\n return await postAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un post Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPostAgendaMeeting(context, payload) {\r\n return await unPostAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async publishAgendaMeeting(context, payload) {\r\n return await publishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * un publish Agenda Meeting\r\n * @param context\r\n * @param {Number|number} payload Agenda Meeting id\r\n * @return {Promise<*>}\r\n */\r\n async unPublishAgendaMeeting(context, payload) {\r\n return await unPublishAgendaMeeting(context, payload);\r\n },\r\n\r\n /**\r\n * submit Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async submitAgendaItem(context, payload) {\r\n return await submitAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * recall Agenda Item\r\n * @param context\r\n * @param {id:number} payload Agenda Item id\r\n * @return {Promise<*>}\r\n */\r\n async recallAgendaItem(context, payload) {\r\n return await recallAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, type: number}} payload\r\n * @return {Promise<*>}\r\n */\r\n async createAgenda(context, payload) {\r\n return await createAgenda(context, payload);\r\n },\r\n\r\n /**\r\n * create Agenda Packet\r\n * @param context\r\n * @param {{meetingId: number, recordId: number, option: any}} payload\r\n * @return {Promise}\r\n */\r\n async createAgendaPacket(context, payload) {\r\n return await createAgendaPacket(context, payload);\r\n },\r\n\r\n /**\r\n * move Record\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async moveRecord(context, payload) {\r\n return await moveRecord(context, payload);\r\n },\r\n\r\n /**\r\n * move Meeting Contents\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async moveMeetingContents(context, payload) {\r\n return await moveMeetingContents(context, payload);\r\n },\r\n\r\n /**\r\n * move Backup Material\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number,insertTreePosition: Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async moveBackupMaterial(context, payload) {\r\n return await moveBackupMaterial(context, payload);\r\n },\r\n\r\n /**\r\n * copy Record\r\n * @param context\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\n async copyRecord(context, payload) {\r\n return await copyRecord(context, payload);\r\n },\r\n\r\n /**\r\n * Refer Agenda Item\r\n * @param context\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:number}} payload\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\n async referAgendaItem(context, payload) {\r\n return await referAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * Defer Agenda Item\r\n * @param context\r\n * @param {{sourceId:Number, destinationId:Number, option:Number, index:number}} payload\r\n * @return {Promise<{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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string,}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\n async deferAgendaItem(context, payload) {\r\n return await deferAgendaItem(context, payload);\r\n },\r\n\r\n /**\r\n * set Document Children\r\n * @param context\r\n * @param {Number|number} id parent record id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async setDocumentChildren(context, id) {\r\n return await setDocumentChildren(context, id);\r\n },\r\n\r\n /**\r\n * get Total Result Count\r\n * @param context\r\n * @param {{id: (number|number), queryModel: {CategoryId: number, TypeId: number, Owner: string, CreatedDateTo: string, StateId: number, Creator: string, Name: string, Extension: string, Pages: number, Fields: {any}[], Version: number, CreatedDateFrom: string, ModifiedDateTo: string, ModifiedDateFrom: string}}}payload\r\n * @return {Promise}\r\n */\r\n async getTotalCountWithin(context, payload) {\r\n return await countRecordsWithIn(payload);\r\n },\r\n\r\n /**\r\n * set workflow Projects\r\n * @param context\r\n * @param {number} id record id\r\n * @return {Promise<{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]|*[]>}\r\n */\r\n async setProjects(context, id) {\r\n return setProjects(context, id);\r\n },\r\n\r\n /**\r\n * set record's Open Project\r\n * @param context\r\n * @param {number} id record id\r\n * @return {Promise<{projectId: Number, projectName:string, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string, userTasks: {taskId: number, typeId: number, actorId: number, actorName: string, userName: string, assignee: string, canReassign: boolean, canceledRecipients: string, comment: string, dueDate: string, duration: string, isDue: boolean, isMilestone: boolean, isOverdue: boolean, priority: number, recordId: number, recordName: string, status: number, statusText: string, notes: {id: number, created: string, taskId: number, userId: number, userName: string}[]}}>}\r\n */\r\n async setOpenProject(context, id) {\r\n return await setOpenProject(context, id);\r\n },\r\n\r\n /**\r\n * set New Workflow Project\r\n * @param context\r\n * @param {{templateId: number, runOnlyOneProject: boolean}} payload\r\n * @return {Promise}\r\n */\r\n async setNewWorkflowProject(context, payload) {\r\n return await setNewWorkflowProject(context, payload);\r\n },\r\n\r\n /**\r\n * change Template of current record's new project\r\n * @param context\r\n * @param {id:number} payload project template id\r\n * @return {Promise<{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}>}\r\n */\r\n async setProjectNewTemplate(context, payload) {\r\n return await setProjectNewTemplate(context, payload);\r\n },\r\n\r\n /**\r\n * start Workflow Project\r\n * @param context\r\n * @param payload\r\n * @return {Promise<{projectId: Number, projectName: string, comment: string, templateId: number, runOnlyOneProject: boolean}>}\r\n */\r\n async startWorkflowProject(context, payload) {\r\n return await startWorkflowProject(context, payload);\r\n },\r\n\r\n /**\r\n * delete Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async deleteWorkflowProject(context, id) {\r\n await deleteWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * suspend Workflow Project\r\n * @param context\r\n * @param {{ id: Number, message: String}} payload\r\n * @return {Promise}\r\n */\r\n async suspendWorkflowProject(context, payload) {\r\n await suspendWorkflowProject(context, payload);\r\n },\r\n\r\n /**\r\n * cancel Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async cancelWorkflowProject(context, id) {\r\n await cancelWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * resume Workflow Project\r\n * @param context\r\n * @param {number} id Workflow Project id\r\n * @return {Promise}\r\n */\r\n async resumeWorkflowProject(context, id) {\r\n await resumeWorkflowProject(context, id);\r\n },\r\n\r\n /**\r\n * Assign Manager\r\n * @param context\r\n * @param {{ projectId: Number, managerId: Number, comment: String, sendNotification: Boolean}} payload\r\n * @return {Promise}\r\n */\r\n async assignManager(context, payload) {\r\n return await assignManager(payload);\r\n },\r\n\r\n /**\r\n * Get Legislator Note\r\n * @param context\r\n * @param {{record}} payload\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\n async getLegislatorNote(context, payload) {\r\n return await getLegislatorNote(context, payload);\r\n },\r\n\r\n /**\r\n * Save Legislator Note\r\n * @param context\r\n * @param {{record: Object, note: String}} payload\r\n * @return {Promise<{id:number, recordId:number, actor:object, text:string}>}\r\n */\r\n async saveLegislatorNote(context, payload) {\r\n return await saveLegislatorNote(context, payload);\r\n },\r\n\r\n /**\r\n * Delete Legislator Note\r\n * @param context\r\n * @param {{record: Object}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\n async deleteLegislatorNote(context, payload) {\r\n return await deleteLegislatorNote(context, payload);\r\n },\r\n\r\n /**\r\n * Get Roll Call\r\n * @param context\r\n * @param {id:Number} id\r\n * @return {Promise<{rollCall:Object[], actor:Object[], rollCallStatus:Object[] }>}\r\n */\r\n async getRollCall(context, id) {\r\n return await getRollCall(context, id);\r\n },\r\n\r\n /**\r\n * Save Roll Call\r\n * @param context\r\n * @param {{id:number, rollCall:Array}} payload\r\n * @return {Promise}\r\n */\r\n async saveRollCall(context, payload) {\r\n return await saveRollCall(context, payload);\r\n },\r\n\r\n /**\r\n * Restore Record\r\n * @param context\r\n * @param id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\n async restoreRecord(context, id) {\r\n return await restoreRecord(context, id);\r\n },\r\n\r\n /**\r\n * Submit Meeting Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async submitMeetingAgendaItems(context, id) {\r\n return await submitAgendaItemsMeeting(context, id);\r\n },\r\n\r\n /**\r\n * Submit Section Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async submitSectionAgendaItems(context, id) {\r\n return await submitAgendaItemsSection(context, id);\r\n },\r\n\r\n /**\r\n * recall Meeting Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async recallMeetingAgendaItems(context, id) {\r\n return await recallAgendaItemsMeeting(context, id);\r\n },\r\n\r\n /**\r\n * recall Section Agenda Items\r\n * @param context\r\n * @param id\r\n * @return {Promise<{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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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, 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, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: 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}}, 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 async recallSectionAgendaItems(context, id) {\r\n return await recallAgendaItemsSection(context, id);\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// services\r\nimport { storeSelectedModuleItemId } from \"@/services/agenda/agendaModuleService\";\r\n\r\n// shared mutation types\r\nimport {\r\n SET_DRAWER_MINI,\r\n SET_RECORD,\r\n SET_RECORDS,\r\n SET_DOCUMENTS,\r\n SET_DOCUMENT,\r\n SET_RECORD_DRAFT,\r\n SET_RECORD_LOCK,\r\n SET_RECORD_READ_ONLY,\r\n SET_DOCUMENT_SEARCH_CATEGORY,\r\n UPDATE_RECORD_FILE_VERSION,\r\n SET_UPLOAD_FILE_PROGRESS,\r\n UPDATE_RECORD_STATUS,\r\n SET_FILE_VERSIONS,\r\n SET_FILE_VERSION,\r\n SET_RECORD_MODE,\r\n SET_RECORD_NEW,\r\n SET_RECORD_NEW_CATEGORY,\r\n SET_RECORD_EDIT,\r\n SET_RECORD_EDITED,\r\n SET_RECORD_CREATED,\r\n SET_RECORD_DELETED,\r\n SET_RECORD_TEXT_FIELD_VALUE,\r\n SET_RECORD_LOOKUP_DATA,\r\n SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION,\r\n UPDATE_RECORD_INFO,\r\n SET_MOVED_RECORD,\r\n SET_LOCAL_UPLOADED_FILE,\r\n SET_DOCUMENT_CHILDREN,\r\n SET_RECORD_NEW_AND_CATEGORY,\r\n SET_MOVED_RECORDS,\r\n UPDATE_RECORD_LIST_BY_ID,\r\n UPDATE_DOCUMENT_LIST_BY_ID\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// hierarchy mutation types\r\nimport {\r\n SET_BREADCRUMBS,\r\n SET_PROJECT_NEW,\r\n SET_PROJECT_NEW_TEMPLATE,\r\n SET_RECORD_OPEN_PROJECTS,\r\n SET_RECORD_PROJECTS,\r\n SET_RECORD_NEW_PROJECT\r\n} from \"@/store/shared/mutationTypes/record/hierarchy-mutation-types\";\r\n\r\n// mutation Helper\r\nimport {\r\n setRecordDraft,\r\n setRecordLock,\r\n setRecordReadOnly,\r\n updateRecordStatus,\r\n setUploadFileProgress,\r\n updateFileVersionInfo,\r\n setRecordNew,\r\n setRecordEdit,\r\n setRecordMode,\r\n setRecordEdited,\r\n setRecordCreated,\r\n setRecordDeleted,\r\n setRecordTextFieldValue,\r\n setRecordLookupData,\r\n setCurrentRecord,\r\n setFileVersion,\r\n setDocument,\r\n updateRecordInfos,\r\n setDocumentChildren,\r\n setRecordNewAndCategory\r\n} from \"@/store/shared/mutations/record/record-mutations\";\r\n\r\nimport {\r\n setCompoundDocumentNewFileVersions,\r\n setNewRecordProject,\r\n setProjectNew,\r\n setProjectNewTemplate,\r\n setRecordOpenProjects,\r\n setRecordProjects\r\n} from \"@/store/shared/mutations/record/hierarchy-mutations\";\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\nimport {\r\n SET_PROJECT_CANCELED,\r\n SET_PROJECT_DELETED,\r\n SET_PROJECT_RESUMED,\r\n SET_PROJECT_SUSPENDED,\r\n UPDATE_PROJECT_MANAGER\r\n} from \"@/store/shared/mutationTypes/project/project-mutation-types\";\r\nimport {\r\n setProjectCanceled,\r\n setProjectDeleted,\r\n setProjectResumed,\r\n setProjectSuspended\r\n} from \"@/store/shared/mutations/project/project-mutations\";\r\n\r\nconst mutations = {\r\n /**\r\n * Set drawer to mini state\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_DRAWER_MINI]: (state, payload) => {\r\n state.drawerMini = payload || false;\r\n },\r\n\r\n /**\r\n * Set current Agenda Meeting\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD]: (state, payload) => {\r\n setCurrentRecord(state, payload);\r\n\r\n console.log(`${moduleNames.Agenda}.${SET_RECORD} record:`, state.record);\r\n console.log(\r\n `${moduleNames.Agenda}.${SET_RECORD} recordCategory:`,\r\n state.recordCategory\r\n );\r\n\r\n state.projects = [];\r\n state.openProjects = [];\r\n\r\n storeSelectedModuleItemId(state.record?.id ?? -1);\r\n },\r\n\r\n /**\r\n * update Record Status\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [UPDATE_RECORD_STATUS](state, payload) {\r\n updateRecordStatus(state, payload);\r\n },\r\n\r\n /**\r\n * update Record Infos of current record and all related records\r\n * @param state\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}[]}} payload RecordItemModel\r\n */\r\n [UPDATE_RECORD_INFO](state, payload) {\r\n updateRecordInfos(state, payload);\r\n },\r\n\r\n [SET_RECORDS](state, payload) {\r\n state.records = payload;\r\n console.log(SET_RECORDS, state.records);\r\n },\r\n\r\n [SET_BREADCRUMBS](state, payload) {\r\n state.breadcrumbs = payload;\r\n console.log(SET_BREADCRUMBS, state.breadcrumbs);\r\n },\r\n\r\n [SET_DOCUMENTS]: (state, payload) => {\r\n state.documents = payload;\r\n console.log(SET_DOCUMENTS, state.documents);\r\n },\r\n\r\n /**\r\n * Set current selected 'project' document\r\n * @param state\r\n * @param {{document, category}} payload\r\n */\r\n [SET_DOCUMENT](state, payload) {\r\n setDocument(state, payload);\r\n console.log(\r\n `${moduleNames.Agenda}.${SET_DOCUMENT} document:`,\r\n state.document\r\n );\r\n console.log(\r\n `${moduleNames.Agenda}.${SET_DOCUMENT} documentCategory:`,\r\n state.documentCategory\r\n );\r\n },\r\n\r\n [SET_DOCUMENT_SEARCH_CATEGORY](state, payload) {\r\n state.searchCategory = payload;\r\n console.log(SET_DOCUMENT_SEARCH_CATEGORY, state.searchCategory);\r\n },\r\n\r\n /**\r\n * Set current 'agenda' record lock\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_LOCK](state, payload) {\r\n setRecordLock(state, payload);\r\n },\r\n\r\n /**\r\n * Set current 'agenda' record Read Only\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_READ_ONLY](state, payload) {\r\n setRecordReadOnly(state, payload);\r\n },\r\n\r\n /**\r\n * Set current 'agenda' record Read as Draft\r\n * @param state\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}}, 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}[]}} payload\r\n */\r\n [SET_RECORD_DRAFT](state, payload) {\r\n setRecordDraft(state, payload);\r\n },\r\n\r\n /**\r\n * SET RECORD FILE VERSION\r\n * @param state\r\n * @param payload record\r\n */\r\n [UPDATE_RECORD_FILE_VERSION](state, payload) {\r\n updateFileVersionInfo(state, payload);\r\n },\r\n\r\n /**\r\n * SET UPLOAD FILE PROGRESS\r\n * @param state\r\n * @param {Number|number} progress\r\n */\r\n [SET_UPLOAD_FILE_PROGRESS](state, progress) {\r\n setUploadFileProgress(state, progress);\r\n },\r\n\r\n [SET_FILE_VERSIONS](state, payload) {\r\n state.versions = payload || [];\r\n console.log(SET_FILE_VERSIONS, state.versions);\r\n },\r\n\r\n /**\r\n * Set current 'folder' File Version\r\n * @param state\r\n * @param {{version, category}} payload\r\n */\r\n [SET_FILE_VERSION](state, payload) {\r\n setFileVersion(state, payload);\r\n console.log(\r\n `${moduleNames.Agenda}.${SET_FILE_VERSION} version:`,\r\n state.version\r\n );\r\n console.log(\r\n `${moduleNames.Agenda}.${SET_FILE_VERSION} versionCategory:`,\r\n state.versionCategory\r\n );\r\n },\r\n\r\n [SET_RECORD_MODE](state, payload) {\r\n setRecordMode(state, payload);\r\n },\r\n\r\n /**\r\n * set 'agenda' current Record as a New Record\r\n * @param state\r\n * @param {{record, category}} payload\r\n */\r\n [SET_RECORD_NEW](state, payload) {\r\n setRecordNew(state, payload);\r\n },\r\n\r\n [SET_RECORD_CREATED](state, payload) {\r\n setRecordCreated(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDIT](state, payload) {\r\n setRecordEdit(state, payload);\r\n },\r\n\r\n [SET_RECORD_EDITED](state, payload) {\r\n setRecordEdited(state, payload);\r\n },\r\n\r\n [SET_RECORD_DELETED](state, payload) {\r\n setRecordDeleted(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_AND_CATEGORY](state, payload) {\r\n setRecordNewAndCategory(state, payload);\r\n },\r\n\r\n [SET_RECORD_NEW_CATEGORY](state, payload) {\r\n state.recordNewCategory = payload;\r\n },\r\n\r\n [SET_RECORD_TEXT_FIELD_VALUE](state, payload) {\r\n setRecordTextFieldValue(state, payload);\r\n },\r\n\r\n [SET_RECORD_LOOKUP_DATA](state, payload) {\r\n setRecordLookupData(state, payload);\r\n },\r\n\r\n [SET_COMPOUND_DOCUMENT_NEW_FILE_VERSION](state, payload) {\r\n setCompoundDocumentNewFileVersions(state, payload);\r\n },\r\n\r\n [SET_MOVED_RECORD](state, payload) {\r\n state.movedRecord.moveType = payload?.type ?? undefined;\r\n state.movedRecord.record = payload?.record ?? undefined;\r\n },\r\n\r\n [SET_MOVED_RECORDS](state, payload) {\r\n state.batchMovedRecords.moveType = payload?.type ?? undefined;\r\n state.batchMovedRecords.records = payload?.records ?? [];\r\n },\r\n\r\n [SET_LOCAL_UPLOADED_FILE](state, payload) {\r\n state.localUploadedFile = payload ?? undefined;\r\n },\r\n\r\n /**\r\n * Set document children of specified document\r\n * @param state\r\n * @param {{document, children}} payload\r\n */\r\n [SET_DOCUMENT_CHILDREN](state, payload) {\r\n setDocumentChildren(state, payload);\r\n },\r\n\r\n /**\r\n * Set RECORD PROJECTS\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_RECORD_PROJECTS](state, payload) {\r\n setRecordProjects(state, payload);\r\n },\r\n\r\n /**\r\n * Set RECORD OPEN PROJECTS\r\n * @param state\r\n * @param payload\r\n */\r\n [SET_RECORD_OPEN_PROJECTS](state, payload) {\r\n setRecordOpenProjects(state, payload);\r\n },\r\n\r\n /**\r\n * set PROJECT NEW\r\n * @param state\r\n * @param {{project, template}} payload\r\n */\r\n [SET_PROJECT_NEW](state, payload) {\r\n setProjectNew(state, payload);\r\n },\r\n\r\n /**\r\n * set PROJECT NEW TEMPLATE\r\n * @param state\r\n * @param {{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}} payload project template\r\n */\r\n [SET_PROJECT_NEW_TEMPLATE](state, payload) {\r\n setProjectNewTemplate(state, payload);\r\n },\r\n\r\n [SET_PROJECT_DELETED](state, payload) {\r\n setProjectDeleted(state, payload);\r\n },\r\n\r\n [SET_PROJECT_CANCELED](state, payload) {\r\n setProjectCanceled(state, payload);\r\n },\r\n\r\n [SET_PROJECT_SUSPENDED](state, payload) {\r\n setProjectSuspended(state, payload);\r\n },\r\n\r\n [SET_PROJECT_RESUMED](state, payload) {\r\n setProjectResumed(state, payload);\r\n },\r\n\r\n [UPDATE_PROJECT_MANAGER](state, payload) {\r\n const project = state.openProjects?.find(p => p.projectId === payload.id);\r\n project.projectManagerName = payload.managerName;\r\n },\r\n\r\n [SET_RECORD_NEW_PROJECT](state, payload) {\r\n setNewRecordProject(state, payload);\r\n },\r\n\r\n [UPDATE_RECORD_LIST_BY_ID](state, payload) {\r\n state.fetchRecordListById = payload;\r\n },\r\n\r\n [UPDATE_DOCUMENT_LIST_BY_ID](state, payload) {\r\n state.fetchDocumentListById = payload;\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\nimport { recordMode } from \"@/model/record/recordModel\";\r\n\r\nconst state = {\r\n /**\r\n * TODO: if/when needed\r\n */\r\n notifications: [],\r\n\r\n /**\r\n * Child Records of expanded tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, recordEventModel: {recordEventType: Number, recordAncestorEventType: 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 records: [],\r\n\r\n /**\r\n * current Record\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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: undefined,\r\n\r\n /**\r\n * current Record File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n recordFileVersion: undefined,\r\n\r\n /**\r\n * Category of current selected/edited record\r\n * @type {{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}[]}}\r\n */\r\n recordCategory: undefined,\r\n\r\n /**\r\n * Current record Mode\r\n */\r\n recordMode: recordMode.view,\r\n\r\n /**\r\n * New Record\r\n * @type {{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}}, 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 recordNew: undefined,\r\n\r\n /**\r\n * New Record Category\r\n * @type {{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}[]}}\r\n */\r\n recordNewCategory: undefined,\r\n\r\n /**\r\n * breadcrumbs\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]}\r\n */\r\n breadcrumbs: [],\r\n\r\n /**\r\n * Child Records of SELECTED tree/drawer-record/folder/document/meeting/section/item\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 documents: [],\r\n\r\n /**\r\n * Selected Document\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n document: undefined,\r\n\r\n /**\r\n * Category of current selected/edited document/file\r\n * @type {{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 documentCategory: undefined,\r\n\r\n /**\r\n * Current selected search Record Category\r\n * @type {{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 searchCategory: undefined,\r\n\r\n /**\r\n * File versions\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, 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 versions: [],\r\n\r\n /**\r\n * Selected File Version\r\n * @type {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, stateDescription: string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, canUpdate: boolean, canDelete: boolean, cannotUpdateReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, cannotDeleteReason: {accessDenied: boolean, checkedOut: boolean, inherited: boolean, invalidOperation: boolean, locked: boolean, notInitialized: boolean, onHold: boolean, onHold: boolean, readOnly: boolean, retained: boolean, reason: string}, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, fieldValues: {id: number, name:string, fieldDataType: number, fieldDataTypeName: string, value: string}[], flyingFields: {id:number, sequence:number}[], operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}}\r\n */\r\n version: undefined,\r\n\r\n /**\r\n * Category of a current selected version\r\n * @type {{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}[]}[]}|undefined}\r\n */\r\n versionCategory: undefined,\r\n\r\n /**\r\n * Is drawer Mini\r\n * @type {boolean}\r\n */\r\n drawerMini: false,\r\n\r\n /**\r\n * Upload File Progress\r\n * @type {Number|number}\r\n */\r\n uploadFileProgress: 0,\r\n\r\n /**\r\n * Record that user wants to move (Cut/Copy)\r\n * @type {{moveType:String, record: {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, 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 movedRecord: {\r\n moveType: undefined,\r\n record: undefined\r\n },\r\n\r\n /**\r\n * Batch Records that user wants to move (Cut/Copy)\r\n * @type {{moveType:String, record: {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, 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 batchMovedRecords: {\r\n moveType: undefined,\r\n records: []\r\n },\r\n\r\n /**\r\n * Local Uploaded File\r\n * @type {File}\r\n */\r\n localUploadedFile: undefined,\r\n\r\n /**\r\n * Workflow Projects\r\n * @type {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n projects: [],\r\n\r\n /**\r\n * Opened Workflow Projects\r\n * @type {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}[]}\r\n */\r\n openProjects: [],\r\n\r\n /**\r\n * new record's workflow project\r\n * @type {{recordId: Number, projectName: string, projectManager: string, comment: string, templateId: number, runOnlyOneProject: boolean, startProjectOption: number, 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: undefined,\r\n\r\n /**\r\n * Template of the new project\r\n * @type {{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}}\r\n */\r\n projectNewTemplate: undefined,\r\n\r\n /**\r\n * Fetch Records List Id ( Drawer requires updated Records)\r\n * @type {Number}\r\n */\r\n fetchRecordListById: undefined,\r\n\r\n /**\r\n * Fetch Documents List Id ( Documents List requires updated Records )\r\n * @type {Number}\r\n */\r\n fetchDocumentListById: undefined\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","const getters = {\r\n document: state => state.document\r\n};\r\n\r\nexport default getters;\r\n","const SET_SEARCH_HIGHLIGHTS = \"SET_SEARCH_HIGHLIGHTS\";\r\n\r\nexport { SET_SEARCH_HIGHLIGHTS };\r\n","// services\r\nimport {\r\n checkInEditedDocument,\r\n checkOutFile,\r\n downloadFile,\r\n downloadFileAsPdf,\r\n downloadFileVersionAsPdf,\r\n downloadImageFileVersion as apiDownloadImageFileVersion,\r\n getFileVersion,\r\n getSearchHighlights,\r\n releaseFile,\r\n checkInScannedFileToRecord,\r\n getRecordInfo,\r\n uploadFileToEmptyRecordWip,\r\n uploadFileToCheckedOutFile,\r\n releaseCheckedOutFile,\r\n releaseWIPFile,\r\n releaseWIPRecord,\r\n scanToCheckedInFile,\r\n scanToCompoundDocument,\r\n checkInFile,\r\n downloadCompoundDocumentAsPdf,\r\n downloadFileVersion,\r\n importAnnotations,\r\n exportAnnotations,\r\n getOcrText,\r\n saveOcrText,\r\n uploadFileToFileWip,\r\n downloadEmptyRecordWipAsPDFDocument,\r\n downloadEmptyRecordWip,\r\n downloadFileWip,\r\n downloadFileWipAsPDFDocument,\r\n downloadPdfFileVersion,\r\n downloadEditFile,\r\n downloadEditFileAsPdf,\r\n downloadExportFileVersion,\r\n downloadExportFileVersionAsPdf\r\n} from \"@/services/api/apiContent\";\r\n\r\nimport { handleError } from \"@/services/error/errorService\";\r\n\r\n// shared mutation types\r\nimport {\r\n SET_DOCUMENT,\r\n SET_UPLOAD_FILE_PROGRESS\r\n} from \"../shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// document mutation types\r\nimport { SET_SEARCH_HIGHLIGHTS } from \"./mutation-types\";\r\n\r\n/**\r\n * Current Script Name\r\n * @type {string}\r\n */\r\nconst scriptName = \"actions\";\r\n\r\nconst actions = {\r\n /**\r\n * Get File Version\r\n * @param context\r\n * @param {{id:number, version:number}} payload\r\n * @return {Promise<{outFileType:string, isCheckedOutByOwner:boolean, canCheckOutForSigning:boolean, 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}>} Record Version Model\r\n */\r\n async getFileVersion(context, payload) {\r\n try {\r\n const result = await getFileVersion(payload.id, payload.version);\r\n context.commit(SET_DOCUMENT, result?.data);\r\n return result ? result?.data : { id: payload.id };\r\n } catch (e) {\r\n await handleError(\r\n e,\r\n `Unable to fetch File Version. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Get Record Info\r\n * @param context\r\n * @param {Number|number} id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\n async getRecordInfo(context, id) {\r\n try {\r\n const result = await getRecordInfo(id);\r\n context.commit(SET_DOCUMENT, result?.data);\r\n return result ? result.data : { id: id };\r\n } catch (e) {\r\n await handleError(e, `Unable to fetch Record Info. (id: ${id})`);\r\n }\r\n },\r\n\r\n /**\r\n * check In File\r\n * @param context\r\n * @param {{id:Number, file:any, uploadFileModel:{Extension: undefined, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} payload\r\n * @return {Promise<{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}>} File Model\r\n */\r\n async checkInFile(context, payload) {\r\n try {\r\n return await checkInFile(\r\n payload.id,\r\n payload.file,\r\n payload.uploadFileModel\r\n );\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to check In File. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * upload File To Empty Record Wip\r\n * @param context\r\n * @param {{id:number, file:any, insertFileOption:number}} payload\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\n async uploadFileToEmptyRecordWip(context, payload) {\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n return await uploadFileToEmptyRecordWip(\r\n payload.id,\r\n payload.file,\r\n payload.insertFileOption,\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to upload File To Empty Record Wip. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * upload File To File Wip\r\n * @param context\r\n * @param {{id:number, file:any, insertFileOption:number}} payload\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\n async uploadFileToFileWip(context, payload) {\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n return await uploadFileToFileWip(\r\n payload.id,\r\n payload.file,\r\n payload.insertFileOption,\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to upload File To File Wip. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * upload File To Document Record Wip\r\n * @param context\r\n * @param {{id:number, file:any, insertFileOption:number}} payload\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\n async uploadFileToCompoundWip(context, payload) {\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n return await uploadFileToEmptyRecordWip(\r\n //Todo: Replace With Document Wip, once Api Created\r\n payload.id,\r\n payload.file,\r\n payload.insertFileOption,\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to upload File To Document Wip. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * upload File To Checked Out File\r\n * @param context\r\n * @param {{id:number, file:any, insertFileOption:number}} payload\r\n * @return {Promise<{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}>} File Model\r\n */\r\n async uploadFileToCheckedOutFile(context, payload) {\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n return await uploadFileToCheckedOutFile(\r\n payload.id,\r\n payload.file,\r\n payload.insertFileOption,\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to upload File To Checked Out File. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Download File\r\n * @param context\r\n * @param {{id:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadFile(context, payload) {\r\n try {\r\n return await downloadFile(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download File. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Download File as PDF document\r\n * @param context\r\n * @param {Number|number} id record id\r\n * @returns {Promise}\r\n */\r\n async downloadFileAsPdf(context, id) {\r\n try {\r\n return await downloadFileAsPdf(id);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download File as PDF document. (id: ${id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Empty Record Wip File with annotation model\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadEmptyRecordWip(context, payload) {\r\n try {\r\n return await downloadEmptyRecordWip(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download work-in progress file. (id: ${payload.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Empty Record Wip File as PDF document with annotation model\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadEmptyRecordWipAsPdf(context, payload) {\r\n try {\r\n return await downloadEmptyRecordWipAsPDFDocument(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download work-in progress file. (id: ${payload.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download File Wip with annotation model\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadFileWip(context, payload) {\r\n try {\r\n return await downloadFileWip(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download work-in progress file. (id: ${payload.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download File Wip as PDF document with annotation model\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise<*>}\r\n */\r\n async downloadFileWipAsPdf(context, payload) {\r\n try {\r\n return await downloadFileWipAsPDFDocument(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download work-in progress file. (id: ${payload.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Download Compound Document as PDF document\r\n * @param context\r\n * @param {{id:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadCompoundAsPdf(context, payload) {\r\n try {\r\n return await downloadCompoundDocumentAsPdf(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download Compound as PDF document. (id: ${payload.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Image File Version\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadImageFileVersion(context, payload) {\r\n try {\r\n return await apiDownloadImageFileVersion(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download image File Version. (id: ${payload?.id ??\r\n -1} version: ${payload?.version ?? -1})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download File Version without any annotation option\r\n * @param context\r\n * @param {{id:number, version:number}} payload\r\n * @return {Promise}\r\n */\r\n async downloadFileVersion(context, payload) {\r\n try {\r\n return await downloadFileVersion(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download File Version. (id: ${payload?.id ??\r\n -1} version: ${payload?.version ?? -1})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Pdf File Version without any annotation option\r\n * @param context\r\n * @param {{id:number, version:number}} payload\r\n * @return {Promise}\r\n */\r\n async downloadPdfFileVersion(context, payload) {\r\n try {\r\n return await downloadPdfFileVersion(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download Pdf File Version. (id: ${payload?.id ??\r\n -1} version: ${payload?.version ?? -1})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download File Version As Pdf\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadFileVersionAsPdf(context, payload) {\r\n try {\r\n return await downloadFileVersionAsPdf(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download File Version as Pdf by id: ${payload?.id ??\r\n -1} version: ${payload?.version ?? -1})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Edit File\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadFileEdit(context, payload) {\r\n try {\r\n return await downloadEditFile(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download Edit File by id: ${payload?.id ?? -1}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Edit File As Pdf\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadFileEditAsPdf(context, payload) {\r\n try {\r\n return await downloadEditFileAsPdf(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download Edit File as Pdf by id: ${payload?.id ?? -1}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Export File Version\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadExportFileVersion(context, payload) {\r\n try {\r\n return await downloadExportFileVersion(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download Export File by id: ${payload?.id ??\r\n -1} version: ${payload?.version ?? -1})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * download Export File Version As Pdf\r\n * @param context\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @returns {Promise}\r\n */\r\n async downloadExportFileVersionAsPdf(context, payload) {\r\n try {\r\n return await downloadExportFileVersionAsPdf(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to download Export File as Pdf by id: ${payload?.id ??\r\n -1} version: ${payload?.version ?? -1})`\r\n );\r\n }\r\n },\r\n /**\r\n * Check Out File\r\n * @param context\r\n * @param {Number|number} id\r\n * @returns {Promise<{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}>} Record Item Model\r\n */\r\n async checkOutFile(context, id) {\r\n try {\r\n console.log(`${scriptName} checkOutFile Id:`, id);\r\n return await checkOutFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to checkout file. (id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * Release File\r\n * @param context\r\n * @param {Number|number} id\r\n * @returns {Promise<{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}>} Record Item Model\r\n */\r\n async releaseFile(context, id) {\r\n try {\r\n console.log(`${scriptName} releaseFile() Id:`, id);\r\n return await releaseFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to release File. (id: ${id})`);\r\n }\r\n },\r\n\r\n /**\r\n * Release Checked out File\r\n * @param context\r\n * @param {Number|number} id\r\n * @returns {Promise<{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}>} Record Item Model\r\n */\r\n async releaseCheckedOutFile(context, id) {\r\n try {\r\n console.log(`${scriptName} releaseCheckedOutFile() Id:`, id);\r\n return await releaseCheckedOutFile(id);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to release Checked Out File. (id: ${id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Release Wip File for Scanned/Acquired File\r\n * @param context\r\n * @param {Number|number} id\r\n * @returns {Promise<{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}>} Record Item Model\r\n */\r\n async releaseWIPFile(context, id) {\r\n try {\r\n console.log(`${scriptName} releaseWIPFile() Id:`, id);\r\n return await releaseWIPFile(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to release WIP File. (id: ${id})`);\r\n }\r\n },\r\n\r\n /**\r\n * Release Wip File for Empty Record\r\n * @param context\r\n * @param {Number|number} id\r\n * @returns {Promise<{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}>} Record Item Model\r\n */\r\n async releaseWIPRecord(context, id) {\r\n try {\r\n console.log(`${scriptName} releaseWIPRecord() Id:`, id);\r\n return await releaseWIPRecord(id);\r\n } catch (e) {\r\n return await handleError(e, `Unable to release WIP Record. (id: ${id})`);\r\n }\r\n },\r\n\r\n /**\r\n * Get Search Highlights in a document\r\n * @param context\r\n * @param {{id:number, searchTerm:string}} props\r\n * @returns {Promise}>>} SearchHitsModel\r\n */\r\n async getSearchHighlights(context, props) {\r\n const id = props ? props.id : -1;\r\n const searchTerm = props ? props.searchTerm || \"\" : \"\";\r\n\r\n try {\r\n console.log(`${scriptName} getSearchHighlights() Id:`, id);\r\n const result = await getSearchHighlights(id, searchTerm);\r\n context.commit(SET_SEARCH_HIGHLIGHTS, result.data);\r\n return result.data;\r\n } catch (e) {\r\n await handleError(e, `Unable to get Search Highlights by id: ${id}`);\r\n }\r\n },\r\n\r\n /**\r\n * Check in import/scanned file to empty record\r\n * @param context\r\n * @param {{id:number, checkInModel:{Extension: string, Draft: boolean, Comments: string, Enqueue: boolean}}} payload\r\n * @returns {Promise<{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}>} File Model\r\n */\r\n async checkInScannedFileToRecord(context, payload) {\r\n try {\r\n console.log(`${scriptName} checkInScannedFileToRecord() Id:`, payload.id);\r\n return await checkInScannedFileToRecord(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to checkIn Scanned File To Record by id: ${payload?.id ?? -1}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Check in edited file (checked-out file)\r\n * @param context\r\n * @param {{id:number, checkInModel:{Extension: string, Draft: boolean, Comments: string, Enqueue: boolean}}} payload\r\n * @returns {Promise<{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}>} File Model\r\n */\r\n async checkInEditedDocument(context, payload) {\r\n try {\r\n console.log(`${scriptName} checkInEditedDocument() Id:`, payload.id);\r\n return await checkInEditedDocument(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to checkIn Edited Document by id: ${payload?.id ?? -1}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Import/Scan File to Compound Document\r\n * @param context\r\n * @param {{id:number, compoundInsertOption:number, checkInModel:{Extension: string, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} payload\r\n * @returns {Promise<{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}>} Document Model\r\n */\r\n async scanToCompoundDocument(context, payload) {\r\n try {\r\n console.log(`${scriptName} scanToCompoundDocument() Id:`, payload.id);\r\n return await scanToCompoundDocument(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to scan To Compound Document by id: ${payload?.id ?? -1}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Import/Scan to Checked in File\r\n * @param context\r\n * @param {{id:number, checkInModel:{Extension: string, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} payload\r\n * @returns {Promise<{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}>} File Model\r\n */\r\n async scanToCheckedInFile(context, payload) {\r\n try {\r\n console.log(`${scriptName} scanToCheckedInFile() Id:`, payload.id);\r\n return await scanToCheckedInFile(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to scan To CheckedIn File by id: ${payload?.id ?? -1}`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Import Annotation File to a document\r\n * @param context\r\n * @param {{id:number, version:number, pageOption:number, file:File}} payload\r\n * @return {Promise}\r\n */\r\n async importAnnotations(context, payload) {\r\n try {\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, 0);\r\n\r\n return await importAnnotations(\r\n payload.id,\r\n payload.version,\r\n payload.pageOption,\r\n payload.file,\r\n\r\n event => {\r\n const total = event?.total ?? 0;\r\n if (total > 0) {\r\n const progress = Math.round((100 * event.loaded) / total);\r\n context.commit(SET_UPLOAD_FILE_PROGRESS, progress);\r\n }\r\n }\r\n );\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to import Annotation File to a document. (id: ${payload?.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Export Annotations from a document\r\n * @param context\r\n * @param {{id:Number, version:Number,pageOption:number}} payload\r\n * @returns {Promise}\r\n */\r\n async exportAnnotations(context, payload) {\r\n try {\r\n return await exportAnnotations(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to Export Annotations. (id: ${payload.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Get Ocr Text\r\n * @param context\r\n * @param {{id:Number,page:number}} payload\r\n * @returns {Promise}\r\n */\r\n async getOcrText(context, payload) {\r\n try {\r\n return await getOcrText(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to Get Ocr Text. (id: ${payload.id})`\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Save Ocr Text\r\n * @param context\r\n * @param {{id:Number,text:String,page:number}} payload\r\n * @returns {Promise}\r\n */\r\n async saveOcrText(context, payload) {\r\n try {\r\n return await saveOcrText(payload);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n `Unable to Save Ocr Text. (id: ${payload.id})`\r\n );\r\n }\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// shared mutation types\r\nimport {\r\n SET_DOCUMENT,\r\n SET_UPLOAD_FILE_PROGRESS\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// document mutation types\r\nimport { SET_SEARCH_HIGHLIGHTS } from \"@/store/document/mutation-types\";\r\n\r\n// mutation Helper\r\nimport { setUploadFileProgress } from \"@/store/shared/mutations/record/record-mutations\";\r\n\r\nconst mutations = {\r\n /**\r\n * Set current document\r\n * @param state\r\n * @param document\r\n */\r\n [SET_DOCUMENT]: (state, document) => {\r\n state.document = document;\r\n console.log(SET_DOCUMENT, state.document);\r\n },\r\n\r\n /**\r\n * Set current document's search highlights\r\n * @param state\r\n * @param searchHighlights\r\n */\r\n [SET_SEARCH_HIGHLIGHTS]: (state, searchHighlights) => {\r\n state.searchHighlights = searchHighlights;\r\n console.log(SET_SEARCH_HIGHLIGHTS, state.searchHighlights);\r\n },\r\n\r\n /**\r\n * SET UPLOAD FILE PROGRESS\r\n * @param state\r\n * @param {Number|number} progress\r\n */\r\n [SET_UPLOAD_FILE_PROGRESS](state, progress) {\r\n console.log(state, progress);\r\n setUploadFileProgress(state, progress);\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\n\r\nconst state = {\r\n /**\r\n * File Version\r\n * @type {{id:number, name:string, categoryId:number, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, isDeleted:boolean, isDraft:boolean, isComposite:boolean, isLink:boolean, isLocked:boolean, isReadOnly:boolean, recordTypeId:number, recordType:string, stateId:number, state:string, version:number, versionDate:string, versionOwner:string, operations: {name: string, allowed: boolean, valid: boolean}[] }[]}\r\n */\r\n document: null,\r\n searchHighlights: null,\r\n uploadFileProgress: 0\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","// model\r\nimport { moduleNames, findModule } from \"@/model/solution/moduleModel\";\r\nimport { recordOperation } from \"@/model/record/recordModel\";\r\nimport {\r\n isAllowedViewField,\r\n isAllowedModifyField\r\n} from \"@/model/field/fieldModel\";\r\nimport {\r\n featureName,\r\n isAvailableFeature\r\n} from \"@/model/features/featuresModel\";\r\nimport { isAllowedOperation } from \"@/model/category/categoryModel\";\r\nimport { systemOperations } from \"@/model/user/userModel\";\r\n\r\n// services\r\nimport {\r\n isDevelopment,\r\n isPublicAccess,\r\n publicAccess\r\n} from \"@/services/config/configService\";\r\n\r\nconst getters = {\r\n /**\r\n * Get current principal\r\n * @param state\r\n * @return {{actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[], systemOperations: {name: string, allowed: boolean, valid: Boolean}[]}|undefined} returns current principal\r\n */\r\n principal: state => state.user?.principal,\r\n\r\n /**\r\n * Ger Questys' available features for current user\r\n * @param state\r\n * @param getters\r\n * @return {{name: string, total: number, used: number}[]|*[]} returns available features for current user\r\n */\r\n features: (state, getters) => getters.principal?.features ?? [],\r\n\r\n /**\r\n * Get Get current principal's repository\r\n * @param state\r\n * @param getters\r\n * @return {String|string} returns current principal's repository\r\n */\r\n repository: (state, getters) => getters.principal?.repository ?? \"\",\r\n\r\n /**\r\n * Get current Actor id\r\n * @param state\r\n * @param getters\r\n * @return {number} returns Actor id\r\n */\r\n actorId: (state, getters) => getters.principal?.actorId ?? -1,\r\n\r\n /**\r\n * Get Get current principal Actor Name\r\n * @param state\r\n * @param getters\r\n * @return {String|string} returns current principal actor Name\r\n */\r\n actorName: (state, getters) => getters.principal?.actorName ?? \"\",\r\n\r\n /**\r\n * Get current principal's repository Uid\r\n * @param state\r\n * @param getters\r\n * @return {String|string} returns current principal's repository Uid\r\n */\r\n repositoryUid: (state, getters) => getters.principal?.repositoryUid ?? \"\",\r\n\r\n /**\r\n * Is the current principal Administrator\r\n * @param state\r\n * @param getters\r\n * @return {Boolean} returns whether current principal is in Administrator roll\r\n */\r\n isAdministrator: (state, getters) =>\r\n getters.principal?.isAdministrator ?? false,\r\n\r\n /**\r\n * Get User's available modules by Questys' Licensed features\r\n * @return {{name: string, icon: string, title: string}[]}\r\n */\r\n modules: state => state.modules || [],\r\n\r\n /**\r\n * Enable Category Module\r\n * @param state\r\n * @return {boolean}\r\n */\r\n enableCategoryModule: state => state.enableCategoryModule,\r\n\r\n /**\r\n * Enable earch Module\r\n * @param state\r\n * @return {boolean}\r\n */\r\n enableSearchModule: state => state.enableSearchModule,\r\n\r\n /**\r\n * enable Workflow Task Module\r\n * @param state\r\n * @return {boolean}\r\n */\r\n enableTasksModule: state => state.enableTasksModule,\r\n\r\n /**\r\n * enable Workflow Project Module\r\n * @param state\r\n * @return {boolean}\r\n */\r\n enableProjectsModule: state => state.enableProjectsModule,\r\n\r\n /**\r\n * enable Agenda Module\r\n * @param state\r\n * @return {boolean}\r\n */\r\n enableAgendaModule: state => state.enableAgendaModule,\r\n\r\n /**\r\n * enable Web Scan\r\n * @param state\r\n * @return {boolean} true if Web Scan is enabled\r\n */\r\n enableWebScan: state => state.enableWebScan ?? false,\r\n\r\n /**\r\n * is a licensed Module\r\n * @param state\r\n * @param getters\r\n * @return {function(*): boolean|boolean}\r\n */\r\n isLicensedModule: (state, getters) => name =>\r\n (getters.modules ?? []).filter(\r\n el => el.name.toLowerCase() === name?.toLowerCase()\r\n ).length > 0,\r\n\r\n /**\r\n * find feature by feature name\r\n * @param state\r\n * @param getters\r\n * @return {function(string): ({name: string, used: number, total: number})} returns found feature\r\n */\r\n findFeature: (state, getters) => name =>\r\n (getters.features ?? []).find(\r\n f => f?.name?.toLowerCase() === name?.toLowerCase()\r\n ),\r\n\r\n /**\r\n * is a Supported Module\r\n * @param state\r\n * @param getters\r\n * @return {(function(string): (boolean))}\r\n */\r\n isSupportedModule: (state, getters) => name => {\r\n // validate module existence\r\n const module = findModule(name);\r\n if (!module) {\r\n console.warn(`Not found Application Module: '${name}'.`);\r\n return false;\r\n }\r\n\r\n /**\r\n * Handle Public Access\r\n */\r\n if (isPublicAccess) {\r\n if (!(module?.public ?? false)) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * In development - all modules are supported\r\n */\r\n if (isDevelopment) {\r\n return (\r\n module.name === moduleNames.Search ||\r\n module.name === moduleNames.Folder ||\r\n module.name === moduleNames.Category ||\r\n module.name === moduleNames.Tasks ||\r\n module.name === moduleNames.Projects ||\r\n module.name === moduleNames.Agenda\r\n );\r\n }\r\n\r\n // get module's feature\r\n const feature = getters.findFeature(module.feature);\r\n if (!feature) {\r\n console.warn(`Feature ${name} not found.`);\r\n return false;\r\n }\r\n\r\n // determines whether the provided feature is Available\r\n const available = isAvailableFeature(feature);\r\n if (!available) {\r\n console.warn(`Feature ${name} is not available.`);\r\n }\r\n\r\n return available;\r\n },\r\n\r\n /**\r\n * determines whether an Application Module is available (licensed, supported, enabled)\r\n * @param state\r\n * @param getters\r\n * @return {function(string): boolean}\r\n */\r\n isAvailableApplicationModule: (state, getters) => name => {\r\n return (\r\n !!getters.isLicensedModule(name) &&\r\n !!getters.isSupportedModule(name) &&\r\n !!getters.isEnabledModule(name)\r\n );\r\n },\r\n\r\n /**\r\n * is Enabled Application Module\r\n * @param state\r\n * @param getters\r\n * @return {function(string): boolean} return true if Application Module is Enabled\r\n */\r\n isEnabledModule: (state, getters) => name => {\r\n switch (name) {\r\n case moduleNames.Category: {\r\n return isPublicAccess\r\n ? publicAccess.modules.visibleCategory\r\n : !!state.enableCategoryModule;\r\n }\r\n case moduleNames.Search: {\r\n return !!state.enableSearchModule;\r\n }\r\n case moduleNames.Tasks: {\r\n return !!state.enableTasksModule;\r\n }\r\n case moduleNames.Projects: {\r\n return (\r\n !!getters.isAllowedSystemOperation(\r\n systemOperations.accessWFProjects\r\n ) && !!state.enableProjectsModule\r\n );\r\n }\r\n case moduleNames.Agenda: {\r\n return isPublicAccess\r\n ? publicAccess.modules.visibleMeetings\r\n : !!state.enableAgendaModule;\r\n }\r\n case moduleNames.Folder: {\r\n return isPublicAccess ? publicAccess.modules.visibleFolder : true;\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * is a Supported Feature\r\n * @param state\r\n * @param getters\r\n * @return {(function(*): (boolean|boolean))|*}\r\n */\r\n isSupportedFeature: (state, getters) => name => {\r\n let feature = getters.findFeature(name);\r\n\r\n if (!feature) {\r\n //\r\n // WebScan Feature has been added by Tyler using Software Potential web page\r\n //\r\n if (name === featureName.WebScan) {\r\n if (isDevelopment) {\r\n feature = {\r\n name: name,\r\n used: 1,\r\n total: 1\r\n };\r\n } else {\r\n console.warn(`isSupportedFeature() Feature ${name} not found.`);\r\n console.warn(`isSupportedFeature() features:`, getters.features);\r\n return false;\r\n }\r\n } else {\r\n console.warn(`isSupportedFeature() Feature ${name} not found.`);\r\n console.warn(`isSupportedFeature() features:`, getters.features);\r\n return false;\r\n }\r\n }\r\n\r\n return isAvailableFeature(feature);\r\n },\r\n\r\n /**\r\n * Get Questys' repositories\r\n * @param state\r\n * @return {{String}[]|*[]}\r\n */\r\n repositories: state => state.repositories || [],\r\n\r\n /**\r\n * Get user's allowed fields\r\n * @param state\r\n * @return {{id: number, name: string, fieldDataType: number, fieldDataTypeName: string, flags: number, immutable: boolean, unselectable: boolean}[]|*[]}\r\n */\r\n fields: state => state.fields || [],\r\n\r\n /**\r\n * form Fields (containing field definition)\r\n * @param state\r\n * @return {{id: number, name: string, fieldDataType: number, fieldDataTypeName: string, flags: number, immutable: boolean, unselectable: boolean, isPersistentField: boolean, isSystemCategoryType: boolean, isSystemField: boolean}[]|*[]}\r\n */\r\n formFields: state => state.formFields || [],\r\n\r\n /**\r\n * find Form Field\r\n * @param state\r\n * @param getters\r\n * @return {function(*): {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}[], lookup: {databaseLookup:boolean, enforce:boolean, items: string[]}}} Form Field\r\n */\r\n findFormField: (state, getters) => id =>\r\n getters.formFields?.find(el => (el?.id ?? -1) === id),\r\n\r\n /**\r\n * Get user's allowed categories\r\n * @param state\r\n * @return {{id: number, name: string, formId: number, flags: number, categoryType: number, categoryTypeName: string}[]|*[]} returns user's allowed categories\r\n */\r\n categories: state => state.categories || [],\r\n\r\n /**\r\n * get a list of record creatable categories for current user\r\n * @param state\r\n * @param getters\r\n * @return {{id: number, name: string, formId: number, flags: number, categoryType: number, categoryTypeName: string}[]|*[]}\r\n */\r\n createRecordCategories: (state, getters) =>\r\n (getters.categories || [])?.filter(category => {\r\n return isAllowedOperation(category, recordOperation.Create);\r\n }) ?? [],\r\n\r\n /**\r\n * create Record Categories By Category Type\r\n * @param state\r\n * @param getters\r\n * @return {function(*)}\r\n */\r\n createRecordCategoriesByCategoryType: (state, getters) => categoryTypeId => {\r\n return (\r\n (getters.createRecordCategories ?? []).filter(\r\n c => c.categoryType === categoryTypeId\r\n ) ?? []\r\n );\r\n },\r\n\r\n /**\r\n * get a list of record-updatable categories for current user\r\n * @param state\r\n * @param getters\r\n * @return {{id: number, name: string, formId: number, flags: number, categoryType: number, categoryTypeName: string}[]|*[]}\r\n */\r\n updateRecordCategories: (state, getters) =>\r\n (getters.categories || [])?.filter(category => {\r\n return isAllowedOperation(category, recordOperation.Update);\r\n }) ?? [],\r\n\r\n /**\r\n * update Record Categories By Category Type\r\n * @param state\r\n * @param getters\r\n * @return {function(*)}\r\n */\r\n updateRecordCategoriesByCategoryType: (state, getters) => categoryTypeId => {\r\n return (\r\n (getters.updateRecordCategories ?? []).filter(\r\n c => c.categoryType === categoryTypeId\r\n ) ?? []\r\n );\r\n },\r\n\r\n /**\r\n * find Record Category by Category id\r\n * @param state\r\n * @param getters\r\n * @return {function(number): T | {id: number, name: string, formId: number, flags: number, categoryType: number, categoryTypeName: string}}\r\n */\r\n findCategory: (state, getters) => id =>\r\n (getters.categories || [])?.find(c => c?.id === (id ?? -1)),\r\n\r\n /**\r\n * Find Field by Field id\r\n * @param state\r\n * @param getters\r\n * @return {function(number): {id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean, unselectable:boolean, operations: {name:string, allowed:boolean, valid:boolean}[]}} returns field\r\n */\r\n findField: (state, getters) => id =>\r\n getters.fields?.find(el => el?.id === id),\r\n\r\n /**\r\n * Determines whether a Field is a Persistent field\r\n * @param state\r\n * @param getters\r\n * @return {function(number) : boolean} returns a function with one parameter id, which represents field id and returns true if field is Persistent\r\n */\r\n isPersistentField: (state, getters) => id =>\r\n getters.findField(id)?.isPersistentField ?? false,\r\n\r\n /**\r\n * Determines whether a Field is Questys' System field\r\n * @param state\r\n * @param getters\r\n * @return {function(number) : T | boolean} returns a function with one parameter id, which represents field id\r\n */\r\n isSystemField: (state, getters) => id =>\r\n getters.findField(id)?.isSystemField ?? false,\r\n\r\n /**\r\n * is Allowed View Field\r\n * @param state\r\n * @param getters\r\n * @return {function(number): boolean|boolean} returns is Allowed View Field\r\n */\r\n isAllowedViewField: (state, getters) => id => {\r\n const field = getters.findField(id);\r\n return field ? isAllowedViewField(field) : false;\r\n },\r\n\r\n /**\r\n * is Allowed Modify Field\r\n * @param state\r\n * @param getters\r\n * @return {function(number): boolean|boolean} returns is Allowed Modify Field\r\n */\r\n isAllowedModifyField: (state, getters) => id => {\r\n const field = getters.findField(id);\r\n return field ? isAllowedModifyField(field) : false;\r\n },\r\n\r\n /**\r\n * is Allowed System Operation\r\n * @param state\r\n * @param getters\r\n * @return {function(*)}\r\n */\r\n isAllowedSystemOperation: (state, getters) => operation => {\r\n return (\r\n getters?.principal?.systemOperations?.find(so => so?.name === operation)\r\n ?.allowed ?? false\r\n );\r\n },\r\n\r\n /**\r\n * Get User's Fields count\r\n * @param state\r\n * @param getters\r\n * @return {Number|number} returns User's Fields count\r\n */\r\n countFields: (state, getters) => getters.fields?.length ?? 0,\r\n\r\n /**\r\n * Get User's Categories count\r\n * @param state\r\n * @param getters\r\n * @return {number|number} returns User's Categories count\r\n */\r\n countCategories: (state, getters) => getters.categories?.length ?? 0,\r\n\r\n /**\r\n * determines whether the current user is logged in\r\n * @param state\r\n * @param getters\r\n * @return {boolean} returns whether current user is logged in\r\n */\r\n isUserLoggedIn: (state, getters) => (getters.principal?.actorId ?? -1) >= 0\r\n};\r\n\r\nexport default getters;\r\n","import { getAxios } from \"@/services/api/apiCommon\";\r\n\r\n/**\r\n * auth web api controller name\r\n * @type {string}\r\n */\r\nconst auth = \"auth\";\r\n\r\n/**\r\n * Login to Questys repository\r\n * @param {{userName:String, password:String, repository:String}} credentials\r\n * @returns {Promise<{token:string, validFrom:string, validTo:string, principal:{actorId:number, actorName:string, repositoryUid:string, repository:string, isAdministrator:boolean, features:{name:string, used:number, total:number}[], systemOperations:{name:string, allowed:boolean, valid:boolean}[]}, features:{name:string, used:number, total:number}[]}>}\r\n */\r\nconst login = credentials => {\r\n const url = `/${auth}/login`;\r\n\r\n const data = new FormData();\r\n data.append(\"userName\", credentials?.userName);\r\n data.append(\"password\", credentials?.password);\r\n data.append(\"repository\", credentials?.repository);\r\n\r\n return getAxios().post(url, data);\r\n};\r\n\r\n/**\r\n * login With Token\r\n * @param {string} token\r\n * @return {Promise<{token:string, validFrom:string, validTo:string, principal:{actorId:number, actorName:string, repositoryUid:string, repository:string, isAdministrator:boolean, features:{name:string, used:number, total:number}[], systemOperations:{name:string, allowed:boolean, valid:boolean}[]}, features:{name:string, used:number, total:number}[]}>}\r\n */\r\nconst loginWithToken = token => {\r\n const url = `/${auth}/loginWithToken`;\r\n\r\n const data = new FormData();\r\n data.append(\"token\", token);\r\n\r\n return getAxios().post(url, data);\r\n};\r\n\r\n/**\r\n * Logout current user\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst logout = () => {\r\n return getAxios().post(`/${auth}/logout`);\r\n};\r\n\r\n/**\r\n * Update Authorization (Bearer authentication/token authentication)\r\n * @param {string} token\r\n */\r\nconst updateAuthorization = token => {\r\n try {\r\n //\r\n // Set the Authorization Header using:\r\n // _axiosInstance.interceptors.request instead of:\r\n //\r\n getAxios().defaults.headers.common[\"Authorization\"] = `Bearer ${token}`;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\nexport { login, loginWithToken, logout, updateAuthorization };\r\n","// services\r\nimport {\r\n getCategories,\r\n getCategoryTypes,\r\n getField,\r\n getFields,\r\n getRepositories,\r\n getUserRepositoryName as apiGetUserRepositoryName\r\n} from \"@/services/api/apiContent\";\r\nimport {\r\n login,\r\n loginWithToken,\r\n logout,\r\n updateAuthorization\r\n} from \"@/services/api/apiAuth\";\r\nimport {\r\n getStoredUser,\r\n getEnableCategoryModule,\r\n getEnableSearchModule,\r\n getEnableTasksModule,\r\n getEnableProjectsModule,\r\n getEnableAgendaModule\r\n} from \"@/services/user/userService\";\r\nimport { handleError } from \"@/services/error/errorService\";\r\n\r\n// model\r\nimport { appModules, moduleNames } from \"@/model/solution/moduleModel\";\r\nimport { systemOperations } from \"@/model/user/userModel\";\r\n\r\n// utils\r\nimport { isEmpty, isStringValueTrue } from \"@/utils\";\r\n\r\n// mutation-types\r\nimport {\r\n CLEAR_USER_DATA,\r\n SET_CATEGORIES,\r\n SET_CATEGORY_TYPES,\r\n SET_CHANGE_REPOSITORY,\r\n SET_ENABLE_MODULE_AGENDA,\r\n SET_ENABLE_MODULE_CATEGORY,\r\n SET_ENABLE_MODULE_PROJECTS,\r\n SET_ENABLE_MODULE_SEARCH,\r\n SET_ENABLE_MODULE_TASKS,\r\n SET_FIELDS,\r\n SET_FORM_FIELD,\r\n SET_REPOSITORIES,\r\n SET_USER_DATA,\r\n SET_USER_MODULES\r\n} from \"./mutation-types\";\r\n\r\n/**\r\n * enabled Feature\r\n * @param {Boolean|boolean} supported is supported Feature\r\n * @param {String|string} settingValue local setting Value\r\n * @return {boolean|boolean}\r\n */\r\nconst enableFeature = (supported, settingValue) =>\r\n supported ? isStringValueTrue(settingValue) : false;\r\n\r\n/**\r\n * Commit User\r\n * @param context\r\n * @param {{principal: ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|(function(*): ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|undefined))|*), tokenValidTo: (*|string), tokenValidFrom: (*|string), name: (string|string), token: (CancelToken|string|*|string)}} user\r\n */\r\nconst commitUser = (context, user) => {\r\n context.commit(SET_USER_DATA, user);\r\n\r\n updateAuthorization(user ? user.token || \"\" : \"\");\r\n\r\n //\r\n // Set available user's modules\r\n //\r\n const modules = appModules.filter(module =>\r\n context.getters[\"isSupportedModule\"](module.name)\r\n );\r\n\r\n context.commit(SET_USER_MODULES, modules);\r\n\r\n appModules.forEach(module => {\r\n const supported = context.getters[\"isSupportedModule\"](module.name);\r\n\r\n switch (module.name) {\r\n case moduleNames.Category: {\r\n const module = getEnableCategoryModule();\r\n if (!isEmpty(module)) {\r\n context.commit(\r\n SET_ENABLE_MODULE_CATEGORY,\r\n enableFeature(supported, module)\r\n );\r\n } else {\r\n if (!supported) {\r\n context.commit(SET_ENABLE_MODULE_CATEGORY, false);\r\n }\r\n }\r\n break;\r\n }\r\n case moduleNames.Search: {\r\n const module = getEnableSearchModule();\r\n if (!isEmpty(module)) {\r\n context.commit(\r\n SET_ENABLE_MODULE_SEARCH,\r\n enableFeature(supported, module)\r\n );\r\n } else {\r\n if (!supported) {\r\n context.commit(SET_ENABLE_MODULE_SEARCH, false);\r\n }\r\n }\r\n break;\r\n }\r\n case moduleNames.Tasks: {\r\n const enableTasks = getEnableTasksModule();\r\n if (!isEmpty(enableTasks)) {\r\n context.commit(\r\n SET_ENABLE_MODULE_TASKS,\r\n enableFeature(supported, enableTasks)\r\n );\r\n } else {\r\n if (!supported) {\r\n context.commit(SET_ENABLE_MODULE_TASKS, false);\r\n }\r\n }\r\n break;\r\n }\r\n case moduleNames.Projects: {\r\n const allowed = context.getters[\"isAllowedSystemOperation\"](\r\n systemOperations.accessWFProjects\r\n );\r\n\r\n if (allowed) {\r\n const enableProjects = getEnableProjectsModule();\r\n if (!isEmpty(enableProjects)) {\r\n context.commit(\r\n SET_ENABLE_MODULE_PROJECTS,\r\n enableFeature(supported, enableProjects)\r\n );\r\n } else {\r\n if (!supported) {\r\n context.commit(SET_ENABLE_MODULE_PROJECTS, false);\r\n }\r\n }\r\n } else {\r\n context.commit(SET_ENABLE_MODULE_PROJECTS, false);\r\n }\r\n break;\r\n }\r\n case moduleNames.Agenda: {\r\n const enableAgendaModule = getEnableAgendaModule();\r\n if (!isEmpty(enableAgendaModule)) {\r\n context.commit(\r\n SET_ENABLE_MODULE_AGENDA,\r\n enableFeature(supported, enableAgendaModule)\r\n );\r\n } else {\r\n if (!supported) {\r\n context.commit(SET_ENABLE_MODULE_AGENDA, false);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Create User\r\n * @param data\r\n * @return {{principal: ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|(function(*): ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|undefined))|*), tokenValidTo: (*|string), tokenValidFrom: (*|string), name: (string|string), token: (CancelToken|string|*|string)}}\r\n */\r\nconst createUser = data => {\r\n return {\r\n name: data?.principal?.actorName ?? \"\",\r\n token: data?.token ?? \"\",\r\n tokenValidFrom: data?.validFrom ?? \"\",\r\n tokenValidTo: data?.validTo ?? \"\",\r\n principal: data?.principal\r\n };\r\n};\r\n\r\n/**\r\n * set User's Category And Fields\r\n * @param context\r\n * @return {Promise}\r\n */\r\nasync function setUserCategoriesAndFields(context) {\r\n try {\r\n // set Category Types\r\n let response = await getCategoryTypes();\r\n context.commit(SET_CATEGORY_TYPES, response.data);\r\n\r\n // set current user's categories\r\n response = await getCategories();\r\n context.commit(SET_CATEGORIES, response.data);\r\n\r\n // set current user's fields\r\n response = await getFields();\r\n context.commit(SET_FIELDS, response.data);\r\n } catch (e) {\r\n return await handleError(e, `Unable to set User's Categories And Fields.`);\r\n }\r\n}\r\n\r\n/**\r\n * format Login Error\r\n * @param e\r\n * @param {String|string} message\r\n * @return {string|string}\r\n */\r\nfunction formatLoginError(e, message) {\r\n const data = e?.response?.data;\r\n\r\n return data ? `${message}. ${data?.title}` : message ?? \"\";\r\n}\r\n\r\nconst actions = {\r\n /**\r\n * Set Repositories\r\n * @param commit\r\n * @returns {Promise}\r\n */\r\n async setRepositories({ commit }) {\r\n return getRepositories()\r\n .then(response => {\r\n // Checking response status\r\n if (response.status !== 200) {\r\n return Promise.reject(\r\n response.statusText\r\n ? new Error(\r\n `Status Code: ${response.status}. ${response.statusText}.`\r\n )\r\n : new Error(`Status Code: ${response.status}`)\r\n );\r\n }\r\n\r\n /**\r\n * repositories\r\n * @type {String []}\r\n */\r\n const repositories = response.data || [];\r\n commit(SET_REPOSITORIES, repositories);\r\n\r\n return Promise.resolve(repositories);\r\n })\r\n .catch(error => handleError(error, `Unable to set Repositories`));\r\n },\r\n\r\n async getUserRepositoryName() {\r\n return apiGetUserRepositoryName()\r\n .then(response => {\r\n return Promise.resolve(response?.data);\r\n })\r\n .catch(e => {\r\n console.warn(`Couldn't get current User's Repository`, e?.toString());\r\n // handleError(error, `Unable to get User's Repository Name);\r\n return Promise.resolve(undefined);\r\n });\r\n },\r\n\r\n /**\r\n * Set Category Types\r\n * @param commit\r\n * @returns {Promise<{id: number, name: string}[]>}\r\n */\r\n async setCategoryTypes({ commit }) {\r\n return getCategoryTypes()\r\n .then(response => {\r\n const types = response.data;\r\n commit(SET_CATEGORY_TYPES, types);\r\n return Promise.resolve(types);\r\n })\r\n .catch(error => handleError(error, `Unable to set Category Types`));\r\n },\r\n\r\n /**\r\n * Login to Questys repository\r\n * @param context\r\n * @param {{ userName:string, password:string, repository:string }} payload\r\n * @return {Promise<{principal: ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|(function(*): ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|undefined))|*), tokenValidTo: (*|string), tokenValidFrom: (*|string), name: string, token: (CancelToken|string|*)}>}\r\n */\r\n async login(context, payload) {\r\n try {\r\n const response = await login(payload);\r\n const user = createUser(response.data);\r\n\r\n commitUser(context, user);\r\n\r\n await setUserCategoriesAndFields(context);\r\n\r\n return Promise.resolve(user);\r\n } catch (e) {\r\n return await handleError(e, formatLoginError(e, `Unable to Login user`));\r\n }\r\n },\r\n\r\n /**\r\n * Login With Token\r\n * @param context\r\n * @param {string} token\r\n * @return {Promise<{principal: ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|(function(*): ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|undefined))|*), tokenValidTo: (*|string), tokenValidFrom: (*|string), name: string, token: (CancelToken|string|*)}>}\r\n */\r\n async loginWithToken(context, token) {\r\n try {\r\n const response = await loginWithToken(token);\r\n const user = response.data;\r\n\r\n commitUser(context, createUser(user));\r\n\r\n await setUserCategoriesAndFields(context);\r\n\r\n return Promise.resolve(user);\r\n } catch (e) {\r\n return await handleError(\r\n e,\r\n formatLoginError(e, `Couldn't Login by user's token`)\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Logout\r\n * @param context\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n async logout(context) {\r\n return logout()\r\n .then(response => {\r\n updateAuthorization(\"\");\r\n context.commit(CLEAR_USER_DATA);\r\n return Promise.resolve(response?.data);\r\n })\r\n .catch(error => {\r\n return handleError(error, \"Couldn't logout\");\r\n });\r\n },\r\n\r\n changeRepository(context) {\r\n context.commit(SET_CHANGE_REPOSITORY, true);\r\n },\r\n\r\n cancelChangeRepository(context) {\r\n context.commit(SET_CHANGE_REPOSITORY, false);\r\n },\r\n\r\n /**\r\n * Auto Login\r\n * @param context\r\n * @return {{principal: ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|(function(*): ({actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}|undefined))|*), tokenValidTo: (*|string), tokenValidFrom: (*|string), name: (string|string), token: (CancelToken|string|*|string)} | undefined}\r\n */\r\n async autoLogin(context) {\r\n const storedUser = getStoredUser();\r\n\r\n if (storedUser?.token) {\r\n return await context.dispatch(\"loginWithToken\", storedUser?.token);\r\n }\r\n\r\n throw \"Not found stored user\";\r\n },\r\n\r\n /**\r\n * Set User's permitted fields\r\n * @param commit\r\n * @returns {Promise<[{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean}]>}\r\n */\r\n async setFields({ commit }) {\r\n return getFields()\r\n .then(response => {\r\n const data = response.data;\r\n\r\n commit(SET_FIELDS, data);\r\n\r\n return Promise.resolve(data);\r\n })\r\n .catch(error =>\r\n handleError(error, `Unable to set User's permitted fields.`)\r\n );\r\n },\r\n\r\n async setCategories({ commit }) {\r\n return getCategories()\r\n .then(response => {\r\n const data = response.data;\r\n\r\n commit(SET_CATEGORIES, data);\r\n\r\n return Promise.resolve(data);\r\n })\r\n .catch(error =>\r\n handleError(error, `Unable to set User's permitted categories.`)\r\n );\r\n },\r\n\r\n async setFormField(context, id) {\r\n return getField(id)\r\n .then(response => {\r\n const field = response.data;\r\n\r\n context.commit(SET_FORM_FIELD, field);\r\n\r\n return Promise.resolve(field);\r\n })\r\n .catch(e =>\r\n handleError(e, `Unable to set user's permitted Form Field by id: ${id}`)\r\n );\r\n }\r\n};\r\n\r\nexport default actions;\r\n","// services\r\nimport {\r\n storeUser,\r\n removeStoredUser,\r\n storeEnableCategoryModule,\r\n storeEnableTasksModule,\r\n storeEnableProjectsModule,\r\n storeEnableAgendaModule,\r\n createStoreUser,\r\n storeBackupUser,\r\n removeStoredBackupUser,\r\n getStoredBackupUser,\r\n storeEnableTextEditor,\r\n storeEnableAnnotationEditor,\r\n storeEnableSearchModule\r\n} from \"@/services/user/userService\";\r\n\r\n// mutation-types\r\nimport {\r\n SET_USER_MODULES,\r\n SET_USER_DATA,\r\n CLEAR_USER_DATA,\r\n SET_REPOSITORIES,\r\n SET_CHANGE_REPOSITORY,\r\n SET_CATEGORY_TYPES,\r\n SET_FIELDS,\r\n SET_CATEGORIES,\r\n SET_ENABLE_MODULE_CATEGORY,\r\n SET_ENABLE_MODULE_SEARCH,\r\n SET_ENABLE_MODULE_TASKS,\r\n SET_ENABLE_MODULE_PROJECTS,\r\n SET_ENABLE_MODULE_AGENDA,\r\n SET_FORM_FIELD,\r\n SET_TEXT_EDITOR,\r\n SET_ANNOTATION_EDITOR\r\n} from \"./mutation-types\";\r\n\r\n/**\r\n * Save User To Local lStore\r\n * @param {{name: string, token: string, tokenValidFrom: string, tokenValidTo: string, principal: {actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[]}}} user\r\n */\r\nconst saveUserToLocalStore = user => {\r\n try {\r\n const principal = user?.principal;\r\n\r\n const saveUser = createStoreUser(\r\n principal?.actorName ?? \"\",\r\n principal?.repository ?? \"\",\r\n user?.token ?? \"\",\r\n user?.tokenValidFrom ?? \"\",\r\n user?.tokenValidTo ?? \"\"\r\n );\r\n\r\n storeUser(saveUser);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\nconst mutations = {\r\n /**\r\n * Set current user\r\n * @param state\r\n * @param user\r\n */\r\n [SET_USER_DATA]: (state, user) => {\r\n state.user = user;\r\n console.log(`${SET_USER_DATA} principal:`, state?.user?.principal);\r\n saveUserToLocalStore(state.user);\r\n removeStoredBackupUser();\r\n },\r\n\r\n /**\r\n * Clear current Questys' user\r\n * @param state\r\n */\r\n [CLEAR_USER_DATA]: state => {\r\n // 1. manually removing the user from local storage\r\n removeStoredUser();\r\n removeStoredBackupUser();\r\n\r\n // 2. store User's partial data to local storage\r\n const user = createStoreUser(\r\n state?.user?.principal?.actorName ?? \"\",\r\n state?.user?.principal?.repository ?? \"\"\r\n );\r\n\r\n storeUser(user);\r\n\r\n // Clearing out the Vuex State and axios header & reloads the current URL\r\n location.reload();\r\n },\r\n\r\n [SET_CHANGE_REPOSITORY]: (state, change) => {\r\n console.log(SET_CHANGE_REPOSITORY, change);\r\n\r\n if (change) {\r\n const backupUser = createStoreUser(\r\n state?.user?.principal?.actorName ?? \"\",\r\n state?.user?.principal?.repository ?? \"\",\r\n state?.user?.token ?? \"\",\r\n state?.user?.tokenValidFrom ?? \"\",\r\n state?.user?.tokenValidTo ?? \"\"\r\n );\r\n\r\n storeBackupUser(backupUser);\r\n removeStoredUser();\r\n\r\n const user = createStoreUser(\r\n state?.user?.principal?.actorName ?? \"\",\r\n state?.user?.principal?.repository ?? \"\"\r\n );\r\n\r\n storeUser(user);\r\n\r\n // Clearing out the Vuex State and axios header & reloads the current URL\r\n location.reload();\r\n } else {\r\n const user = getStoredBackupUser();\r\n storeUser(user);\r\n removeStoredBackupUser();\r\n }\r\n },\r\n\r\n /**\r\n * Set current Questys repositories\r\n * @param state\r\n * @param @type [{String}] repositories\r\n */\r\n [SET_REPOSITORIES]: (state, repositories) => {\r\n state.repositories = repositories || [];\r\n },\r\n\r\n [SET_CATEGORY_TYPES]: (state, payload) => {\r\n state.categoryTypes = payload;\r\n console.log(SET_CATEGORY_TYPES, state.categoryTypes);\r\n },\r\n\r\n [SET_FIELDS]: (state, payload) => {\r\n state.fields = payload;\r\n console.log(SET_FIELDS, state.fields);\r\n },\r\n\r\n [SET_FORM_FIELD]: (state, payload) => {\r\n let formField = state?.formFields?.find(\r\n ff => (ff?.id ?? -1) === (payload?.id ?? -1)\r\n );\r\n\r\n if (formField) {\r\n const index = state.formFields.indexOf(formField);\r\n if (index >= 0) {\r\n state.formFields.splice(index, 1, payload);\r\n }\r\n } else {\r\n if (!state.formFields) {\r\n state.formFields = [];\r\n }\r\n state.formFields.push(payload);\r\n }\r\n\r\n // console.log(`SET_FORM_FIELD state.formFields:`, state.formFields);\r\n\r\n formField = state.formFields?.find(\r\n ff => (ff?.id ?? -1) === (payload?.id ?? -1)\r\n );\r\n console.log(SET_FORM_FIELD, formField);\r\n },\r\n\r\n [SET_CATEGORIES]: (state, payload) => {\r\n state.categories = payload;\r\n console.log(SET_CATEGORIES, state.categories);\r\n },\r\n\r\n [SET_USER_MODULES]: (state, payload) => {\r\n state.modules = payload || [];\r\n console.log(SET_USER_MODULES, state.modules);\r\n },\r\n\r\n [SET_ENABLE_MODULE_CATEGORY]: (state, payload) => {\r\n state.enableCategoryModule = payload || false;\r\n storeEnableCategoryModule(state.enableCategoryModule);\r\n },\r\n\r\n [SET_ENABLE_MODULE_SEARCH]: (state, payload) => {\r\n state.enableSearchModule = payload || false;\r\n storeEnableSearchModule(state.enableSearchModule);\r\n },\r\n\r\n [SET_ENABLE_MODULE_TASKS]: (state, payload) => {\r\n state.enableTasksModule = payload || false;\r\n storeEnableTasksModule(state.enableTasksModule);\r\n },\r\n\r\n [SET_ENABLE_MODULE_PROJECTS]: (state, payload) => {\r\n state.enableProjectsModule = payload || false;\r\n storeEnableProjectsModule(state.enableProjectsModule);\r\n },\r\n\r\n [SET_ENABLE_MODULE_AGENDA]: (state, payload) => {\r\n state.enableAgendaModule = payload || false;\r\n storeEnableAgendaModule(state.enableAgendaModule);\r\n },\r\n\r\n [SET_TEXT_EDITOR]: (state, payload) => {\r\n state.enableTextEditor = payload || false;\r\n console.log(SET_TEXT_EDITOR, state.enableTextEditor);\r\n storeEnableTextEditor(state.enableTextEditor);\r\n },\r\n\r\n [SET_ANNOTATION_EDITOR]: (state, payload) => {\r\n state.enableAnnotationEditor = payload || false;\r\n console.log(SET_ANNOTATION_EDITOR, state.enableAnnotationEditor);\r\n storeEnableAnnotationEditor(state.enableAnnotationEditor);\r\n }\r\n};\r\n\r\nexport default mutations;\r\n","import getters from \"./getters\";\r\nimport actions from \"./actions\";\r\nimport mutations from \"./mutations\";\r\n\r\n// models\r\nimport {\r\n moduleNames as moduleName,\r\n appModules\r\n} from \"@/model/solution/moduleModel\";\r\nimport { supportedScanning } from \"@/model/acquire/scan/scanningModel\";\r\n\r\nconst state = {\r\n /**\r\n * Current Questys user\r\n * @type {{name: string, token: string, tokenValidFrom: string, tokenValidTo: string, principal: {actorId: number, actorName: string, isAdministrator: boolean, repository: string, repositoryUid: string, features: {name: string, total: number, used: number}[], systemOperations: {name: string, allowed: boolean, valid: Boolean}[]}}}\r\n */\r\n user: undefined,\r\n\r\n /**\r\n * Questys repositories\r\n * @type [{String}]\r\n */\r\n repositories: [],\r\n\r\n /**\r\n * Questys Category Types\r\n * @type {{id:number, name:string}}[]\r\n */\r\n categoryTypes: [],\r\n\r\n /**\r\n * User's permitted fields\r\n * @type {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean}}[]\r\n */\r\n fields: [],\r\n\r\n /**\r\n * Record Categories\r\n * @type {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string, operations: {name:string, allowed:boolean, valid:boolean}[]}[]}\r\n */\r\n categories: [],\r\n\r\n /**\r\n * User's permitted form fields (with field definition)\r\n * @type {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean}}[]\r\n */\r\n formFields: [],\r\n\r\n /**\r\n * User's available modules\r\n * @type {{name: string, icon: string, title: string}[]}\r\n */\r\n modules: appModules.filter(\r\n app =>\r\n app.name === moduleName.Folder ||\r\n app.name === moduleName.Category ||\r\n app.name === moduleName.Agenda\r\n ),\r\n\r\n /**\r\n * Enable Category Module\r\n */\r\n enableCategoryModule: true,\r\n\r\n /**\r\n * Enable Search Module\r\n */\r\n enableSearchModule: true,\r\n\r\n /**\r\n * Enable Workflow Task Module\r\n */\r\n enableTasksModule: true,\r\n\r\n /**\r\n * Enable Workflow Project Module\r\n */\r\n enableProjectsModule: true,\r\n\r\n /**\r\n * Enable Workflow Project Module\r\n */\r\n enableAgendaModule: true,\r\n\r\n /**\r\n * Enable enableWebScan\r\n * @type boolean\r\n */\r\n enableWebScan: supportedScanning(),\r\n\r\n /**\r\n * Enable TextTab\r\n */\r\n enableTextEditor: false,\r\n\r\n /**\r\n * Enable AnnotationTab\r\n */\r\n enableAnnotationEditor: false\r\n};\r\n\r\nexport default {\r\n actions,\r\n mutations,\r\n getters,\r\n state,\r\n namespaced: true\r\n};\r\n","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\n\r\n// modules\r\nimport solution from \"./solution/index\";\r\nimport category from \"./category/index\";\r\nimport search from \"./search/index\";\r\nimport folder from \"./folder/index\";\r\nimport inbox from \"./inbox/index\";\r\nimport project from \"./project/index\";\r\nimport agenda from \"./agenda/index\";\r\nimport document from \"./document/index\";\r\nimport user from \"./user/index\";\r\n\r\nVue.use(Vuex);\r\n\r\nexport default new Vuex.Store({\r\n modules: {\r\n solution,\r\n user,\r\n search,\r\n category,\r\n folder,\r\n inbox,\r\n project,\r\n agenda,\r\n document\r\n },\r\n\r\n state: {},\r\n mutations: {},\r\n recordAttributesOperations: {}\r\n});\r\n","// import moment from \"moment\";\r\n//\r\n// export const FORMAT_INPUT_DATE = \"YYYY-MM-DD\";\r\n// export const dateInput = value =>\r\n// value ? moment(value).format(FORMAT_INPUT_DATE) : value;\r\n\r\nimport { isValidDate } from \"@/utils\";\r\n\r\n/**\r\n * To Short Local String\r\n * @param {String|string} value\r\n * @returns {string}\r\n */\r\nexport const toShortLocalString = value => {\r\n try {\r\n if (!isValidDate(value)) {\r\n return \"\";\r\n }\r\n\r\n const date = new Date(value);\r\n\r\n return date.toLocaleString([\"en-US\"], {\r\n month: \"short\",\r\n day: \"2-digit\",\r\n year: \"numeric\"\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * to Local Date Time String\r\n * @param {String|string} value\r\n * @return {string} Local Date Time String\r\n * format e.g.: `12/11/2012, 7:00:00 PM` in en-US locale with time zone\r\n */\r\nexport const toLocalDateTimeString = value => {\r\n try {\r\n if (!isValidDate(value)) {\r\n return \"\";\r\n }\r\n\r\n const date = new Date(value);\r\n\r\n return date.toLocaleString([\"en-US\"]);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\nexport const toLocalDateString = value => {\r\n try {\r\n if (!isValidDate(value)) {\r\n return \"\";\r\n }\r\n\r\n const date = new Date(value);\r\n\r\n return date.toLocaleString([\"en-US\"], {\r\n month: \"2-digit\",\r\n day: \"2-digit\",\r\n year: \"numeric\"\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n\r\n/**\r\n * Convert Date to YYYY-MM-DD HH:MM format\r\n * Currently to Match Vuetify Calendar type\r\n * Expand on Demand\r\n * @param {String | Date} date - eg 2023-07-12T09:54:06.697+05:00\r\n * @return {string}\r\n */\r\nexport const convertToYYYYMMDDHHMM = date => {\r\n if (!date) return \"\";\r\n try {\r\n const inputDateTime = toLocalDateTimeString(date);\r\n const [datePart, timePart] = inputDateTime.split(\", \");\r\n const [month, day, year] = datePart.split(\"/\");\r\n const [time, period] = timePart.split(\" \");\r\n const [hour, minute] = time.split(\":\");\r\n const isPM = period === \"PM\";\r\n\r\n const formattedDate = `${year}-${month.padStart(2, \"0\")}-${day.padStart(\r\n 2,\r\n \"0\"\r\n )}`;\r\n const formattedHour = isPM\r\n ? Number(hour) === 12\r\n ? 12\r\n : Number(hour) + 12\r\n : Number(hour);\r\n const formattedTime = `${formattedHour\r\n .toString()\r\n .padStart(2, \"0\")}:${minute}`;\r\n\r\n return `${formattedDate} ${formattedTime}`;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n};\r\n","// design\r\nimport { iconProjects, iconTrash } from \"@/design/icon/iconConst\";\r\n\r\n// model\r\nimport { projectLabel } from \"@/model/workflow/project/projectModel\";\r\n\r\n/**\r\n * project Template Label\r\n * @type {string} user friendly project Template Label\r\n */\r\nconst projectTemplateLabel = `${projectLabel} Template`;\r\n\r\n/**\r\n * project template Operation\r\n * @type {Readonly<{select: string, delete: string, open: string}>}\r\n */\r\nconst projectTemplateOperation = Object.freeze({\r\n select: \"select\",\r\n open: \"open\",\r\n delete: \"delete\"\r\n});\r\n\r\n/**\r\n * project template Operations\r\n * @type {({modelName: string, icon: string, label: string})[]}\r\n */\r\nconst projectTemplateOperations = Object.freeze([\r\n {\r\n name: projectTemplateOperation.select,\r\n label: `Select`,\r\n icon: iconProjects\r\n },\r\n {\r\n name: projectTemplateOperation.open,\r\n label: `Open`,\r\n icon: iconProjects\r\n },\r\n {\r\n name: projectTemplateOperation.delete,\r\n label: `Delete`,\r\n icon: iconTrash\r\n }\r\n]);\r\n\r\n/**\r\n * find Template Operation\r\n * @param {string} name Template Operation modelName\r\n * @return {{name: string, icon: string, label: string}} roject template Operation\r\n */\r\nconst findProjectTemplateOperation = name => {\r\n return projectTemplateOperations.find(el => el.name === name);\r\n};\r\n\r\n/**\r\n * format Project Template Action Name\r\n * @param {string} name Project Template Operation name\r\n * @return {string}}\r\n */\r\nconst formatProjectTemplateActionName = name => {\r\n return `${findProjectTemplateOperation(name)?.label} ${projectTemplateLabel}`;\r\n};\r\n\r\n/**\r\n * project Template Entity\r\n * @type {Readonly<{template: number, category: number}>}\r\n */\r\nconst projectTemplateEntity = Object.freeze({\r\n category: 0,\r\n template: 1\r\n});\r\n\r\n/**\r\n * project Template Entities\r\n * @type {({type: number, name: string})[]}\r\n */\r\nconst projectTemplateEntities = Object.freeze([\r\n {\r\n type: projectTemplateEntity.category,\r\n name: `Category`\r\n },\r\n {\r\n type: projectTemplateEntity.template,\r\n name: `Template`\r\n }\r\n]);\r\n\r\n/**\r\n * find Project Template Entity\r\n * @param {number} type project Template Entity type\r\n * @return {{type: number, name: string}} Project Template Entity\r\n */\r\nconst findProjectTemplateEntity = type => {\r\n return projectTemplateEntities.find(el => el.type === type);\r\n};\r\n\r\nexport {\r\n projectTemplateOperation,\r\n projectTemplateOperations,\r\n findProjectTemplateOperation,\r\n formatProjectTemplateActionName,\r\n projectTemplateLabel,\r\n projectTemplateEntity,\r\n projectTemplateEntities,\r\n findProjectTemplateEntity\r\n};\r\n","import {\r\n iconAdd,\r\n iconEdit,\r\n iconTrash,\r\n iconClear,\r\n iconRefresh,\r\n iconSave,\r\n iconCheck,\r\n iconClose,\r\n iconPrinter,\r\n iconLogOut,\r\n iconConfigure,\r\n iconAccount,\r\n iconDatabase\r\n} from \"@/design/icon/iconConst\";\r\n\r\n/**\r\n * Command Names\r\n * @type {{cancel: string, add: string, new: string, edit: string, save: string, clear: string, refresh: string, reset: string, ok: string, delete: string}}\r\n */\r\nconst commandNames = Object.freeze({\r\n ok: \"OK\",\r\n cancel: \"Cancel\",\r\n close: \"Close\",\r\n save: \"Save\",\r\n add: \"Add\",\r\n new: \"New\",\r\n edit: \"Edit\",\r\n details: \"Details\",\r\n delete: \"Delete\",\r\n refresh: \"Refresh\",\r\n reset: \"Reset\",\r\n clear: \"Clear\",\r\n jump: \"Jump\",\r\n jumpTo: \"Jump To\",\r\n print: \"Print\",\r\n enter: \"Enter\",\r\n logOut: \"Log Out\",\r\n configure: \"Configure\",\r\n changeRepository: \"Change Repository\"\r\n});\r\n\r\n/**\r\n * Command Icons\r\n * @type {{cancel: string, add: string, new: string, edit: string, save: string, clear: string, refresh: string, reset: string, ok: string, delete: string}}\r\n */\r\nconst commandIcons = Object.freeze({\r\n ok: iconCheck,\r\n cancel: iconClose,\r\n save: iconSave,\r\n add: iconAdd,\r\n new: iconAdd,\r\n edit: iconEdit,\r\n delete: iconTrash,\r\n refresh: iconRefresh,\r\n reset: iconRefresh,\r\n clear: iconClear,\r\n print: iconPrinter,\r\n logOut: iconLogOut,\r\n configure: iconConfigure,\r\n account: iconAccount,\r\n iconDatabase: iconDatabase\r\n});\r\n\r\n/**\r\n * command Status\r\n * @type {Readonly<{unavailable: number, disabled: number, enabled: number}>}\r\n */\r\nconst commandStatus = Object.freeze({\r\n unavailable: 0,\r\n enabled: 1,\r\n disabled: 2\r\n});\r\n\r\n/**\r\n * command Statuses\r\n * @type {Readonly<[{text: string, status: number}]>}\r\n */\r\nconst commandStatuses = Object.freeze([\r\n {\r\n status: commandStatus.unavailable,\r\n text: \"Unavailable\"\r\n },\r\n {\r\n status: commandStatus.enabled,\r\n text: \"Enabled\"\r\n },\r\n {\r\n status: commandStatus.disabled,\r\n text: \"disabled\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Command Status\r\n * @param {number} status Command Status\r\n * @return {{text: string, status: number}} Command Status\r\n */\r\nconst findCommandStatus = status => {\r\n return commandStatuses.find(el => el.status === status)?.status;\r\n};\r\n\r\nexport {\r\n commandNames,\r\n commandIcons,\r\n commandStatus,\r\n commandStatuses,\r\n findCommandStatus\r\n};\r\n","// model\r\nimport {\r\n commandStatus,\r\n findCommandStatus\r\n} from \"@/model/common/commands/commandModel\";\r\nimport {\r\n findProjectState,\r\n projectState\r\n} from \"@/model/workflow/project/projectModel\";\r\nimport {\r\n dueDateColorClass,\r\n findTaskState,\r\n findTaskStateColorClass,\r\n taskState\r\n} from \"@/model/workflow/task/taskModel\";\r\n\r\n// filters\r\nimport { convertToYYYYMMDDHHMM } from \"@/filters/dateFilter\";\r\n\r\n// services\r\nimport {\r\n canJumpToTask,\r\n taskDueDateLocalDateTime,\r\n taskStatusTooltip\r\n} from \"@/services/inbox/taskService\";\r\nimport {\r\n iconFileDetails,\r\n iconReport,\r\n iconRun,\r\n iconView\r\n} from \"@/design/icon/iconConst\";\r\n\r\n/**\r\n * prepare new workflow Project\r\n * @param {{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}[]}|*} record record that new workflow project will be attached to it\r\n * @param {{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}}} projectTemplate workflow project template\r\n * @param {boolean} runOnlyOneProject run Only One Project at current time\r\n * @param {number} startProjectOption start Project Option\r\n * @return {{recordId: number, projectManager: string, comment: string, runOnlyOneProject: boolean, startProjectOption: number, userTasks: ({id: number, name: string, duration: string, priority: number, reassignment: number, sequence: number, assignment: {assignee: string, fixed: boolean, method: number, roles: string}}[]|[]), projectName: (*|string), templateId: (*|number)}}\r\n */\r\nconst prepareNewProject = (\r\n record,\r\n projectTemplate,\r\n runOnlyOneProject,\r\n startProjectOption\r\n) => {\r\n return {\r\n recordId: record?.id ?? -1,\r\n projectName: record?.name ?? \"\",\r\n projectManager: projectTemplate?.projectManager ?? \"\",\r\n comment: projectTemplate?.comment ?? \"\",\r\n templateId: projectTemplate?.id ?? -1,\r\n runOnlyOneProject: runOnlyOneProject ?? false,\r\n startProjectOption: startProjectOption,\r\n userTasks: mapUserTasks(projectTemplate) ?? []\r\n };\r\n};\r\n\r\n/**\r\n * update New workflow Project\r\n * @param {{recordId: Number, projectName: string, comment: string, templateId: number, runOnlyOneProject: boolean, userTasks: {id: number, name: string, sequence: number, duration: number, priority: number, reassignment: number, assignment: {assignee: string, fixed: boolean, method: number, roles: string}}}[]} project New workflow Project\r\n * @param {{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}}} template workflow Project template\r\n */\r\nconst updateNewProject = (project, template) => {\r\n project.templateId = template?.id ?? -1;\r\n project.projectManager = template?.projectManager ?? \"\";\r\n project.comment = template?.comment ?? \"\";\r\n\r\n if ((template?.userTaskTemplates?.length ?? 0) > 0) {\r\n if (!project.userTasks) {\r\n project.userTasks = [];\r\n }\r\n project.userTasks = mapUserTasks(template) ?? [];\r\n } else {\r\n project.userTasks = [];\r\n }\r\n};\r\n\r\n/**\r\n * map userTask Templates of project template to new project's userTasks\r\n * @param {{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}}} template workflow project template\r\n * @return {{id: number, name: string, duration: string, priority: number, reassignment: number, sequence: number, assignment: {assignee: string, fixed: boolean, method: number, roles: string}} []|[]}\r\n */\r\nconst mapUserTasks = template => {\r\n return (\r\n template?.userTaskTemplates?.map(t => {\r\n return {\r\n id: t.id,\r\n name: t.name,\r\n duration: {\r\n duration: t.duration.duration,\r\n calendar: t.duration.calendar,\r\n fixed: t.duration.fixed,\r\n milestone: t.duration.milestone\r\n },\r\n priority: t.priority,\r\n reassignment: t.reassignment,\r\n sequence: t.sequence,\r\n assignment: {\r\n assignee: t.assignment.assignee,\r\n fixed: t.assignment.fixed,\r\n method: t.assignment.method,\r\n roles: t.assignment.roles\r\n }\r\n };\r\n }) ?? []\r\n );\r\n};\r\n\r\n/**\r\n * get a New Project User Tasks\r\n * data transfer object (DTO) (which web API expects)\r\n * @param {{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}}[]}} project\r\n * @return {{id: number, duration: string, priority: number, assignment: {assignee: string, roles: string, method: number}}[]|*[]}\r\n */\r\nconst getNewProjectUserTasks = project =>\r\n project?.userTasks?.map(ut => {\r\n return {\r\n id: ut.id,\r\n duration: ut.duration?.duration,\r\n priority: ut.priority,\r\n assignment: {\r\n assignee: ut.assignment.assignee,\r\n roles: ut.assignment.roles,\r\n method: ut.assignment.method\r\n }\r\n };\r\n }) ?? [];\r\n\r\n/**\r\n * delete Project Command Status\r\n * @param {{projectId: Number, projectName:string, status:number, isValid: boolean, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, projectStatus: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string}} project\r\n * @return {{reason: string, status: number}}\r\n */\r\nconst deleteProjectCommandStatus = project => {\r\n // validate input arguments\r\n if (!project) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Not provided Project\"\r\n };\r\n }\r\n // validate project permissions\r\n if (\r\n !(\r\n (project?.canAccess ?? false) &&\r\n (project?.canCancel ?? false) &&\r\n (project?.canSuspend ?? false)\r\n )\r\n ) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Permission denied\"\r\n };\r\n }\r\n // validate project\r\n if (!(project?.isValid ?? false)) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Project not valid\"\r\n };\r\n }\r\n // validate project status\r\n const status = project?.status ?? -1;\r\n const result =\r\n status === projectState.notStarted || status === projectState.faulted;\r\n return result\r\n ? {\r\n status: commandStatus.enabled,\r\n reason: \"\"\r\n }\r\n : {\r\n status: commandStatus.disabled,\r\n reason: `Cannot delete project due to project status. Project is ${\r\n findProjectState(status)?.name\r\n }`\r\n };\r\n};\r\n\r\n/**\r\n * cancel Project Command Status\r\n * @param {{projectId: Number, projectName:string, status:number, isValid: boolean, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, projectStatus: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string}} project\r\n * @return {{reason: string, status: number}}\r\n */\r\nconst cancelProjectCommandStatus = project => {\r\n // validate input arguments\r\n if (!project) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Not provided Project\"\r\n };\r\n }\r\n // validate project permissions\r\n if (!((project?.canAccess ?? false) && (project?.canCancel ?? false))) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Permission denied\"\r\n };\r\n }\r\n // validate project\r\n if (!(project?.isValid ?? false)) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Project not valid\"\r\n };\r\n }\r\n // validate project status\r\n const status = project?.status ?? -1;\r\n const result =\r\n status > projectState.notStarted && status < projectState.completed;\r\n return result\r\n ? {\r\n status: commandStatus.enabled,\r\n reason: \"\"\r\n }\r\n : {\r\n status: commandStatus.disabled,\r\n reason: `Cannot cancel project due to project status. Project is ${\r\n findProjectState(status)?.name\r\n }`\r\n };\r\n};\r\n\r\n/**\r\n * Suspend Project Command Status\r\n * @param {{projectId: Number, projectName:string, status:number, isValid: boolean, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, projectStatus: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string}} project\r\n * @return {{reason: string, status: number}}\r\n */\r\nconst suspendProjectCommandStatus = project => {\r\n // validate input arguments\r\n if (!project) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Not provided Project\"\r\n };\r\n }\r\n // validate project permissions\r\n if (!((project?.canAccess ?? false) && (project?.canSuspend ?? false))) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Permission denied\"\r\n };\r\n }\r\n // validate project\r\n if (!(project?.isValid ?? false)) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Project not valid\"\r\n };\r\n }\r\n // validate project status\r\n const status = project?.status ?? -1;\r\n const result = status === projectState.executing;\r\n return result\r\n ? {\r\n status: commandStatus.enabled,\r\n reason: \"\"\r\n }\r\n : {\r\n status: commandStatus.disabled,\r\n reason: `Cannot suspend project due to project status. Project is ${\r\n findProjectState(status)?.name\r\n }`\r\n };\r\n};\r\n\r\n/**\r\n * Resume Project Command Status\r\n * @param {{projectId: Number, projectName:string, status:number, isValid: boolean, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, projectStatus: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string}} project\r\n * @return {{reason: string, status: number}}\r\n */\r\nconst resumeProjectCommandStatus = project => {\r\n // validate input arguments\r\n if (!project) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Not provided Project\"\r\n };\r\n }\r\n // validate project permissions\r\n if (!(project?.canAccess ?? false)) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Permission denied\"\r\n };\r\n }\r\n // validate project\r\n if (!(project?.isValid ?? false)) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Project not valid\"\r\n };\r\n }\r\n // validate project status\r\n const status = project?.status ?? -1;\r\n const result = status === projectState.suspended;\r\n return result\r\n ? {\r\n status: commandStatus.enabled,\r\n reason: \"\"\r\n }\r\n : {\r\n status: commandStatus.disabled,\r\n reason: `Cannot resume project due to project status. Project is ${\r\n findProjectState(status)?.name\r\n }`\r\n };\r\n};\r\n\r\n/**\r\n * Change Ownership Project Command Status\r\n * @param {{projectId: Number, projectName:string, status:number, isValid: boolean, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, projectStatus: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string}} project\r\n * @return {{reason: string, status: number}}\r\n */\r\nconst changeOwnershipProjectCommandStatus = project => {\r\n // validate input arguments\r\n if (!project) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Not provided Project\"\r\n };\r\n }\r\n // validate project permissions\r\n if (\r\n !((project?.canAccess ?? false) && (project?.canChangeOwnership ?? false))\r\n ) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Permission denied\"\r\n };\r\n }\r\n // validate project\r\n if (!(project?.isValid ?? false)) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Project not valid\"\r\n };\r\n }\r\n // validate project status\r\n const status = project?.status ?? -1;\r\n const result = status < projectState.completed;\r\n\r\n return result\r\n ? {\r\n status: commandStatus.enabled,\r\n reason: \"\"\r\n }\r\n : {\r\n status: commandStatus.disabled,\r\n reason: `Cannot change ownership of the project due to project status. Project is ${\r\n findProjectState(status)?.name\r\n }`\r\n };\r\n};\r\n\r\n/**\r\n * reassign Project Task Command Status\r\n * @param project\r\n * @param task\r\n * @return {{reason: string, status: number}} Project Task Command Status\r\n */\r\nconst reassignProjectTaskCommandStatus = (project, task) => {\r\n // validate input arguments\r\n if (!project) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Not provided Project\"\r\n };\r\n }\r\n // validate project permissions\r\n if (!(project.canAccess && project.canReassign)) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Permission denied\"\r\n };\r\n }\r\n\r\n // validate project\r\n if (!project.isValid) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Project not valid\"\r\n };\r\n }\r\n\r\n // validate project status\r\n const projectStatus = project.status;\r\n if (!(projectStatus < projectState.completed)) {\r\n return {\r\n status: commandStatus.disabled,\r\n reason: `Cannot reassign task due to project status. Project is ${\r\n findProjectState(projectStatus)?.name\r\n }`\r\n };\r\n }\r\n\r\n // validate task\r\n if (!task) {\r\n return {\r\n status: findCommandStatus(commandStatus.unavailable),\r\n reason: \"Not provided task\"\r\n };\r\n }\r\n\r\n // validate task status\r\n const taskStatus = task.status;\r\n const result = !(\r\n (taskStatus < taskState.notStarted || taskStatus >= taskState.completed) // Got from Client\r\n );\r\n\r\n return result\r\n ? {\r\n status: commandStatus.enabled,\r\n reason: \"\"\r\n }\r\n : {\r\n status: commandStatus.disabled,\r\n reason: `Cannot reassign task due to task status. Task is ${\r\n findTaskState(taskStatus)?.name\r\n }`\r\n };\r\n};\r\n\r\n/**\r\n * Get Project Tasks Calendar Events\r\n * @param {{projectId: Number, projectName:string, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, recordId: Number, subject: String, owner: String, userName:string, projectManagerId: Number, templateId: Number, templateName: String, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean, comment:string, durableInstanceUid:string, creationDate:string, userTasks: {taskId: number, typeId: number, actorId: number, actorName: string, userName: string, assignee: string, canReassign: boolean, canceledRecipients: string, comment: string, dueDate: string, duration: string, isDue: boolean, isMilestone: boolean, isOverdue: boolean, priority: number, recordId: number, recordName: string, status: number, statusText: string, notes: {id: number, created: string, taskId: number, userId: number, userName: string}[]}}} project\r\n * @return {*[]}\r\n */\r\nconst getProjectTasksCalendarEvents = project => {\r\n if (!project) return [];\r\n\r\n const events = [];\r\n\r\n project.userTasks.forEach(task => {\r\n events.push(\r\n // {\r\n // name: \"Created\",\r\n // start: convertToYYYYMMDDHHMM(task.created),\r\n // color: colorMD.blue, // Customize color\r\n // tooltip: `Task \"${task.name}\" created at ${convertToYYYYMMDDHHMM(\r\n // task?.created\r\n // )} `\r\n // },\r\n\r\n {\r\n id: task.taskId,\r\n name: task.name,\r\n start: convertToYYYYMMDDHHMM(task.statusChanged),\r\n end: task.dueDate ? convertToYYYYMMDDHHMM(task.dueDate) : undefined,\r\n // end: convertToYYYYMMDDHHMM(\r\n // new Date(getDueDate(task.statusChanged, task.duration))\r\n // ),\r\n color: findTaskStateColorClass(task.status),\r\n tooltip: taskStatusTooltip(task)\r\n }\r\n\r\n // {\r\n // name: \"Status\",\r\n // start: convertToYYYYMMDDHHMM(task.statusChanged),\r\n // color: colorMD.green, // Customize color\r\n // tooltip: `Task \"${task.name}\" status changed at ${convertToYYYYMMDDHHMM(\r\n // task?.statusChanged\r\n // )} `\r\n // },\r\n\r\n // {\r\n // name: \"Due\",\r\n // start: convertToYYYYMMDDHHMM(\r\n // new Date(new Date(getDueDate(task.created, task.duration)))\r\n // ),\r\n // color: colorMD.red, // Customize color\r\n // tooltip: `Task \"${task.name}\" due at ${convertToYYYYMMDDHHMM(\r\n // new Date(new Date(getDueDate(task.created, task.duration)))\r\n // )} `\r\n // },\r\n\r\n // {\r\n // name: \"Duration\",\r\n // start: convertToYYYYMMDDHHMM(task?.created),\r\n // end: convertToYYYYMMDDHHMM(\r\n // new Date(new Date(getDueDate(task.created, task.duration)))\r\n // ),\r\n // color: colorMD.grey,\r\n // tooltip: `Task \"${task.name}\" total duration - ${task.duration} `\r\n // }\r\n );\r\n\r\n if (task.dueDate) {\r\n events.push({\r\n id: task.taskId,\r\n name: `Due`,\r\n start: convertToYYYYMMDDHHMM(new Date(task.dueDate)),\r\n color: dueDateColorClass(task),\r\n tooltip: `${task.name} Due ${taskDueDateLocalDateTime(task)}`\r\n });\r\n }\r\n });\r\n\r\n return events;\r\n};\r\n\r\n/**\r\n * Context Menu Items for Project Context Menu\r\n * @type {Readonly<{ShowDetails: string, DailyView: string, MonthlyView: string, WeeklyView: string, JumpToTask: string}>}\r\n */\r\nconst projectContextMenuItem = Object.freeze({\r\n ShowDetails: \"Show Details\",\r\n DailyView: \"Daily View\",\r\n MonthlyView: \"Monthly View\",\r\n WeeklyView: \"Weekly View\",\r\n JumpToTask: \"Jump to Task\",\r\n JumpToRecord: \"Jump to Record\",\r\n Export: \"Export\"\r\n});\r\n\r\n/**\r\n * Context Menu Items for Project Calendar\r\n * @type {function(*, *): [{visible: boolean, name: string, icon: string}, {visible: boolean, name: string, icon: string, type: string}, {visible: boolean, name: string, icon: string, type: string}, {visible: boolean, name: string, icon: string, type: string}, {visible: boolean, name: string, icon: string}, null, null]}\r\n */\r\nconst projectCalendarMenuItems = (task, actorId, calendarType) => [\r\n {\r\n name: projectContextMenuItem.ShowDetails,\r\n icon: iconFileDetails,\r\n visible: true,\r\n enabled: true\r\n },\r\n {\r\n name: projectContextMenuItem.DailyView,\r\n type: \"day\",\r\n icon: iconView,\r\n visible: true,\r\n enabled: calendarType !== \"day\"\r\n },\r\n {\r\n name: projectContextMenuItem.MonthlyView,\r\n type: \"month\",\r\n icon: iconView,\r\n visible: true,\r\n enabled: calendarType !== \"month\"\r\n },\r\n {\r\n name: projectContextMenuItem.WeeklyView,\r\n type: \"week\",\r\n icon: iconView,\r\n visible: true,\r\n enabled: calendarType !== \"week\"\r\n },\r\n {\r\n name: projectContextMenuItem.JumpToTask,\r\n icon: iconRun,\r\n visible: canJumpToTask(task, actorId),\r\n enabled: true\r\n },\r\n {\r\n name: projectContextMenuItem.JumpToRecord,\r\n icon: iconRun,\r\n visible: true,\r\n enabled: true\r\n },\r\n {\r\n name: projectContextMenuItem.Export,\r\n icon: iconReport,\r\n visible: true,\r\n enabled: true\r\n }\r\n];\r\n\r\n/**\r\n * Context Menu Items for Project Timeline\r\n * @type {function(*): [{name: string, icon: string}, {name: string, icon: string}, {name: string, icon: string}, {name: string, icon: string}]}\r\n */\r\nconst projectTimelineMenuItems = (task, actorId) => [\r\n {\r\n name: projectContextMenuItem.ShowDetails,\r\n icon: iconFileDetails,\r\n visible: true,\r\n enabled: true\r\n },\r\n {\r\n name: projectContextMenuItem.JumpToTask,\r\n icon: iconRun,\r\n visible: canJumpToTask(task, actorId),\r\n enabled: true\r\n },\r\n {\r\n name: projectContextMenuItem.JumpToRecord,\r\n icon: iconRun,\r\n visible: true,\r\n enabled: true\r\n },\r\n {\r\n name: projectContextMenuItem.Export,\r\n icon: iconReport,\r\n visible: true,\r\n enabled: true\r\n }\r\n];\r\n\r\nexport {\r\n prepareNewProject,\r\n updateNewProject,\r\n getNewProjectUserTasks,\r\n deleteProjectCommandStatus,\r\n cancelProjectCommandStatus,\r\n suspendProjectCommandStatus,\r\n resumeProjectCommandStatus,\r\n changeOwnershipProjectCommandStatus,\r\n reassignProjectTaskCommandStatus,\r\n getProjectTasksCalendarEvents,\r\n projectCalendarMenuItems,\r\n projectContextMenuItem,\r\n projectTimelineMenuItems\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',[_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=68eccfee\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-console */\r\n\r\nimport { register } from \"register-service-worker\";\r\n\r\nif (process.env.NODE_ENV === \"production\") {\r\n register(`${process.env.BASE_URL}service-worker.js`, {\r\n ready() {\r\n console.log(\r\n \"App is being served from cache by a service worker.\\n\" +\r\n \"For more details, visit https://goo.gl/AFskqB\"\r\n );\r\n },\r\n registered() {\r\n console.log(\"Service worker has been registered.\");\r\n },\r\n cached() {\r\n console.log(\"Content has been cached for offline use.\");\r\n },\r\n updatefound() {\r\n console.log(\"New content is downloading.\");\r\n },\r\n updated() {\r\n console.log(\"New content is available; please refresh.\");\r\n },\r\n offline() {\r\n console.log(\r\n \"No internet connection found. App is running in offline mode.\"\r\n );\r\n },\r\n error(error) {\r\n console.error(\"Error during service worker registration:\", error);\r\n }\r\n });\r\n}\r\n","//\r\n// Vuetify uses Google's Roboto font and Material Design Icons.\r\n// The simplest way to install these are to include their CDN's in your main index.html.\r\n//\r\n\r\nimport \"@mdi/font/css/materialdesignicons.css\"; // Ensure we are using css-loader\r\nimport \"typeface-roboto/index.css\";\r\nimport Vue from \"vue\";\r\nimport Vuetify from \"vuetify/lib/framework\";\r\nimport { colorTheme } from \"@/design/colors/Color\";\r\n\r\nVue.use(Vuetify);\r\n\r\n//\r\n// We can also use the pre-defined material colors.\r\n//\r\nimport colors from \"vuetify/lib/util/colors\";\r\n\r\n//\r\n// In order to change your font library, add the iconfont option\r\n//\r\nexport default new Vuetify({\r\n icons: {\r\n iconfont: \"mdi\" // 'mdi' || 'mdiSvg' || 'md' || 'fa' || 'fa4' || 'faSvg'\r\n },\r\n // Vuetify supports both light and dark variants of the Material Design spec.\r\n // theme: { dark: true },\r\n theme: {\r\n themes: {\r\n light: {\r\n [colorTheme.error]: colors.red.lighten1\r\n },\r\n dark: {\r\n [colorTheme.error]: colors.blue.lighten3\r\n }\r\n }\r\n }\r\n});\r\n\r\n// Customizing Questys themes here\"\r\n// By default, Vuetify has a color theme applied for all components.\r\n// {\r\n// primary: '#1976D2',\r\n// secondary: '#424242',\r\n// accent: '#82B1FF',\r\n// error: '#FF5252',\r\n// info: '#2196F3',\r\n// success: '#4CAF50',\r\n// warning: '#FFC107',\r\n// }\r\n","import Vue from \"vue\";\r\nimport App from \"@/App\";\r\nimport \"@/registerServiceWorker\";\r\nimport router from \"@/router/index\";\r\nimport store from \"@/store/index\";\r\nimport vuetify from \"@/plugins/vuetify\";\r\nimport { FontAwesomeIcon } from \"@/plugins/fontawesome\";\r\n\r\n// services\r\nimport {\r\n setProductionSettings,\r\n setPublicAccessSettings,\r\n isDevelopment\r\n} from \"@/services/config/configService\";\r\n\r\n// store\r\nimport { INITIALIZE_STATES } from \"@/store/solution/mutation-types\";\r\n\r\nVue.config.productionTip = false;\r\n\r\n// Create Two Broadcast Channels, one for the viewer, one for the main app, so if they collide, both can receive the updated record\r\nVue.prototype.$viewerChannel = new BroadcastChannel(\"Viewer\");\r\nVue.prototype.$mainAppChannel = new BroadcastChannel(\"MainApp\");\r\n\r\n// Expose FontAwesomeIcon as a global component\r\nVue.component(\"font-awesome-icon\", FontAwesomeIcon);\r\n\r\n/**\r\n * URL of Runtime/Production Access Settings\r\n * @type {string}\r\n */\r\nconst urlRuntimeSettings = `/runtimeSettings.json`;\r\n\r\n/**\r\n * URL of Public Access Settings\r\n * @type {string}\r\n */\r\nconst urlPublicAccessSettings = `/publicAccessSettings.json`;\r\n\r\n//\r\n// is Development, then .env will be used\r\n// else, system will try to set Production Settings using\r\n// external settings file: runtimeSettings.json located in the root of dist folder\r\n// if the runtimeSettings.json is not found, then .env settings will be used\r\n// Note: runtimeSettings.json can be expanded as we go forward\r\n//\r\nif (isDevelopment) {\r\n fetchSettings(urlPublicAccessSettings)\r\n .then(setting => {\r\n setPublicAccessSettings(setting);\r\n })\r\n .catch(e => {\r\n console.error(\r\n `Couldn't set Public Access Settings using url: ${urlPublicAccessSettings}`,\r\n e.toString()\r\n );\r\n })\r\n .finally(() => {\r\n runApp();\r\n });\r\n} else {\r\n fetchAllSettings(urlRuntimeSettings, urlPublicAccessSettings)\r\n .then(([runtimeSettings, publicAccessSettings]) => {\r\n setProductionSettings(runtimeSettings);\r\n setPublicAccessSettings(publicAccessSettings);\r\n })\r\n .catch(e => {\r\n console.error(\r\n `Couldn't set Production and Public Access Settings using urlRuntimeSettings: ${urlRuntimeSettings} and urlPublicAccessSettings: ${urlPublicAccessSettings}`,\r\n e.toString()\r\n );\r\n })\r\n .finally(() => {\r\n runApp();\r\n });\r\n}\r\n\r\n/**\r\n * run Questys Access app\r\n */\r\nfunction runApp() {\r\n new Vue({\r\n router,\r\n store,\r\n beforeCreate() {\r\n this.$store.commit(`solution/${INITIALIZE_STATES}`);\r\n },\r\n vuetify,\r\n render: h => h(App)\r\n }).$mount(\"#app\");\r\n}\r\n\r\n/**\r\n * fetch JSON settings data\r\n * @param {string} url URL of a JSON file\r\n * @return {Promise<*>}\r\n */\r\nasync function fetchSettings(url) {\r\n try {\r\n // starts a fetch request and returns a promise\r\n const response = await fetch(url);\r\n\r\n // extract a JSON object from the response\r\n return response.json();\r\n } catch (e) {\r\n console.warn(`Couldn't fetch settings from ${url}`, e.toString());\r\n }\r\n}\r\n\r\n/**\r\n * fetch All JSON Settings\r\n * @param urlRuntimeSettings URL of Runtime Settings JSON file\r\n * @param urlPublicAccessSettings URL of Public Access Settings JSON file\r\n * @return {Promise}\r\n */\r\nasync function fetchAllSettings(urlRuntimeSettings, urlPublicAccessSettings) {\r\n try {\r\n // perform parallel fetch requests\r\n const [runtimeSettings, publicAccessSettings] = await Promise.all([\r\n fetch(urlRuntimeSettings),\r\n fetch(urlPublicAccessSettings)\r\n ]);\r\n\r\n // extract a JSON objects from the responses\r\n const runtime = await runtimeSettings.json();\r\n const publicAccess = await publicAccessSettings.json();\r\n\r\n return [runtime, publicAccess];\r\n } catch (e) {\r\n console.warn(\r\n `Couldn't fetch Runtime & Public Access settings from urlRuntimeSettings: ${urlRuntimeSettings} and urlPublicAccessSettings: ${urlPublicAccessSettings}`,\r\n e.toString()\r\n );\r\n }\r\n}\r\n","// router\r\nimport {\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\n/**\r\n * document module Name\r\n * @type {string}\r\n */\r\nconst moduleName = \"Document\";\r\n\r\n/**\r\n * document Viewer Route Name\r\n * @type {string}\r\n */\r\nconst documentViewerRouteName = \"DocumentViewer\";\r\n\r\n/**\r\n * create Document Viewer Route\r\n * @param {{id: number, version: number}} record Questys record (supported record type: compound document/file)\r\n * @param {string} fullTextSearch full text search criteria\r\n * @return {{name: string, params: {id: number}, query: {searchTerm: string, documentVersion: number}}}}\r\n */\r\nconst createDocumentViewerRoute = (record, fullTextSearch = undefined) => {\r\n return {\r\n name: documentViewerRouteName,\r\n params: { id: record?.id ?? -1 },\r\n query: {\r\n searchTerm: fullTextSearch,\r\n documentVersion: record?.version ?? -1\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * create Document Viewer Route for file version history\r\n * @param {{id: number, version: number}} record Questys record (supported record type: compound document/file)\r\n * @param {string} fullTextSearch full text search criteria\r\n * @return {{name: string, params: {id: number}, query: {searchTerm: string, documentVersion: number}}}}\r\n */\r\nconst createDocumentViewerFileHistoryRoute = (\r\n record,\r\n fullTextSearch = undefined\r\n) => {\r\n return {\r\n name: documentViewerRouteName,\r\n params: { id: record?.id ?? -1 },\r\n query: {\r\n searchTerm: fullTextSearch,\r\n documentVersion: record?.version ?? -1,\r\n isViewOnly: true\r\n }\r\n };\r\n};\r\n\r\nconst documentRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(\"Image\"),\r\n name: createAppModuleRouteName(moduleName),\r\n meta: { requiresAuth: true },\r\n component: () => import(\"@/views/document/DocumentHome\"),\r\n children: [\r\n {\r\n path: `:id`,\r\n name: documentViewerRouteName,\r\n meta: { requiresAuth: true },\r\n props: true,\r\n component: () => import(\"@/views/document/DocumentViewer\")\r\n }\r\n ]\r\n }\r\n]);\r\n\r\nexport {\r\n documentRoutes,\r\n documentViewerRouteName,\r\n createDocumentViewerRoute,\r\n createDocumentViewerFileHistoryRoute\r\n};\r\n","// model\r\nimport { findImageFileType, isPdfExtension } from \"@/model/record/fileModel\";\r\nimport {\r\n recordOperation,\r\n recordState,\r\n recordType\r\n} from \"@/model/record/recordModel\";\r\n\r\n// services\r\nimport {\r\n isAllowedOperation,\r\n isStateOwner\r\n} from \"@/services/record/recordService\";\r\nimport { isAllowedAuthor } from \"@/services/config/configService\";\r\n\r\n/**\r\n * viewer Type\r\n * @type {Readonly<{viewer: string, editor: string}>}\r\n */\r\nconst viewerType = Object.freeze({\r\n viewer: \"Viewer\",\r\n editor: \"Editor\"\r\n});\r\n\r\n/**\r\n * Determines whether the record-file is viewable in Questys' Document Viewer\r\n * @param record record-file\r\n * @return {boolean|Boolean} true if the record-file is viewable in Questys' Document Viewer\r\n */\r\nconst isViewableInDocumentViewer = record => {\r\n const typeId = record?.recordTypeId ?? recordType.RECORD;\r\n\r\n switch (typeId) {\r\n case recordType.DOCUMENT: {\r\n /**\r\n * add logic here - if/when there is wip\r\n */\r\n return false;\r\n }\r\n case recordType.RECORD: {\r\n /**\r\n * add logic here - if/when there is wip\r\n */\r\n return false;\r\n }\r\n case recordType.FILE: {\r\n return isDocumentViewerSupportingFileExtension(record?.extension ?? \"\");\r\n }\r\n default:\r\n return false;\r\n }\r\n};\r\n\r\n/**\r\n * Determines whether the record-file can documentViewerRoute to Document Viewer\r\n * @param record record-file\r\n * @param principal Questys principal\r\n * @return {boolean} true if the record-file can documentViewerRoute to Document Viewer\r\n */\r\nconst canRouteToDocumentViewer = (record, principal) => {\r\n return isViewableInDocumentViewer(record)\r\n ? !canEditFileVersionInDocumentEditor(record, principal)\r\n : false;\r\n};\r\n\r\n/**\r\n * determines whether the current user is permitted to edit the file using Questys Document editor\r\n * @param record\r\n * @param principal\r\n * @return {(function(): boolean)|*|Boolean|boolean}\r\n */\r\nconst canEditFileVersionInDocumentEditor = (record, principal) => {\r\n //\r\n // TODO: remove isViewableInDocumentViewer(record),\r\n // ones Sameed enable Acquire Scan/Import to already checked out\r\n // single an office file (.docx, ...)\r\n //\r\n return (\r\n isAllowedAuthor &&\r\n isAllowedOperation(record, recordOperation.Update) &&\r\n isEditableInDocumentEditor(record, principal)\r\n );\r\n};\r\n\r\n/**\r\n * compute whether current record is checked out or is in Work-In-progress\r\n * @return {boolean} returns true if current record is checked Out or is in Work-In-progress\r\n */\r\n\r\n/**\r\n * determines whether the record is Editable In Questys document editor\r\n * @param record\r\n * @param principle\r\n * @return {boolean} true if Edit Record File Version\r\n */\r\nconst isEditableInDocumentEditor = (record, principle) => {\r\n switch (record?.recordTypeId ?? -1) {\r\n case recordType.RECORD: {\r\n return record?.localFile?.hasFile ?? false;\r\n }\r\n case recordType.FILE: {\r\n if (record?.localFile?.hasFile ?? false) {\r\n return true;\r\n }\r\n return (\r\n //\r\n // TODO: Implement accordingly when WebScan\r\n // even though current record is file (Office Document/Image/Pdf/...)\\\r\n // then it is not needed to check: isViewableInDocumentViewer\r\n //\r\n (record?.stateId ?? -1) === recordState.checkedOut &&\r\n isStateOwner(record, principle) &&\r\n isViewableInDocumentViewer(record)\r\n );\r\n }\r\n default: {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Determines whether the file extension is supported by the Questys Document Viewer\r\n * Is Viewer Supported Extension\r\n * @param {string} ext file extension\r\n * @return {boolean|Boolean} true if the file extension is supported by the Questys Document Viewer\r\n */\r\nconst isDocumentViewerSupportingFileExtension = ext =>\r\n findImageFileType(ext)?.isImageFormat ?? false;\r\n\r\n/**\r\n * Determine whether viewed Record Is Pdf\r\n * @param {string} ext\r\n * @return {boolean|Boolean}\r\n */\r\nconst isFilePdf = ext => isPdfExtension(ext);\r\n\r\n/**\r\n * Create Changed Record Info Model for emit and broadcast\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}} recordInfo - Can be FileModel/RecordItemModel/DocumentModel - without Fields\r\n * @param {boolean} hasVersionChanged - true if new file versions available / true if compound has new files/child\r\n * @return {{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}}\r\n */\r\nconst ChangedRecordInfoModel = (\r\n recordInfo = undefined,\r\n hasVersionChanged = false\r\n) => {\r\n return {\r\n RecordInfo: recordInfo,\r\n HasVersionChanged: hasVersionChanged\r\n };\r\n};\r\n\r\nexport {\r\n viewerType,\r\n isDocumentViewerSupportingFileExtension,\r\n isViewableInDocumentViewer,\r\n canRouteToDocumentViewer,\r\n canEditFileVersionInDocumentEditor,\r\n ChangedRecordInfoModel,\r\n isFilePdf\r\n};\r\n","const SET_USER_MODULES = \"SET_USER_MODULES\";\r\nconst SET_USER_DATA = \"SET_USER_DATA\";\r\nconst CLEAR_USER_DATA = \"CLEAR_USER_DATA\";\r\nconst SET_REPOSITORIES = \"SET_REPOSITORIES\";\r\nconst SET_CATEGORY_TYPES = \"SET_CATEGORY_TYPES\";\r\nconst SET_FIELDS = \"SET_FIELDS\";\r\nconst SET_FORM_FIELD = \"SET_FORM_FIELD\";\r\nconst SET_CATEGORIES = \"SET_CATEGORIES\";\r\nconst SET_ENABLE_MODULE_CATEGORY = \"SET_ENABLE_MODULE_CATEGORY\";\r\nconst SET_ENABLE_MODULE_SEARCH = \"SET_ENABLE_MODULE_SEARCH\";\r\nconst SET_ENABLE_MODULE_TASKS = \"SET_ENABLE_MODULE_TASKS\";\r\nconst SET_ENABLE_MODULE_PROJECTS = \"SET_ENABLE_MODULE_PROJECTS\";\r\nconst SET_ENABLE_MODULE_AGENDA = \"SET_ENABLE_MODULE_AGENDA\";\r\nconst SET_CHANGE_REPOSITORY = \"SET_CHANGE_REPOSITORY\";\r\nconst SET_TEXT_EDITOR = \"SET_TEXT_TAB\";\r\nconst SET_ANNOTATION_EDITOR = \"SET_ANNOTATION_TAB\";\r\n\r\nexport {\r\n SET_USER_MODULES,\r\n SET_USER_DATA,\r\n CLEAR_USER_DATA,\r\n SET_REPOSITORIES,\r\n SET_CHANGE_REPOSITORY,\r\n SET_CATEGORY_TYPES,\r\n SET_FIELDS,\r\n SET_FORM_FIELD,\r\n SET_CATEGORIES,\r\n SET_ENABLE_MODULE_CATEGORY,\r\n SET_ENABLE_MODULE_SEARCH,\r\n SET_ENABLE_MODULE_TASKS,\r\n SET_ENABLE_MODULE_PROJECTS,\r\n SET_ENABLE_MODULE_AGENDA,\r\n SET_TEXT_EDITOR,\r\n SET_ANNOTATION_EDITOR\r\n};\r\n","// utils\r\nimport {\r\n getLocalStorageItem,\r\n setLocalStorageItem,\r\n repoUserLocalStorageKey\r\n} from \"@/utils/localStorageUtility\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n/**\r\n * module Name\r\n * @type {string}\r\n */\r\nconst moduleName = moduleNames.MyWork;\r\n\r\n/**\r\n * Local Storage Keys\r\n * @type {Readonly<{taskId: string}>}\r\n */\r\nconst localStorageKey = Object.freeze({\r\n taskId: `${moduleName}_taskId`\r\n});\r\n\r\n/**\r\n * Store Selected Module Item id (task id) to the local Storage\r\n * @param {number} id task id\r\n */\r\nconst storeSelectedModuleItemId = id =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.taskId),\r\n id.toString()\r\n );\r\n\r\n/**\r\n * Get Stored Selected Module Item id (task id) from local Storage\r\n * @returns {Number|number}\r\n */\r\nconst getStoredSelectedModuleItemId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.taskId)\r\n );\r\n return id ? (isNaN(id) ? -1 : Number(id)) : -1;\r\n};\r\n\r\nexport { storeSelectedModuleItemId, getStoredSelectedModuleItemId };\r\n","const iconApplication = \"mdi-appModule\";\r\nconst iconBrowse = \"mdi-dots-vertical\";\r\nconst iconConfigure = \"mdi-cog-outline\";\r\nconst iconLogOut = \"mdi-account-arrow-right-outline \";\r\nconst iconMenuDown = \"mdi-menu-down\";\r\nconst iconMenu = \"mdi-menu\";\r\n\r\n// Chevron\r\nconst iconChevronDown = \"mdi-chevron-down\";\r\nconst iconChevronUp = \"mdi-chevron-up\";\r\nconst iconChevronLeft = \"mdi-chevron-left\";\r\nconst iconChevronRight = \"mdi-chevron-right\";\r\n\r\nconst iconDotsHorizontal = \"mdi-dots-horizontal\";\r\nconst iconDotsHorizontalCircleOutline = \"mdi-dots-horizontal-circle-outline\";\r\n\r\n// Arrow\r\nconst iconArrowRightDrop = \"mdi-arrow-right-drop-circle-outline\";\r\nconst iconArrowLeftDrop = \"mdi-arrow-left-drop-circle-outline\";\r\nconst iconArrowDownDrop = \"mdi-arrow-down-drop-circle-outline\";\r\nconst iconArrowUpDrop = \"mdi-arrow-up-drop-circle-outline \";\r\nconst iconArrowUpCircle = \"mdi-arrow-up-thin-circle-outline\";\r\nconst iconArrowUpThick = \"mdi-arrow-up-thick\";\r\nconst iconArrowUpThin = \"mdi-arrow-up-thin\";\r\n\r\nconst iconAccount = \"mdi-account-outline\";\r\nconst iconAccountCheck = \"mdi-account-check-outline\";\r\nconst iconManager = \"mdi-account-tie\";\r\nconst iconAccountArrowRight = \"mdi-account-arrow-right-outline\";\r\nconst iconSearch = \"mdi-magnify\";\r\nconst iconPrinter = \"mdi-printer\";\r\nconst iconNavigateBack = \"mdi-chevron-left\";\r\nconst iconNavigateToDetails = \"mdi-chevron-right\";\r\nconst iconView = \"mdi-table-search \";\r\nconst iconAdd = \"mdi-plus\";\r\nconst iconMinus = \"mdi-minus\";\r\nconst iconEdit = \"mdi-pencil-outline\";\r\nconst iconSave = \"mdi-content-save-outline\";\r\nconst iconUndo = \"mdi-undo\";\r\nconst iconTrash = \"mdi-trash-can-outline\";\r\nconst iconClear = \"mdi-close-outline \";\r\nconst iconRefresh = \"mdi-cached \";\r\nconst iconPhone = \"mdi-cellphone-basic\";\r\nconst iconCalendar = \"mdi-calendar\";\r\nconst iconCalendarToday = \"mdi-calendar-today\";\r\nconst iconNotification = \"mdi-bell-outline\";\r\nconst iconNotificationAdd = \"mdi-bell-plus-outline\";\r\nconst iconNotificationRemove = \"mdi-bell-remove-outline\";\r\nconst iconNotificationCheck = \"mdi-bell-check-outline\";\r\nconst iconNote = \"mdi-message-bulleted\";\r\nconst iconAttachment = \"mdi-paperclip\";\r\nconst iconParts = \"mdi-toolbox\";\r\nconst iconAttribute = \"mdi-tag-text-outline\";\r\nconst iconCheck = \"mdi-check\";\r\nconst iconClose = \"mdi-close\";\r\nconst iconClock = \"mdi-clock-outline\";\r\nconst iconAnnouncement = \"mdi-bullhorn-outline\";\r\nconst iconTask = \"mdi-calendar-check-outline\";\r\nconst iconRun = \"mdi-run-fast\";\r\nconst iconDashboard = \"mdi-view-dashboard-outline\";\r\nconst iconFileEdit = \"mdi-file-document-edit-outline\";\r\nconst iconFileView = \"mdi-file-search-outline\";\r\nconst iconCaps = \"mdi-keyboard-caps\";\r\nconst iconReindex = \"mdi-shuffle-disabled\";\r\nconst iconReport = \"mdi-package\";\r\nconst iconSort = \"mdi-sort\";\r\nconst iconReload = \"mdi-reload\";\r\nconst iconHint = \"mdi-alert-circle-outline\";\r\nconst iconRestore = \"mdi-backup-restore\";\r\n\r\n// Application Modules\r\nconst iconFolderOutline = \"mdi-folder-outline\";\r\nconst iconCategories = \"mdi-bookshelf\";\r\nconst iconEvents = \"mdi-folder-clock-outline\";\r\nconst iconTasks = \"mdi-calendar-multiple-check\";\r\nconst iconProjects = \"mdi-calendar-clock-outline\";\r\n\r\n// Folder (record types)\r\nconst iconFolder = \"mdi-folder-outline\"; //\"mdi-folder\";\r\nconst iconFolderMultiple = \"mdi-folder-multiple-outline\";\r\nconst iconFolderPlus = \"mdi-folder-plus\";\r\nconst iconFolderPlusOutline = \"mdi-folder-plus-outline\";\r\nconst iconFolderUpload = \"mdi-folder-upload\";\r\nconst iconFolderUploadOutline = \"mdi-folder-upload-outline\";\r\nconst iconFile = \"mdi-file-document-outline\";\r\nconst iconFileDetails = \"mdi-view-list-outline \";\r\nconst iconFileMultiple = \"mdi-file-document-multiple-outline\";\r\nconst iconFolderFileOutline = \"mdi-folder-file-outline\";\r\nconst iconUploadFile = \"mdi-file-upload-outline\";\r\nconst iconDocument = \"mdi-folder-outline\"; //\"mdi-folder\";\r\nconst iconDocumentOutline = \"mdi-folder-file-outline\";\r\nconst iconRecord = \"mdi-file-outline\";\r\nconst iconRecordMultiple = \"mdi-file-multiple-outline\";\r\nconst iconFolderArrowLeftOutline = \"mdi-arrow-up-left\"; // \"mdi-folder-arrow-left-outline\";\r\nconst iconFilePreview = \"mdi-file-search-outline \";\r\nconst iconJumpToFolder = \"mdi-folder-arrow-up-outline\";\r\nconst iconFolderRefresh = \"mdi-folder-refresh-outline\";\r\n\r\nconst iconCopy = \"mdi-content-copy\";\r\nconst iconCut = \"mdi-content-cut\";\r\nconst iconPaste = \"mdi-content-paste\";\r\nconst iconPasteShortcut = \"mdi-link-variant\";\r\nconst iconJumpToOriginal = \"mdi-origin\";\r\n\r\nconst iconMenuRight = \"mdi-menu-right\";\r\n\r\n// File type icons\r\nconst iconFilePdf = \"mdi-file-pdf-box\";\r\nconst iconFileWord = \"mdi-file-word-box-outline\";\r\nconst iconExcel = \"mdi-microsoft-excel\";\r\nconst iconFileJpg = \"mdi-file-jpg-box\";\r\nconst iconFileGif = \"mdi-file-gif-box\";\r\nconst iconFileImage = \"mdi-file-image-outline\";\r\nconst iconFilePng = \"mdi-file-png-box\";\r\nconst iconFilePowerpoint = \"mdi-file-powerpoint-outline\";\r\nconst iconFileVideo = \"mdi-file-video-outline\";\r\nconst iconXml = \"mdi-xml\";\r\nconst iconHtml = \"mdi-file-code-outline\";\r\nconst iconGlobe = \"mdi-web\";\r\n\r\n// Agenda Management\r\nconst iconEvent = \"mdi-folder-clock-outline\";\r\nconst iconAgendaSection = \"mdi-folder-file-outline\";\r\nconst iconAgendaSectionPlus = \"mdi-folder-multiple-plus\";\r\nconst iconAgendaItem = \"mdi-clipboard-text-clock-outline\"; // \"mdi-folder-text\";\r\nconst iconSubmit = \"mdi-earth-plus\";\r\nconst iconRecall = \"mdi-earth-minus\";\r\nconst iconRollCall = \"mdi-account-multiple\";\r\nconst iconClerkModule = \"mdi-account-star\";\r\nconst iconLegislatorsNotepad = \"mdi-book\";\r\n\r\nconst iconPostMeeting = \"mdi-clock-check-outline\";\r\nconst iconUnPostMeeting = \"mdi-clock-remove-outline \";\r\n\r\nconst iconPlay = \"mdi-play\";\r\nconst iconCancel = \"mdi-close-circle-outline\";\r\nconst iconSuspend = \"mdi-cancel\";\r\n\r\n// Question/Warning/Info\r\nconst iconQuestion = \"mdi-help-circle-outline\";\r\nconst iconWarning = \"mdi-alert-outline\";\r\nconst iconInfo = \"mdi-information-outline\";\r\nconst iconError = \"mdi-alert-octagon-outline\";\r\nconst iconExclamation = \"mdi-alert-circle-outline\";\r\n\r\nconst iconCheckbox = \"mdi-checkbox-outline\";\r\nconst iconCheckboxBlank = \"mdi-checkbox-blank-outline\";\r\n\r\n// Search\r\nconst iconFileSearch = \"mdi-file-search-outline\";\r\nconst iconFolderSearch = \"mdi-folder-search-outline\";\r\nconst iconFullTextSearch = \"mdi-text-box-search-outline\";\r\n\r\n// Search operators\r\nconst iconDateOn = \"mdi-approximately-equal \";\r\nconst iconEqual = \"mdi-equal\";\r\nconst iconGreaterThan = \"mdi-greater-than\";\r\nconst iconGreaterThanOrEqual = \"mdi-greater-than-or-equal\";\r\nconst iconLessThan = \"mdi-less-than\";\r\nconst iconLessThanOrEqual = \"mdi-less-than-or-equal\";\r\nconst iconAsterisk = \"mdi-asterisk\";\r\n\r\n// Filter\r\nconst iconFilter = \"mdi-filter-outline\";\r\nconst iconFilterMenu = \"mdi-filter-menu-outline\";\r\nconst iconResetFilter = \"mdi-filter-remove-outline\";\r\n\r\nconst iconShowPassword = \"mdi-eye-outline\";\r\nconst iconHidePassword = \"mdi-eye-off-outline\";\r\n//\r\n//\r\n// Questys specific\r\nconst iconDatabase = \"mdi-database-outline\";\r\nconst iconDatabaseLookup = \"mdi-database-arrow-left-outline\";\r\nconst iconFiles = \"mdi-file-multiple\";\r\nconst iconDownload = \"mdi-file-download-outline\";\r\nconst iconPrint = \"mdi-printer\";\r\nconst iconScanner = \"mdi-scanner\";\r\nconst iconSend = \"mdi-file-send\";\r\n\r\nconst iconLink = \"mdi-link\";\r\nconst iconAcquire = \"mdi-tray-arrow-down\";\r\n\r\n// Record Attribute icons\r\nconst iconLock = \"mdi-lock-outline\";\r\nconst iconUnLock = \"mdi-lock-open-variant-outline\";\r\nconst iconReadOnly = \"mdi-pencil-off-outline\";\r\nconst iconDraft = \"mdi-clipboard-edit-outline\";\r\n\r\n// Record source control icons\r\nconst iconFileCheckOut = \"mdi-file-check-outline\";\r\n\r\nconst iconFileCheckOutForSign = \"mdi-file-sign\";\r\n\r\nconst iconFileCheckIn = iconUploadFile;\r\nconst iconFileRelease = \"mdi-file-restore-outline \";\r\n\r\n// Import/Export\r\nconst iconExport = \"mdi-export\";\r\nconst iconImport = \"mdi-import\";\r\n\r\n// Document Imaging Viewer\r\nconst iconZoomIn = \"mdi-magnify-plus-outline\";\r\nconst iconZoomOut = \"mdi-magnify-minus-outline\";\r\nconst iconFitToPage = \"mdi-fit-to-page-outline\";\r\nconst iconResize = \"mdi-resize\";\r\nconst iconFitToWidth = \"mdi-file-swap-outline\";\r\nconst iconRotateLeft = \"mdi-rotate-left-variant\";\r\nconst iconRotateRight = \"mdi-rotate-right-variant\";\r\nconst iconDropDownload = \"mdi-arrow-down-bold-box-outline\";\r\nconst iconFullBack = \"mdi-skip-backward\";\r\nconst iconFullForward = \"mdi-skip-forward\";\r\nconst iconSingleForward = \"mdi-skip-next\";\r\nconst iconSingleBackward = \"mdi-skip-previous\";\r\nconst iconPage = \"mdi-book-open-page-variant\";\r\nconst iconMovePage = \"mdi-swap-vertical\";\r\n\r\n// Annotations\r\nconst iconAnnotation = \"mdi-format-annotation-plus\";\r\nconst iconRectangle = \"mdi-rectangle-outline\";\r\nconst iconEllipse = \"mdi-ellipse-outline\";\r\nconst iconSingleLine = \"mdi-vector-line\";\r\nconst iconMultipleLines = \"mdi-vector-polyline\";\r\nconst iconFreeHand = \"mdi-signature-freehand\";\r\nconst iconPolygon = \"mdi-shape-polygon-plus\";\r\nconst iconHighlight = \"mdi-format-color-highlight\";\r\nconst iconText = \"mdi-card-text-outline\";\r\nconst iconRedaction = \"mdi-rectangle\";\r\nconst iconStamp = \"mdi-stamper\";\r\n\r\n// File Types\r\nconst iconPdf = \"mdi-file-pdf-box\";\r\nconst iconImage = \"mdi-file-image-outline\";\r\nconst iconWord = \"mdi-file-word-outline\";\r\nconst iconJpg = \"mdi-file-jpg-box\";\r\n\r\nconst iconHistory = \"mdi-history\";\r\n\r\nconst iconPhoneWork = \"mdi-phone\";\r\nconst iconEmail = \"mdi-email\";\r\nconst iconMapMarker = \"mdi-map-marker\";\r\n\r\n// Message\r\nconst iconMessageText = \"mdi-message-text-outline\";\r\nconst iconMessageQuestion = \"mdi-message-question-outline\";\r\nconst iconMessageWarning = \"mdi-Message-alert-outline\";\r\nconst iconMessageCheck = \"mdi-message-check-outline\";\r\n\r\n// record state\r\nconst iconOnHold = \"mdi-timer-check-outline\";\r\nconst iconAccessDenied = \"mdi-close-octagon-outline\";\r\n\r\nexport {\r\n iconApplication,\r\n iconBrowse,\r\n iconConfigure,\r\n iconLogOut,\r\n iconMenuDown,\r\n iconChevronDown,\r\n iconChevronUp,\r\n iconChevronLeft,\r\n iconChevronRight,\r\n iconArrowRightDrop,\r\n iconArrowLeftDrop,\r\n iconAccount,\r\n iconAccountArrowRight,\r\n iconAccountCheck,\r\n iconArrowDownDrop,\r\n iconArrowUpDrop,\r\n iconArrowUpCircle,\r\n iconSearch,\r\n iconPrinter,\r\n iconScanner,\r\n iconNavigateBack,\r\n iconNavigateToDetails,\r\n iconView,\r\n iconAdd,\r\n iconMinus,\r\n iconEdit,\r\n iconSave,\r\n iconTrash,\r\n iconPhone,\r\n iconClear,\r\n iconRefresh,\r\n iconCalendar,\r\n iconCalendarToday,\r\n iconWarning,\r\n iconInfo,\r\n iconError,\r\n iconQuestion,\r\n iconNotification,\r\n iconNotificationAdd,\r\n iconNotificationRemove,\r\n iconNotificationCheck,\r\n iconNote,\r\n iconAttachment,\r\n iconParts,\r\n iconAttribute,\r\n iconCheck,\r\n iconClose,\r\n iconClock,\r\n iconAnnouncement,\r\n iconEvents,\r\n iconEvent,\r\n iconAgendaSection,\r\n iconAgendaSectionPlus,\r\n iconAgendaItem,\r\n iconTask,\r\n iconTasks,\r\n iconRun,\r\n iconDashboard,\r\n iconFolder,\r\n iconFolderMultiple,\r\n iconFolderPlus,\r\n iconFolderPlusOutline,\r\n iconFolderUpload,\r\n iconFolderUploadOutline,\r\n iconCategories,\r\n iconProjects,\r\n iconLock,\r\n iconUnLock,\r\n iconReadOnly,\r\n iconDraft,\r\n iconLink,\r\n iconAcquire,\r\n iconShowPassword,\r\n iconHidePassword,\r\n iconDatabase,\r\n iconFiles,\r\n iconDownload,\r\n iconPdf,\r\n iconImage,\r\n iconJpg,\r\n iconWord,\r\n iconZoomIn,\r\n iconZoomOut,\r\n iconFitToPage,\r\n iconResize,\r\n iconFitToWidth,\r\n iconFileSearch,\r\n iconFullTextSearch,\r\n iconFolderSearch,\r\n iconFilter,\r\n iconFolderOutline,\r\n iconFilterMenu,\r\n iconDateOn,\r\n iconEqual,\r\n iconGreaterThan,\r\n iconGreaterThanOrEqual,\r\n iconLessThan,\r\n iconLessThanOrEqual,\r\n iconAsterisk,\r\n iconFile,\r\n iconUploadFile,\r\n iconDocument,\r\n iconDocumentOutline,\r\n iconRecord,\r\n iconRecordMultiple,\r\n iconCheckbox,\r\n iconCheckboxBlank,\r\n iconRotateLeft,\r\n iconRotateRight,\r\n iconDropDownload,\r\n iconPrint,\r\n iconFullBack,\r\n iconFullForward,\r\n iconSingleForward,\r\n iconSingleBackward,\r\n iconExport,\r\n iconImport,\r\n iconPlay,\r\n iconCancel,\r\n iconSuspend,\r\n iconRectangle,\r\n iconEllipse,\r\n iconAnnotation,\r\n iconFreeHand,\r\n iconHighlight,\r\n iconFileCheckOut,\r\n iconFileCheckIn,\r\n iconFileRelease,\r\n iconDotsHorizontal,\r\n iconDotsHorizontalCircleOutline,\r\n iconFolderArrowLeftOutline,\r\n iconHistory,\r\n iconFileMultiple,\r\n iconFileDetails,\r\n iconFolderFileOutline,\r\n iconFilePdf,\r\n iconFileWord,\r\n iconExcel,\r\n iconFileJpg,\r\n iconFilePng,\r\n iconFilePowerpoint,\r\n iconFileVideo,\r\n iconFileImage,\r\n iconFileGif,\r\n iconFileEdit,\r\n iconFileView,\r\n iconXml,\r\n iconHtml,\r\n iconSend,\r\n iconUndo,\r\n iconSingleLine,\r\n iconRedaction,\r\n iconStamp,\r\n iconText,\r\n iconPolygon,\r\n iconMultipleLines,\r\n iconMenu,\r\n iconPage,\r\n iconMovePage,\r\n iconDatabaseLookup,\r\n iconFilePreview,\r\n iconPhoneWork,\r\n iconMessageText,\r\n iconMessageQuestion,\r\n iconMessageWarning,\r\n iconMessageCheck,\r\n iconEmail,\r\n iconMapMarker,\r\n iconMenuRight,\r\n iconArrowUpThick,\r\n iconArrowUpThin,\r\n iconGlobe,\r\n iconSubmit,\r\n iconRecall,\r\n iconCopy,\r\n iconCut,\r\n iconPaste,\r\n iconPostMeeting,\r\n iconUnPostMeeting,\r\n iconJumpToFolder,\r\n iconManager,\r\n iconOnHold,\r\n iconAccessDenied,\r\n iconPasteShortcut,\r\n iconJumpToOriginal,\r\n iconCaps,\r\n iconReindex,\r\n iconReport,\r\n iconFolderRefresh,\r\n iconSort,\r\n iconExclamation,\r\n iconRollCall,\r\n iconLegislatorsNotepad,\r\n iconClerkModule,\r\n iconFileCheckOutForSign,\r\n iconReload,\r\n iconResetFilter,\r\n iconHint,\r\n iconRestore\r\n};\r\n","/**\r\n * This utility encapsulate local Storage functionality\r\n */\r\nimport store from \"@/store/index\";\r\n\r\n/**\r\n * get Storage Item by Storage Item's key\r\n * @param {String|string} key\r\n * @returns {string|null}\r\n */\r\nconst getLocalStorageItem = key => localStorage.getItem(key);\r\n\r\n/**\r\n * Set Storage Item by Storage Item's key\r\n * @param {String|string} key\r\n * @param {String|string} value\r\n */\r\nconst setLocalStorageItem = (key, value) => localStorage.setItem(key, value);\r\n\r\n/**\r\n * Remove Local Storage Item by its key\r\n * @param {String|string} key\r\n */\r\nconst removeLocalStorageItem = key => localStorage.removeItem(key);\r\n\r\n/**\r\n * Get repository dependant Local Storage Key\r\n * @param {String|string} key\r\n * @return {String|string}\r\n */\r\nconst repoLocalStorageKey = key => {\r\n const repository = store?.getters[\"user/repository\"] ?? \"\";\r\n return `${repository}_${key}`;\r\n};\r\n\r\n/**\r\n * repo User Local Storage Key\r\n * @param {String|string} key\r\n * @return {String|string} repo User Local Storage Key\r\n */\r\nconst repoUserLocalStorageKey = key => {\r\n const repository = store?.getters[\"user/repository\"] ?? \"\";\r\n const actorId = store?.getters[\"user/actorId\"] ?? -1;\r\n\r\n return `${repository}_${actorId}_${key}`;\r\n};\r\n\r\nexport {\r\n getLocalStorageItem,\r\n setLocalStorageItem,\r\n removeLocalStorageItem,\r\n repoLocalStorageKey,\r\n repoUserLocalStorageKey\r\n};\r\n","/**\r\n * agenda Document Type\r\n * @type {Readonly<{webHtmlAgenda: number, webEnabledAgenda: number, webEnabledAgendaMediaManager: number, agendaPacket: number, webHtmlAgendaMediaManager: number, agendaDocument: number, agendaOutline: number, agendaDraft: number}>}\r\n */\r\nimport {\r\n iconFilePdf,\r\n iconWord,\r\n iconHtml,\r\n iconEvent,\r\n iconAgendaItem,\r\n iconAgendaSection,\r\n iconRollCall,\r\n iconClerkModule,\r\n iconLegislatorsNotepad\r\n} from \"@/design/icon/iconConst\";\r\nimport { categoryType } from \"@/model/category/categoryModel\";\r\n\r\n/**\r\n * agenda Document Type\r\n * @type {Readonly<{webHtmlAgenda: number, webEnabledAgenda: number, webEnabledAgendaMediaManager: number, agendaPacket: number, webHtmlAgendaMediaManager: number, agendaDocument: number, agendaOutline: number, agendaDraft: number}>}\r\n */\r\nconst agendaDocumentType = Object.freeze({\r\n agendaDocument: 0,\r\n agendaDraft: 1,\r\n agendaPacket: 2,\r\n agendaOutline: 3,\r\n webEnabledAgenda: 4,\r\n webEnabledAgendaMediaManager: 5,\r\n webHtmlAgenda: 6,\r\n webHtmlAgendaMediaManager: 7\r\n});\r\n\r\n/**\r\n * meeting Minutes\r\n * @type {Readonly<{summary: number, webEnabledMediaManager: number, webEnabled: number, webHtmlMediaManager: number, webHtmlEnabled: number}>}\r\n */\r\nconst meetingMinutes = Object.freeze({\r\n summary: 0,\r\n webEnabled: 1,\r\n webEnabledMediaManager: 2,\r\n webHtmlEnabled: 3,\r\n webHtmlMediaManager: 4\r\n});\r\n\r\n/**\r\n * meeting Minute Types\r\n * @type {({icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number})[]}\r\n */\r\nconst meetingMinutesTypes = Object.freeze([\r\n {\r\n type: meetingMinutes.summary,\r\n label: \"Meeting Minutes Summary\",\r\n description: \"Generate Meeting Minutes Summary\",\r\n categoryType: categoryType.minutesSummary,\r\n icon: iconWord\r\n },\r\n {\r\n type: meetingMinutes.webEnabled,\r\n label: \"Web Enabled Meeting Minutes\",\r\n description:\r\n \"Generate Web Enabled Meeting Minutes for external meeting publishing\",\r\n categoryType: categoryType.minutesSummary,\r\n icon: iconHtml\r\n },\r\n {\r\n type: meetingMinutes.webEnabledMediaManager,\r\n label: \"Web Enabled Meeting Minutes Media Manager\",\r\n description:\r\n \"Generate Web Enabled Meeting Minutes for Media Manager e.g. Granicus\",\r\n categoryType: categoryType.minutesSummary,\r\n icon: iconHtml\r\n },\r\n {\r\n type: meetingMinutes.webHtmlEnabled,\r\n label: \"Web HTML Meeting Minutes\",\r\n description: \"Generate Web HTML Meeting Minutes\",\r\n categoryType: categoryType.minutesSummary,\r\n icon: iconHtml\r\n },\r\n {\r\n type: meetingMinutes.webHtmlMediaManager,\r\n label: \"Web HTML Meeting Minutes Media Manager\",\r\n description:\r\n \"Generate HTML Meeting Minutes for Media Manager e.g. Granicus\",\r\n categoryType: categoryType.minutesSummary,\r\n icon: iconHtml\r\n }\r\n]);\r\n\r\n/**\r\n * find Meeting Minutes Type\r\n * @param {number} type Meeting Minutes Type\r\n * @return {unknown}\r\n */\r\nconst findMeetingMinutesType = type => {\r\n return meetingMinutesTypes?.find(el => el?.type === type);\r\n};\r\n\r\n/**\r\n * agenda Document Types\r\n * @type {({icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number}|{icon: string, description: string, label: string, type: number})[]}\r\n */\r\nconst agendaDocumentTypes = Object.freeze([\r\n {\r\n type: agendaDocumentType.agendaDocument,\r\n label: \"Agenda Document\",\r\n description: \"Generate Agenda Document\",\r\n categoryType: categoryType.agendaSystemDocuments,\r\n icon: iconWord\r\n },\r\n {\r\n type: agendaDocumentType.agendaDraft,\r\n label: \"Agenda Draft\",\r\n description: \"Generate Draft of Agenda Document\",\r\n categoryType: categoryType.agendaSystemDocuments,\r\n icon: iconWord\r\n },\r\n {\r\n type: agendaDocumentType.agendaPacket,\r\n label: \"Agenda Packet\",\r\n description: \"Generate Agenda (PDF) Packet\",\r\n categoryType: categoryType.agendaPacket,\r\n icon: iconFilePdf\r\n },\r\n {\r\n type: agendaDocumentType.agendaOutline,\r\n label: \"Agenda Outline\",\r\n description: \"Generate (PDF) Outline of Agenda\",\r\n categoryType: categoryType.agendaSystemDocuments,\r\n icon: iconFilePdf\r\n },\r\n {\r\n type: agendaDocumentType.webEnabledAgenda,\r\n label: \"Web Enabled Agenda\",\r\n description: \"Generate Web Enabled Agenda for external meeting publishing\",\r\n icon: iconHtml\r\n },\r\n {\r\n type: agendaDocumentType.webEnabledAgendaMediaManager,\r\n label: \"Web Enabled Agenda Media Manager\",\r\n description: \"Generate Web Enabled Agenda for Media Manager e.g. Granicus\",\r\n categoryType: categoryType.agendaSystemDocuments,\r\n icon: iconHtml\r\n },\r\n {\r\n type: agendaDocumentType.webHtmlAgenda,\r\n label: \"Web Html Agenda\",\r\n description: \"Generate Web Html Agenda for external meeting publishing\",\r\n categoryType: categoryType.agendaSystemDocuments,\r\n icon: iconHtml\r\n }\r\n]);\r\n\r\n/**\r\n * find Agenda Document Type\r\n * @param {number} type Agenda Document Type\r\n * @return {{type: number, label: string, description: string, categoryType: number, icon: string}}\r\n */\r\nconst findAgendaDocumentType = type => {\r\n return agendaDocumentTypes?.find(el => el?.type === type);\r\n};\r\n\r\n/**\r\n * Agenda Packet Tabs Options\r\n * @type {Readonly<{itemNumbering: number, overallNumbering: number, noNumbering: number}>}\r\n */\r\nconst agendaPacketTabOptions = Object.freeze({\r\n noNumbering: 0,\r\n itemNumbering: 1,\r\n overallNumbering: 2\r\n});\r\n\r\n/**\r\n * Agenda Packet Tabs Option\r\n * @type {({name: string, type: number}|{name: string, type: number}|{name: string, type: number})[]}\r\n */\r\nconst agendaPacketTabOption = Object.freeze([\r\n {\r\n type: agendaPacketTabOptions.noNumbering,\r\n name: \"No Numbering\"\r\n },\r\n {\r\n type: agendaPacketTabOptions.itemNumbering,\r\n name: \"Item Numbering\"\r\n },\r\n {\r\n type: agendaPacketTabOptions.overallNumbering,\r\n name: \"Overall Numbering\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Agenda Packet Tab Type\r\n * @param {number} type Agenda Packet Tab Type\r\n * @return {{type: number, name: string}}\r\n */\r\nconst findAgendaPacketTabType = type => {\r\n return agendaPacketTabOption?.find(el => el?.type === type);\r\n};\r\n\r\n/**\r\n * Create Agenda Packet Query Model\r\n * @param {Number} NumberingType\r\n * @param {Number} NumberPosition\r\n * @param {Array} NumberingOptions\r\n * @param {boolean} InsertPageSeparator\r\n * @param {boolean} IncludeAgendaItemLink\r\n * @param {boolean} IncludeLinksBackToItem\r\n * @param {String} LinkStaticText\r\n * @param {String} LinkText\r\n * @param {String} LinkNote\r\n * @return {{InsertPageSeparator: boolean, NumberingType: Number, NumberPosition: Number, NumberingOptions: Array, LinkNote: String, LinkStaticText: String, IncludeLinksBackToItem: boolean, IncludeAgendaItemLink: boolean, LinkText: String}}\r\n */\r\nconst AgendaPacketQueryModel = (\r\n NumberingType = agendaPacketTabOptions.noNumbering,\r\n NumberPosition = 1,\r\n NumberingOptions = [],\r\n InsertPageSeparator = false,\r\n IncludeAgendaItemLink = false,\r\n IncludeLinksBackToItem = false,\r\n LinkStaticText = \"\",\r\n LinkText = \"\",\r\n LinkNote = \"\"\r\n) => {\r\n return {\r\n NumberingType: NumberingType,\r\n NumberPosition: NumberPosition,\r\n NumberingOptions: NumberingOptions,\r\n InsertPageSeparator: InsertPageSeparator,\r\n IncludeAgendaItemLink: IncludeAgendaItemLink,\r\n IncludeLinksBackToItem: IncludeLinksBackToItem,\r\n LinkStaticText: LinkStaticText,\r\n LinkText: LinkText,\r\n LinkNote: LinkNote\r\n };\r\n};\r\n\r\n/**\r\n * create Agenda Packet Model\r\n * @return {{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 createAgendaPacketOption = () => {\r\n return {\r\n numberPosition: 0,\r\n currentTab: agendaPacketTabOptions.itemNumbering,\r\n upOptions: [\r\n {\r\n value: 0,\r\n text: \"Upper\",\r\n disabled: false\r\n },\r\n {\r\n value: 1,\r\n text: \"Upper Middle\",\r\n disabled: false\r\n },\r\n {\r\n value: 2,\r\n text: \"Upper Right\",\r\n disabled: false\r\n }\r\n ],\r\n downOptions: [\r\n {\r\n value: 3,\r\n text: \"Lower\",\r\n disabled: false\r\n },\r\n {\r\n value: 4,\r\n text: \"Lower Middle\",\r\n disabled: false\r\n },\r\n {\r\n value: 5,\r\n text: \"Lower Right\",\r\n disabled: false\r\n }\r\n ],\r\n item: true,\r\n itemTitle: true,\r\n page: true,\r\n pages: true,\r\n itemPrefixValue: \"Item No.\",\r\n itemSuffixValue: \"\",\r\n itemTitlePrefixValue: \"\",\r\n itemTitleLengthValue: \"\",\r\n pagePrefixValue: \" - \",\r\n pageSuffixValue: \"\",\r\n pagesPrefixValue: \" of \",\r\n pagesSuffixValue: \"\",\r\n includeLinkBackUp: true,\r\n includePageSeparator: true,\r\n includeLinkAgenda: true,\r\n linkStaticText:\r\n \"The following page(s) contains the backup material for Agenda item\",\r\n agendaItemTitle: \"{ Agenda Item Title }\",\r\n linkNote: \"Please scroll down to view the backup material\"\r\n };\r\n};\r\n\r\n/**\r\n * Agenda Packet Content\r\n * Expand on Demand\r\n * @type {Readonly<{pageSuffix: string, itemSuffix: string, pagePrefix: string, pageCountSuffix: string, itemTitlePrefix: string, itemPrefix: string, itemTitleLength: string, pageCountPrefix: string}>}\r\n */\r\nconst agendaPacketContent = Object.freeze({\r\n itemPrefix: \"Item.Number.Prefix\",\r\n itemSuffix: \"Item.Number.Sufix\",\r\n itemTitlePrefix: \"Item.Title.Prefix\",\r\n itemTitleLength: \"Item.Title.Length\",\r\n pagePrefix: \"Item.Page.Prefix\",\r\n pageSuffix: \"Item.Page.Sufix\",\r\n pageCountPrefix: \"Item.PagesCount.Prefix\",\r\n pageCountSuffix: \"Item.PagesCount.Sufix\"\r\n});\r\n\r\n/**\r\n * Agenda Meeting Tabs Option\r\n * @type {Readonly<{item: number, section: number, legislatorsNotepad: number, clerkModule: number, meeting: number, rollCall: number}>}\r\n */\r\nconst agendaMeetingTabOptions = Object.freeze({\r\n meeting: 0,\r\n section: 1,\r\n item: 2,\r\n clerkModule: 3,\r\n legislatorsNotepad: 4,\r\n rollCall: 5\r\n});\r\n\r\n/**\r\n * Agenda Meeting Tabs Option\r\n * @type {({name: string, icon: string, type: number}|{name: string, icon: string, type: number})[]}\r\n */\r\nconst agendaMeetingTabOption = Object.freeze([\r\n {\r\n type: agendaMeetingTabOptions.meeting,\r\n name: \"Meeting\",\r\n icon: iconEvent\r\n },\r\n {\r\n type: agendaMeetingTabOptions.rollCall,\r\n name: \"Roll Call\",\r\n icon: iconRollCall\r\n }\r\n]);\r\n\r\n/**\r\n * Agenda Section Tabs Option\r\n * @type {({name: string, icon: string, type: number}|{name: string, icon: string, type: number}|{name: string, icon: string, type: number})[]}\r\n */\r\nconst agendaSectionTabOption = Object.freeze([\r\n {\r\n type: agendaMeetingTabOptions.section,\r\n name: \"Section\",\r\n icon: iconAgendaSection\r\n },\r\n {\r\n type: agendaMeetingTabOptions.clerkModule,\r\n name: \"Clerk Module\",\r\n icon: iconClerkModule\r\n },\r\n {\r\n type: agendaMeetingTabOptions.legislatorsNotepad,\r\n name: \"Legislators Notepad\",\r\n icon: iconLegislatorsNotepad\r\n }\r\n]);\r\n\r\n/**\r\n * Agenda Item Tabs Option\r\n * @type {({name: string, icon: string, type: number}|{name: string, icon: string, type: number}|{name: string, icon: string, type: number})[]}\r\n */\r\nconst agendaItemTabOption = Object.freeze([\r\n {\r\n type: agendaMeetingTabOptions.item,\r\n name: \"Item\",\r\n icon: iconAgendaItem\r\n },\r\n {\r\n type: agendaMeetingTabOptions.clerkModule,\r\n name: \"Clerk Module\",\r\n icon: iconClerkModule\r\n },\r\n {\r\n type: agendaMeetingTabOptions.legislatorsNotepad,\r\n name: \"Legislators Notepad\",\r\n icon: iconLegislatorsNotepad\r\n }\r\n]);\r\n\r\nexport {\r\n agendaDocumentType,\r\n meetingMinutes,\r\n agendaPacketTabOptions,\r\n agendaDocumentTypes,\r\n meetingMinutesTypes,\r\n findAgendaDocumentType,\r\n findMeetingMinutesType,\r\n AgendaPacketQueryModel,\r\n createAgendaPacketOption,\r\n agendaPacketTabOption,\r\n findAgendaPacketTabType,\r\n agendaPacketContent,\r\n agendaMeetingTabOption,\r\n agendaMeetingTabOptions,\r\n agendaSectionTabOption,\r\n agendaItemTabOption\r\n};\r\n","// import { getPlatform, isMobile } from \"@/services/dom/windowService\";\r\n\r\n/**\r\n * indicating whether Scanning is supported by current platform\r\n * @return {boolean} returns boolean true, if Scanning is supported by current platform\r\n */\r\nconst supportedScanning = () => {\r\n return true;\r\n\r\n //\r\n // Deprecated: This feature is no longer recommended.\r\n //\r\n //return !isMobile() && getPlatform()?.toLowerCase() === \"windows\";\r\n};\r\n\r\nexport { supportedScanning };\r\n","// axios lib\r\nimport axios from \"axios\";\r\n\r\n// services\r\nimport { webApiTimeOut, webApiUrl } from \"@/services/config/configService\";\r\n\r\n/**\r\n * Current Axios instance\r\n * @type {Object} Axios instance\r\n * @private\r\n */\r\nlet _axios = undefined;\r\n\r\n/**\r\n * Get Axios Instance\r\n * (if current Axios is undefined, then new Axios Instance will be created, else current Axios will be returned)\r\n * @return {Object} returns current Axios Instance\r\n */\r\nfunction getAxios() {\r\n if (_axios) {\r\n return _axios;\r\n }\r\n\r\n /**\r\n * Create Axios Instance on demand (when is needed)\r\n */\r\n _axios = createAxios();\r\n\r\n /**\r\n * request interceptors\r\n */\r\n _axios.interceptors.request.use(request => {\r\n /**\r\n * Remarks: Axios calls request interceptors before sending the request,\r\n * so we can use request interceptors to modify the request here when/if needed\r\n */\r\n // console.log(\r\n // `intercepted request:`,\r\n // `method:${request.method} url:${request.url}`\r\n // );\r\n\r\n /**\r\n * One of the most common use cases for interceptors is handling authorization.\r\n * Interceptors let us set the authorization header automatically on all requests as shown below.\r\n * REMARKS: tested but still does not work as expected when changing repositories ...\r\n */\r\n // request.headers.authorization = _token;\r\n\r\n // Important: request interceptors **must** return the request.\r\n return request;\r\n });\r\n\r\n /**\r\n * response interceptors\r\n */\r\n _axios.interceptors.response.use(response => {\r\n /**\r\n * Axios calls response interceptors after it sends the request and receives a response.\r\n * The response parameter to interceptors is the Axios response object,\r\n * the same object you get when you do await axios.get()\r\n */\r\n // console.log(`intercepted response data:`, response.data);\r\n\r\n /**\r\n * we can debug and analyze response.data here\r\n */\r\n\r\n // Important: response interceptors **must** return the response.\r\n return response;\r\n });\r\n\r\n return _axios;\r\n}\r\n\r\n/**\r\n * creates a new Axios instance\r\n * @return {Object} return a new Axios instance\r\n */\r\nfunction createAxios() {\r\n // console.log(`Create axios instance using webApiUrl:`, webApiUrl);\r\n // creates a new Axios instance to set custom defaults for our application\r\n return axios.create({\r\n baseURL: webApiUrl,\r\n withCredentials: true,\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\"\r\n },\r\n timeout: webApiTimeOut // Throw an error if API call takes longer then specified in webApiTimeOut\r\n });\r\n}\r\n\r\nexport { getAxios };\r\n","// utils\r\nimport {\r\n getLocalStorageItem,\r\n setLocalStorageItem,\r\n repoUserLocalStorageKey\r\n} from \"@/utils/localStorageUtility\";\r\n\r\n// model\r\nimport { moduleNames } from \"@/model/solution/moduleModel\";\r\n\r\n/**\r\n * module Name\r\n * @type {string}\r\n */\r\nconst moduleName = moduleNames.Agenda;\r\n\r\n/**\r\n * local Storage Key\r\n * @type {Readonly<{agendaTemplateId: string, expandedId: string, folderId: string}>}\r\n */\r\nconst localStorageKey = Object.freeze({\r\n folderId: `${moduleName}_folderId`,\r\n expandedId: `${moduleName}_expandedId`,\r\n agendaTemplateId: `${moduleName}_agendaTemplateId`\r\n});\r\n\r\n/**\r\n * Store Selected Module Item id (Selected meeting's record id) to the local Storage\r\n * @param {number}id Module Item id\r\n */\r\nconst storeSelectedModuleItemId = id =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.folderId),\r\n id.toString()\r\n );\r\n\r\n/**\r\n * store Selected Module expanded id\r\n * @param {Number|number} expandedId expanded id\r\n */\r\nconst storeSelectedModuleExpandedId = expandedId =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.expandedId),\r\n expandedId.toString()\r\n );\r\n\r\n/**\r\n * Get Selected Module Item id (Selected meeting's record id) from local Storage\r\n * @returns {Number|number}\r\n */\r\nconst getStoredSelectedModuleItemId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.folderId)\r\n );\r\n return id ? (isNaN(id) ? 0 : Number(id)) : 0;\r\n};\r\n\r\n/**\r\n * store Agenda Template Id\r\n * @param {number} id Agenda Template Id\r\n */\r\nconst storeAgendaTemplateId = id =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.agendaTemplateId),\r\n id.toString()\r\n );\r\n\r\n/**\r\n * get Stored Agenda Template Id\r\n * @return {number|number} Stored Agenda Template Id\r\n */\r\nconst getStoredAgendaTemplateId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.agendaTemplateId)\r\n );\r\n return id ? (isNaN(id) ? -1 : Number(id)) : -1;\r\n};\r\n\r\n/**\r\n * get Stored Selected Module expanded id\r\n * @return {Number|number}\r\n */\r\nconst getStoredSelectedModuleExpandedId = () => {\r\n const id = getLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.expandedId)\r\n );\r\n return id ? (isNaN(id) ? -1 : Number(id)) : -1;\r\n};\r\n\r\nexport {\r\n storeSelectedModuleItemId,\r\n storeSelectedModuleExpandedId,\r\n getStoredSelectedModuleItemId,\r\n storeAgendaTemplateId,\r\n getStoredAgendaTemplateId,\r\n getStoredSelectedModuleExpandedId\r\n};\r\n","import { ruleNames } from \"@/model/rules/ruleModel\";\r\nimport { toLowerCaseSafe } from \"@/utils\";\r\nimport {\r\n colorMD,\r\n colorTheme,\r\n variantNumber,\r\n variantType\r\n} from \"@/design/colors/mdColors\";\r\nimport { Color } from \"@/design/colors/Color\";\r\n\r\n/**\r\n * Category field Name\r\n * @type {Readonly<{categoryType: string, formId: string, formName: string, name: string, id: string}>}\r\n */\r\nconst fieldName = Object.freeze({\r\n id: \"id\",\r\n name: \"name\",\r\n categoryType: \"categoryType\",\r\n formId: \"formId\",\r\n formName: \"formName\"\r\n});\r\n\r\n/**\r\n * Category field label\r\n * @type {Readonly<{categoryType: string, formId: string, formName: string, name: string, id: string}>}\r\n */\r\nconst fieldLabel = Object.freeze({\r\n id: \"Category Id\",\r\n name: \"Category Name\",\r\n categoryType: \"Category Type\",\r\n formId: \"Form Id\",\r\n formName: \"Form Name\"\r\n});\r\n\r\n/**\r\n * Category All\r\n * @type {{formId: number, name: string, id: number, fields: *[]}}\r\n */\r\nconst categoryAll = {\r\n id: -1,\r\n name: \"All Categories\",\r\n formId: 0,\r\n fields: []\r\n};\r\n\r\n/**\r\n * record Name Rules\r\n * @param {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string, autoFiling:boolean, requiredRecordName:boolean, requiredRecordNameForAutoFiling:boolean}} category Record category\r\n * @return {*[]} mixed array of types function, boolean and string\r\n */\r\nconst recordNameRules = category => {\r\n const rules = [];\r\n\r\n if (category?.requiredRecordName ?? false) {\r\n rules.push(value => !!value || ruleNames.required);\r\n }\r\n\r\n if (category?.requiredRecordNameForAutoFiling ?? false) {\r\n rules.push(value => !!value || ruleNames.requiredByAutoFiling);\r\n }\r\n\r\n return rules;\r\n};\r\n\r\n/**\r\n * record category Rules\r\n * @param {{id:number}} id Record category id\r\n * @return {*[]} mixed array of types function, boolean and string\r\n */\r\nconst recordCategoryRules = id => {\r\n const rules = [];\r\n\r\n if (id < 0) {\r\n rules.push(value => !!value || ruleNames.required);\r\n }\r\n\r\n return rules;\r\n};\r\n\r\n/**\r\n * category Type\r\n * @type {Readonly<{general: number, item: number, system: number, minutesSummary: number, otherInfoItemsDocument: number, agendaPacket: number, agendaSystemDocuments: number, section: number, backupMaterial: number, meeting: number}>}\r\n */\r\nconst categoryType = Object.freeze({\r\n general: 0,\r\n system: 1,\r\n meeting: 6,\r\n section: 7,\r\n item: 8,\r\n backupMaterial: 12,\r\n agendaSystemDocuments: 13,\r\n minutesSummary: 14,\r\n agendaPacket: 15,\r\n otherInfoItemsDocument: 16\r\n});\r\n\r\n/**\r\n * Category Types\r\n * @type {({name: string, id: number, label: string}|{name: string, id: number, label: string}|{name: string, id: number, label: string}|{name: string, id: number, label: string}|{name: string, id: number, label: string})[]}\r\n */\r\nconst categoryTypes = Object.freeze([\r\n {\r\n id: categoryType.general,\r\n name: \"General\",\r\n label: \"General\",\r\n color: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n }\r\n },\r\n {\r\n id: categoryType.system,\r\n name: \"System\",\r\n label: \"System\",\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n4\r\n }\r\n },\r\n {\r\n id: categoryType.meeting,\r\n name: \"Meeting\",\r\n label: \"Agenda Meeting\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: categoryType.section,\r\n name: \"Section\",\r\n label: \"Agenda Section\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: categoryType.item,\r\n name: \"Item\",\r\n label: \"Agenda Item\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: 12,\r\n name: categoryType.backupMaterial,\r\n label: \"Agenda Backup Material\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: 13,\r\n name: categoryType.agendaSystemDocuments,\r\n label: \"Agenda System Documents\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: 14,\r\n name: categoryType.minutesSummary,\r\n label: \"Agenda Minutes Summary\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: 15,\r\n name: categoryType.agendaPacket,\r\n label: \"Agenda Packet\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: 16,\r\n name: categoryType.otherInfoItemsDocument,\r\n label: \"Agenda Other Info Items Document\",\r\n color: {\r\n name: colorMD.green,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n]);\r\n\r\n/**\r\n * find Category Type\r\n * @param typeId Category Type id\r\n * @return {{name: string, id: number, label: string}} Category Type\r\n */\r\nconst findCategoryType = typeId => {\r\n return categoryTypes.find(ct => ct.id === typeId);\r\n};\r\n\r\n/**\r\n * find Category Type Color Class\r\n * @param id Category Type id\r\n * @return {String|string|undefined} Category Color Class\r\n */\r\nconst findCategoryTypeColorClass = id => {\r\n const color = findCategoryTypeColor(id);\r\n\r\n return color\r\n ? new Color(\r\n color.name,\r\n color.variantType,\r\n color.variantNumber\r\n ).getClassColor()\r\n : undefined;\r\n};\r\n\r\n/**\r\n * find Category Type Color\r\n * @param {Number|number} id Category Type id\r\n * @return {{name: string, variantType: string, variantNumber: number}|undefined}\r\n */\r\nconst findCategoryTypeColor = id => {\r\n return categoryTypes?.find(el => el?.id === id)?.color;\r\n};\r\n\r\n/**\r\n * is Allowed Record Category Operation\r\n * @param {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string, operations: {name:string, allowed:boolean, valid:boolean}[]}} category Record Category\r\n * @param {string} operation Record Operation name\r\n * @return {boolean} returns true if Record Category Operation is allowed\r\n */\r\nconst isAllowedOperation = (category, operation) =>\r\n category?.operations?.find(\r\n op => toLowerCaseSafe(op.name) === toLowerCaseSafe(operation)\r\n )?.allowed ?? false;\r\n\r\nexport {\r\n fieldName,\r\n fieldLabel,\r\n categoryTypes,\r\n categoryAll,\r\n categoryType,\r\n recordNameRules,\r\n recordCategoryRules,\r\n isAllowedOperation,\r\n findCategoryType,\r\n findCategoryTypeColorClass,\r\n findCategoryTypeColor\r\n};\r\n","const SET_TASKS = \"SET_TASKS\";\r\nconst SET_TASK = \"SET_TASK\";\r\nconst UPDATE_TASK_ASSIGNEE = \"UPDATE_TASK_ASSIGNEE\";\r\n\r\nexport { SET_TASKS, SET_TASK, UPDATE_TASK_ASSIGNEE };\r\n","const SET_BREADCRUMBS = \"SET_BREADCRUMBS\";\r\n\r\n//\r\n// workflow project\r\n//\r\nconst SET_RECORD_PROJECTS = \"SET_RECORD_PROJECTS\";\r\nconst SET_RECORD_OPEN_PROJECTS = \"SET_RECORD_OPEN_PROJECTS\";\r\n\r\n// set new record's workflow project\r\nconst SET_RECORD_NEW_PROJECT = \"SET_RECORD_NEW_PROJECT\";\r\n\r\n//\r\n// new workflow project\r\n//\r\nconst SET_PROJECT_NEW = \"SET_PROJECT_NEW\";\r\nconst SET_PROJECT_NEW_TEMPLATE = \"SET_PROJECT_NEW_TEMPLATE\";\r\n\r\nexport {\r\n SET_BREADCRUMBS,\r\n SET_PROJECT_NEW,\r\n SET_PROJECT_NEW_TEMPLATE,\r\n SET_RECORD_PROJECTS,\r\n SET_RECORD_OPEN_PROJECTS,\r\n SET_RECORD_NEW_PROJECT\r\n};\r\n","// filters\r\nimport {\r\n Color,\r\n colorMD,\r\n colorTheme,\r\n getErrorColorClass,\r\n getSuccessColorClass,\r\n variantNumber,\r\n variantType\r\n} from \"@/design/colors/Color\";\r\nimport { toShortLocalString } from \"@/filters/dateFilter\";\r\n\r\n// design\r\nimport {\r\n iconCancel,\r\n iconProjects,\r\n iconTrash,\r\n iconPlay,\r\n iconSuspend,\r\n iconAccountArrowRight,\r\n iconManager,\r\n iconExport\r\n} from \"@/design/icon/iconConst\";\r\nimport { ruleNames } from \"@/model/rules/ruleModel\";\r\n\r\n/**\r\n * Workflow project Label\r\n * @type {string} user friend Workflow project Label\r\n */\r\nconst projectLabel = \"Project\";\r\n\r\n/**\r\n * workflow project instance State\r\n * @type {Readonly<{canceled: number, faulted: number, notStarted: number, executing: number, completed: number, suspended: number}>}\r\n */\r\nconst projectState = Object.freeze({\r\n notStarted: 0, // The workflow instance has not started\r\n executing: 1, // The workflow instance is in an executing state\r\n suspended: 2, // The workflow instance was put on hold\r\n completed: 10, // The workflow instance completed successfully\r\n canceled: 11, // The workflow instance was canceled to some reasons and wasn't completed\r\n faulted: 12 // The workflow instance was aborted during execution\r\n});\r\n\r\n/**\r\n * workflow project instance states\r\n * @type {Readonly<{id: number, name: string, color: {name: string, variantType: string, variantNumber: number } }>[]}\r\n */\r\nconst projectStates = Object.freeze([\r\n {\r\n id: projectState.notStarted,\r\n name: \"Not Started\",\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n4\r\n }\r\n },\r\n {\r\n id: projectState.executing,\r\n name: \"Executing\",\r\n color: {\r\n name: colorMD.indigo,\r\n variantType: variantType.darken,\r\n variantNumber: variantNumber.n2\r\n }\r\n },\r\n {\r\n id: projectState.suspended,\r\n name: \"Suspended\",\r\n color: {\r\n name: colorTheme.warning,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: projectState.completed,\r\n name: \"Completed\",\r\n color: {\r\n name: colorTheme.success,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n },\r\n {\r\n id: projectState.canceled,\r\n name: \"Canceled\",\r\n color: {\r\n name: colorTheme.secondary,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n2\r\n }\r\n },\r\n {\r\n id: projectState.faulted,\r\n name: \"Faulted\",\r\n color: {\r\n name: colorTheme.error,\r\n variantType: variantType.lighten,\r\n variantNumber: variantNumber.n1\r\n }\r\n }\r\n]);\r\n\r\n/**\r\n * project Overdue Color\r\n * @type {Color}\r\n */\r\nconst projectOverdueColor = new Color(\r\n colorTheme.error,\r\n variantType.lighten,\r\n variantNumber.n1\r\n);\r\n\r\n/**\r\n * project Overdue Color Class\r\n * @type {String|string}\r\n */\r\nconst projectOverdueColorClass = projectOverdueColor.getClassColor();\r\n\r\n/**\r\n * find Project State\r\n * @param {Number|number} id Project State id\r\n * @return {{id: number, name: string, color: {name: string, variantType: string, variantNumber: number}}|undefined} Project State\r\n */\r\nconst findProjectState = id => {\r\n return projectStates?.find(el => el?.id === id);\r\n};\r\n\r\n/**\r\n * find Project State Color Class\r\n * @param {Number|number} id Project State id\r\n * @return {String|string|undefined}\r\n */\r\nconst findProjectStateColorClass = id => {\r\n const color = findProjectStateColor(id);\r\n\r\n return color\r\n ? new Color(\r\n color.name,\r\n color.variantType,\r\n color.variantNumber\r\n ).getClassColor()\r\n : undefined;\r\n};\r\n\r\n/**\r\n * find Project State Color\r\n * @param {Number|number} id Project State id\r\n * @return {{name: string, variantType: string, variantNumber: number}|undefined} Project State Color\r\n */\r\nconst findProjectStateColor = id => {\r\n return projectStates?.find(el => el?.id === id)?.color;\r\n};\r\n\r\n/**\r\n * format project Date To Short Local String\r\n * @param {{projectId: Number, creationDate: string, definitionId: Number, workflowInstanceId: Number, workflowTypeId: Number, projectName: String, recordId: Number, subject: String, owner: String, projectManagerId: Number, templateId: Number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}} project\r\n * @return {string|string}\r\n */\r\nconst projectDateToShortLocalString = project => {\r\n return project?.creationDate ? toShortLocalString(project.creationDate) : \"\";\r\n};\r\n\r\n/**\r\n * project Operation\r\n * @type {Readonly<{CancelProject: string, AccessProject: string, ReassignTask: string, SuspendProject: string, RunProject: string, ReassignManager: string}>}\r\n */\r\nconst projectOperation = Object.freeze({\r\n AccessProject: \"AccessProject\",\r\n SuspendProject: \"SuspendProject\",\r\n RunProject: \"RunProject\",\r\n ResumeProject: \"ResumeProject\",\r\n CancelProject: \"CancelProject\",\r\n DeleteProject: \"DeleteProject\",\r\n ReassignManager: \"ReassignManager\",\r\n ReassignTask: \"ReassignTask\",\r\n ExportProject: \"ExportProject\",\r\n RepairProject: \"RepairProject\"\r\n});\r\n\r\n/**\r\n * project Operations\r\n * @type {({name: string, icon: string, label: string})[]}\r\n */\r\nconst projectOperations = Object.freeze([\r\n {\r\n name: projectOperation.AccessProject,\r\n label: \"Access Project\",\r\n icon: iconProjects,\r\n hint: \"Access Project\"\r\n },\r\n {\r\n name: projectOperation.SuspendProject,\r\n label: \"Suspend\",\r\n icon: iconSuspend,\r\n hint: \"Suspend Project, so it can be latter resumed\"\r\n },\r\n {\r\n name: projectOperation.RunProject,\r\n label: \"Run\",\r\n icon: iconProjects,\r\n hint: \"Run Project\"\r\n },\r\n {\r\n name: projectOperation.CancelProject,\r\n label: \"Cancel\",\r\n icon: iconCancel,\r\n hint: \"Cancel executing project, which cannot be resume latter\"\r\n },\r\n {\r\n name: projectOperation.ResumeProject,\r\n label: \"Resume\",\r\n icon: iconPlay,\r\n hint: \"Resume suspended project\"\r\n },\r\n {\r\n name: projectOperation.DeleteProject,\r\n label: \"Delete\",\r\n icon: iconTrash,\r\n hint: \"Permanency delete project\"\r\n },\r\n {\r\n name: projectOperation.ReassignManager,\r\n label: \"Assign Manager\",\r\n icon: iconManager,\r\n hint: \"Assign project manager\"\r\n },\r\n {\r\n name: projectOperation.ReassignTask,\r\n label: \"Reassign Task\",\r\n icon: iconAccountArrowRight,\r\n hint: \"Reassign project's task\"\r\n },\r\n {\r\n name: projectOperation.ExportProject,\r\n label: \"Export\",\r\n icon: iconExport,\r\n hint: \"Export project detailed report\"\r\n },\r\n {\r\n name: projectOperation.RepairProject,\r\n label: \"Repair\",\r\n icon: iconExport,\r\n hint: \"Try to Repair project\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Project Operation\r\n * @param name Project operation name\r\n * @return {{name: string, icon: string, label: string}}\r\n */\r\nconst findProjectOperation = name => {\r\n return projectOperations?.find(el => el?.name === name);\r\n};\r\n\r\n/**\r\n * Project Local Storage Keys\r\n * @type {{projectFilterOption: string}}\r\n */\r\nconst projectLocalStorageKeys = {\r\n projectFilterOption: \"projectFilterOption\"\r\n};\r\n\r\n/**\r\n * Project Headers for a report\r\n * @type {({visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string}|{visible: boolean, text: string, value: string})[]}\r\n */\r\nconst projectHeaders = Object.freeze([\r\n { text: \"Id\", value: \"projectId\", visible: true },\r\n { text: \"Name\", value: \"projectName\", visible: true },\r\n { text: \"Created-On\", value: \"creationDate\", visible: true },\r\n { text: \"Record-Name\", value: \"projectName\", visible: true },\r\n { text: \"User\", value: \"userName\", visible: true },\r\n { text: \"Status\", value: \"status\", visible: true },\r\n {\r\n align: \"end\",\r\n sortable: false,\r\n text: \"Actions\",\r\n value: \"actions\",\r\n visible: true\r\n }\r\n]);\r\n\r\n/**\r\n * project Name Rules\r\n * @return {[(function(*): *)]}\r\n */\r\nconst projectNameRules = () => [value => !!value || ruleNames.required];\r\n\r\n/**\r\n * project Template Rules\r\n * @param {number} templateId project Template id\r\n * @return {(function(*): *)[]|*[]}\r\n */\r\nconst projectTemplateRules = templateId =>\r\n templateId <= 0 ? [value => !!value || ruleNames.required] : [];\r\n\r\n/**\r\n * start Project Option\r\n * @type {Readonly<{showPredefinedProjectTemplate: number, none: number, autoStart: number}>}\r\n */\r\nconst startProjectOption = Object.freeze({\r\n none: 0,\r\n autoStart: 1,\r\n showPredefinedProjectTemplate: 2\r\n});\r\n\r\n/**\r\n * start Project Options\r\n * @type {Readonly<[{text: string, value: number}]>}\r\n */\r\nconst startProjectOptions = Object.freeze([\r\n {\r\n value: startProjectOption.none,\r\n text: \"None\"\r\n },\r\n {\r\n value: startProjectOption.autoStart,\r\n text: \"Auto Start Project\"\r\n },\r\n {\r\n value: startProjectOption.showPredefinedProjectTemplate,\r\n text: \"Show Predefined Project Template\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Start Project Option\r\n * @param {number} option\r\n * @return {unknown}\r\n */\r\nconst findStartProjectOption = option => {\r\n return startProjectOptions.find(el => el.value === option);\r\n};\r\n\r\n/**\r\n * project Validation Color Class\r\n * @param {boolean} valid is valid project\r\n * @return {String|string}\r\n */\r\nconst projectValidationColorClass = valid => {\r\n return valid ? getSuccessColorClass() : getErrorColorClass();\r\n};\r\n\r\nexport {\r\n projectState,\r\n projectStates,\r\n projectOverdueColor,\r\n projectOverdueColorClass,\r\n projectOperations,\r\n projectOperation,\r\n findProjectState,\r\n findProjectStateColor,\r\n findProjectStateColorClass,\r\n projectDateToShortLocalString,\r\n findProjectOperation,\r\n projectLocalStorageKeys,\r\n projectHeaders,\r\n projectLabel,\r\n projectNameRules,\r\n projectTemplateRules,\r\n startProjectOption,\r\n startProjectOptions,\r\n findStartProjectOption,\r\n projectValidationColorClass\r\n};\r\n","import { Color } from \"@/design/colors/Color\";\r\n\r\n/**\r\n * Material Design display Text Types\r\n * @type {Readonly<{subtitle2: string, display1: string, subtitle1: string, body1: string, body2: string, caption: string, display3: string, title: string, overline: string, display2: string, headline: string}>}\r\n */\r\nconst displayTypes = Object.freeze({\r\n display4: \"h1\",\r\n display3: \"h2\",\r\n display2: \"h3\",\r\n display1: \"h4\",\r\n headline: \"h5\",\r\n title: \"h6\",\r\n subtitle1: \"subtitle-1\",\r\n subtitle2: \"subtitle-2\",\r\n body1: \"body-1\",\r\n body2: \"body-2\",\r\n button: \"button\", // upper case\r\n caption: \"caption\",\r\n overline: \"overline\"\r\n});\r\n\r\n/**\r\n * Material Design font Emphasis\r\n * @type {Readonly<{light: string, black: string, bold: string, medium: string, italic: string, regular: string, thin: string}>}\r\n */\r\nconst fontEmphasis = Object.freeze({\r\n black: \"font-weight-black\",\r\n bold: \"font-weight-bold\",\r\n medium: \"font-weight-medium\",\r\n regular: \"font-weight-regular\",\r\n light: \"font-weight-light\",\r\n thin: \"font-weight-thin\",\r\n italic: \"font-italic\"\r\n});\r\n\r\n/**\r\n * Material Design Text alignments\r\n * @type {Readonly<{left: string, justify: string, center: string, right: string}>}\r\n */\r\nconst alignments = Object.freeze({\r\n justify: \"justify\",\r\n center: \"center\",\r\n left: \"left\",\r\n right: \"right\"\r\n});\r\n\r\n/**\r\n * Material Design Text opacities\r\n * @type {Readonly<{secondary: string, disabled: string, primary: string}>}\r\n */\r\nconst opacities = Object.freeze({\r\n primary: \"primary\",\r\n secondary: \"secondary\",\r\n disabled: \"disabled\"\r\n});\r\n\r\n/**\r\n * Material Design Text transforms\r\n * @type {Readonly<{uppercase: string, lowercase: string, capitalize: string}>}\r\n */\r\nconst transforms = Object.freeze({\r\n lowercase: \"lowercase\",\r\n uppercase: \"uppercase\",\r\n capitalize: \"capitalize\"\r\n});\r\n\r\n/**\r\n * Material Design Text decorations\r\n * @type {Readonly<{underline: string, lineThrough: string, none: string, overline: string}>}\r\n */\r\nconst decorations = Object.freeze({\r\n none: \"decoration-none\",\r\n overline: \"decoration-overline\",\r\n underline: \"decoration-underline\",\r\n lineThrough: \"decoration-line-through\"\r\n});\r\n\r\n/**\r\n * Material Design prevents Wrapping Text\r\n * @type {Readonly}\r\n */\r\nconst preventWrappingText = Object.freeze(\"text-no-wrap\");\r\n\r\n/**\r\n * Follows Material design colorName spec.\r\n * https://vuetifyjs.com/en/styles/text-and-typography\r\n */\r\nclass Text {\r\n color = new Color();\r\n\r\n // Left aligned text on viewports sized MD (medium) or wider.\r\n // alignment = `text-${breakpoints[2]}-${alignments[2]}}`;\r\n // opacity = `text--${opacities[0]}`;\r\n // transform = `text--${transforms[2]}`;\r\n // decoration = `text--${decorations[0]}`;\r\n\r\n displayType = displayTypes.subtitle1;\r\n emphasize = fontEmphasis.regular;\r\n alignment = undefined;\r\n breakpoint = undefined;\r\n opacity = undefined;\r\n transform = undefined;\r\n decoration = undefined;\r\n\r\n /**\r\n * Text constructor\r\n * @param {Color|undefined} color\r\n * @param {string|undefined} displayType\r\n * @param {string|undefined} emphasize\r\n * @param {string|undefined} alignment\r\n * @param {string|undefined} transform\r\n * @param {string|undefined} opacity\r\n * @param {string|undefined} decoration\r\n */\r\n constructor(\r\n color = undefined,\r\n displayType = displayTypes.subtitle1,\r\n emphasize = fontEmphasis.regular,\r\n alignment = undefined,\r\n transform = undefined,\r\n opacity = undefined,\r\n decoration = undefined\r\n ) {\r\n this.color = color;\r\n this.displayType = displayType;\r\n this.emphasize = emphasize;\r\n this.alignment = alignment;\r\n this.transform = transform;\r\n this.opacity = opacity;\r\n this.decoration = decoration;\r\n }\r\n\r\n /**\r\n * get Material Design Class Text\r\n * @returns {string}\r\n */\r\n getClassText() {\r\n // .text-{breakpoint}-{value} for sm, md, lg and xl\r\n let text = `text-${this.displayType} ${this.emphasize}`;\r\n\r\n if (this.alignment) {\r\n text = this.breakpoint\r\n ? `${text} text-${this.breakpoint}-${this.alignment}`\r\n : `${text} text-${this.alignment}`;\r\n }\r\n\r\n if (this.opacity) {\r\n text = `${text} text--${this.opacity}`;\r\n }\r\n\r\n if (this.transform) {\r\n text = `${text} text-${this.transform}`;\r\n }\r\n\r\n if (this.decoration) {\r\n text = `${text} text-${this.decoration}`;\r\n }\r\n\r\n if (!this.color) return text;\r\n\r\n const textColorClass = this.getTextColorClass();\r\n\r\n return textColorClass ? `${text} ${textColorClass}` : text;\r\n }\r\n\r\n /**\r\n * get Material Design Class Text Color\r\n * @returns {string|undefined}\r\n */\r\n getTextColorClass() {\r\n if (!this.color || !this.color.name) {\r\n return undefined;\r\n }\r\n\r\n const colorText = `${this.color.name}--text`;\r\n\r\n if (\r\n !this.color.isValidVariantType(this.color.variant) ||\r\n !this.color.isValidVariantNumber(this.color.variantNumber)\r\n )\r\n return colorText;\r\n\r\n return `${colorText} text--${this.color.variant}-${this.color.variantNumber}`;\r\n }\r\n}\r\n\r\nexport {\r\n Text,\r\n fontEmphasis,\r\n alignments,\r\n opacities,\r\n transforms,\r\n decorations,\r\n preventWrappingText,\r\n displayTypes\r\n};\r\n","// services\r\nimport { moduleNames } from \"@/services/solution/solutionService\";\r\n\r\n// router\r\nimport {\r\n routeParams,\r\n expandedRoutePath,\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath,\r\n createModuleContentRouteName,\r\n createModuleRoutePath,\r\n createModuleParamsId,\r\n createModuleChildRecordParamsId,\r\n createModuleExpandRecordContentRouteName,\r\n shortcutRoutePath,\r\n createModuleExpandRecordShortcutContentRouteName\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\nconst moduleName = moduleNames.Folder;\r\n\r\nconst folderRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(moduleName),\r\n name: createAppModuleRouteName(moduleName),\r\n meta: { requiresAuth: true },\r\n component: () => import(\"@/views/folder/FolderHome\"),\r\n children: [\r\n {\r\n path: createModuleRoutePath(routeParams.id),\r\n name: createModuleContentRouteName(moduleName),\r\n meta: { requiresAuth: true },\r\n props: createModuleParamsId,\r\n component: () => import(\"@/views/folder/FolderContent\")\r\n // children: [\r\n // {\r\n // path: createModuleDetailsRoutePath(routeParams.id),\r\n // name: createAppModuleDetailsRouteName(appModuleName),\r\n // meta: { requiresAuth: true },\r\n // props: true,\r\n // component: () => import(\"@/views/meeting/FolderDetails\")\r\n // }\r\n // ]\r\n },\r\n {\r\n path: expandedRoutePath,\r\n name: createModuleExpandRecordContentRouteName(moduleName),\r\n meta: { requiresAuth: true },\r\n props: createModuleChildRecordParamsId,\r\n component: () => import(\"@/views/folder/FolderContent\")\r\n },\r\n\r\n {\r\n path: shortcutRoutePath,\r\n name: createModuleExpandRecordShortcutContentRouteName(moduleName),\r\n meta: { requiresAuth: true },\r\n props: createModuleChildRecordParamsId,\r\n component: () => import(\"@/views/folder/FolderContent\")\r\n }\r\n ]\r\n }\r\n]);\r\n\r\nexport { folderRoutes };\r\n","import { moduleNames } from \"@/services/solution/solutionService\";\r\n\r\n// router\r\nimport {\r\n routeParams,\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath,\r\n createModuleContentRouteName,\r\n createModuleRoutePath,\r\n createModuleParamsId\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\nconst categoryRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(moduleNames.Category),\r\n name: createAppModuleRouteName(moduleNames.Category),\r\n meta: { requiresAuth: true },\r\n component: () => import(\"@/views/category/CategoryHome\"),\r\n children: [\r\n {\r\n path: createModuleRoutePath(routeParams.id),\r\n name: createModuleContentRouteName(moduleNames.Category),\r\n meta: { requiresAuth: true },\r\n props: createModuleParamsId,\r\n component: () => import(\"@/views/category/CategoryContent\")\r\n // children: [\r\n // {\r\n // path: createModuleDetailsRoutePath(routeParams.id),\r\n // name: createAppModuleDetailsRouteName(appModuleName),\r\n // meta: { requiresAuth: true },\r\n // props: true,\r\n // component: () => import(\"@/views/category/CategoryDetails\")\r\n // }\r\n // ]\r\n }\r\n ]\r\n }\r\n]);\r\n\r\nexport { categoryRoutes };\r\n","import { moduleNames, moduleTitles } from \"@/services/solution/solutionService\";\r\n\r\n// router\r\nimport {\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\nconst searchRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(moduleNames.Search),\r\n name: createAppModuleRouteName(moduleNames.Search),\r\n meta: { requiresAuth: true, title: moduleTitles.Search },\r\n component: () => import(\"@/views/search/SearchHome\")\r\n }\r\n]);\r\n\r\nexport { searchRoutes };\r\n","// services\r\nimport { moduleNames } from \"@/services/solution/solutionService\";\r\n\r\n// router\r\nimport {\r\n routeParams,\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath,\r\n createModuleContentRouteName,\r\n createModuleRoutePath,\r\n createModuleParamsId\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\nconst inboxRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(moduleNames.Tasks),\r\n name: createAppModuleRouteName(moduleNames.Tasks),\r\n meta: { requiresAuth: true },\r\n component: () => import(\"@/views/inbox/InboxHome\"),\r\n children: [\r\n {\r\n path: createModuleRoutePath(routeParams.id),\r\n name: createModuleContentRouteName(moduleNames.Tasks),\r\n meta: { requiresAuth: true },\r\n props: createModuleParamsId,\r\n component: () => import(\"@/views/inbox/InboxContent\")\r\n // children: [\r\n // {\r\n // path: createModuleDetailsRoutePath(routeParams.id),\r\n // name: createAppModuleDetailsRouteName(appModuleName),\r\n // meta: { requiresAuth: true },\r\n // props: true,\r\n // component: () => import(\"@/views/inbox/InboxDetails\")\r\n // }\r\n // ]\r\n }\r\n ]\r\n }\r\n]);\r\n\r\nexport { inboxRoutes };\r\n","// services\r\nimport { moduleNames } from \"@/services/solution/solutionService\";\r\n\r\n// router\r\nimport {\r\n routeParams,\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath,\r\n createModuleContentRouteName,\r\n createModuleRoutePath,\r\n createModuleParamsId\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\nconst projectRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(moduleNames.Projects),\r\n name: createAppModuleRouteName(moduleNames.Projects),\r\n meta: { requiresAuth: true },\r\n component: () => import(\"@/views/projects/ProjectsHome\"),\r\n children: [\r\n {\r\n path: createModuleRoutePath(routeParams.id),\r\n name: createModuleContentRouteName(moduleNames.Projects),\r\n meta: { requiresAuth: true },\r\n props: createModuleParamsId,\r\n component: () => import(\"@/views/projects/ProjectContent\")\r\n // children: [\r\n // {\r\n // path: createModuleDetailsRoutePath(routeParams.id),\r\n // name: createAppModuleDetailsRouteName(appModuleName),\r\n // meta: { requiresAuth: true },\r\n // props: true,\r\n // component: () => import(\"@/views/projects/ProjectDetails\")\r\n // }\r\n // ]\r\n }\r\n ]\r\n }\r\n]);\r\n\r\nexport { projectRoutes };\r\n","// services\r\nimport { moduleNames } from \"@/services/solution/solutionService\";\r\n\r\n// router\r\nimport {\r\n routeParams,\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath,\r\n createModuleContentRouteName,\r\n createModuleRoutePath,\r\n createModuleParamsId,\r\n expandedRoutePath,\r\n createModuleExpandRecordContentRouteName,\r\n createModuleChildRecordParamsId\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\nconst moduleName = moduleNames.Agenda;\r\n\r\nconst agendaRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(moduleName),\r\n name: createAppModuleRouteName(moduleName),\r\n component: () => import(\"@/views/agenda/AgendaHome\"),\r\n children: [\r\n {\r\n path: createModuleRoutePath(routeParams.id),\r\n name: createModuleContentRouteName(moduleName),\r\n meta: { requiresAuth: true },\r\n props: createModuleParamsId,\r\n component: () => import(\"@/views/agenda/AgendaContent\")\r\n // children: [\r\n // {\r\n // path: createModuleDetailsRoutePath(routeParams.id),\r\n // name: createAppModuleDetailsRouteName(appModuleName),\r\n // meta: { requiresAuth: true },\r\n // props: true,\r\n // component: () => import(\"@/views/agenda/AgendaDetails\")\r\n // }\r\n // ]\r\n },\r\n {\r\n path: expandedRoutePath,\r\n name: createModuleExpandRecordContentRouteName(moduleName),\r\n meta: { requiresAuth: true },\r\n props: createModuleChildRecordParamsId,\r\n component: () => import(\"@/views/agenda/AgendaContent\")\r\n }\r\n ]\r\n }\r\n]);\r\n\r\nexport { agendaRoutes };\r\n","// router\r\nimport {\r\n createAppModuleRouteName,\r\n createAppModuleRoutePath\r\n} from \"@/router/solution/solutionRoutes\";\r\n\r\nconst moduleName = \"Login\";\r\n\r\nconst loginRoutes = Object.freeze([\r\n {\r\n path: createAppModuleRoutePath(moduleName),\r\n name: createAppModuleRouteName(moduleName),\r\n component: () => import(\"@/views/user/Login\")\r\n }\r\n]);\r\n\r\nexport { loginRoutes };\r\n","// Vue Router\r\nimport Vue from \"vue\";\r\nimport VueRouter from \"vue-router\";\r\nimport store from \"@/store/index\";\r\n\r\n// routes\r\nimport { homeRoutes, notFoundRoutes } from \"@/router/solution/solutionRoutes\";\r\nimport { folderRoutes } from \"@/router/folder/folderRoutes\";\r\nimport { categoryRoutes } from \"@/router/category/categoryRoutes\";\r\nimport { searchRoutes } from \"@/router/search/searchRoutes\";\r\nimport { inboxRoutes } from \"@/router/inbox/inboxRoutes\";\r\nimport { projectRoutes } from \"@/router/project/projectRoutes\";\r\nimport { agendaRoutes } from \"@/router/agenda/agendaRoutes\";\r\nimport { loginRoutes } from \"@/router/user/userRoutes\";\r\nimport { documentRoutes } from \"@/router/document/documentRoutes\";\r\nimport { getStoredUser } from \"@/services/user/userService\";\r\nimport { isEmpty } from \"@/utils\";\r\n\r\nVue.use(VueRouter);\r\n\r\nconst router = new VueRouter({\r\n // history mode: leverages the history.pushState API to achieve URL navigation without a page reload\r\n mode: \"history\",\r\n // please see: publicPath in vue.config.js\r\n base: process.env.BASE_URL,\r\n routes: [\r\n ...homeRoutes,\r\n ...folderRoutes,\r\n ...categoryRoutes,\r\n ...searchRoutes,\r\n ...inboxRoutes,\r\n ...projectRoutes,\r\n ...agendaRoutes,\r\n ...documentRoutes,\r\n ...loginRoutes,\r\n ...notFoundRoutes\r\n ]\r\n});\r\n\r\n//\r\n// route meta data const\r\n//\r\nconst metaRequiresAuth = \"requiresAuth\";\r\n\r\nconst autoRoute = (to, next) => {\r\n const isUserLoggedIn = store.getters[\"user/isUserLoggedIn\"] ?? false;\r\n\r\n // if the route being navigated to matches one of our routes (record)\r\n // where the meta tag includes requiresAuth = true,\r\n // then we’ll see if we have a user loggedIn\r\n const requiresAuth = to.matched.some(route => route.meta[metaRequiresAuth]);\r\n\r\n if (requiresAuth && !isUserLoggedIn) {\r\n console.warn(\r\n `Re-Route to 'Login'; Requires Authentication: ${requiresAuth}; isUserLoggedIn: ${isUserLoggedIn}; Requested Route ${to.name}:`,\r\n to\r\n );\r\n next({ name: \"Login\", query: { redirectTo: to.fullPath } });\r\n } else {\r\n console.log(\r\n `Fulfill route request; Requires Authentication: ${requiresAuth}; Requested Route: ${to.name}:`,\r\n to\r\n );\r\n next();\r\n }\r\n};\r\n\r\n/**\r\n * get Auto Login User Info\r\n * @return {{userLoggedIn: boolean, hasToken:boolean, canAutoLogin: boolean, cannotAutoLoginReason: string}}\r\n */\r\nconst getAutoLoginUserInfo = () => {\r\n const userLoggedIn = store.getters[\"user/isUserLoggedIn\"] ?? false;\r\n const storedUser = getStoredUser();\r\n const hasToken = !isEmpty(storedUser?.token);\r\n const canAutoLogin = storedUser && hasToken;\r\n\r\n let reason = undefined;\r\n\r\n if (!canAutoLogin) {\r\n if (!storedUser) {\r\n reason = \"No stored user\";\r\n }\r\n if (!hasToken) {\r\n const noToken = \"No Token\";\r\n reason = isEmpty(reason) ? `${noToken}` : `${reason}; ${noToken}`;\r\n }\r\n }\r\n\r\n return {\r\n userLoggedIn: userLoggedIn,\r\n hasToken: hasToken,\r\n canAutoLogin: canAutoLogin,\r\n cannotAutoLoginReason: reason\r\n };\r\n};\r\n\r\n//\r\n// Using Global route Guards\r\n//\r\n\r\n/**\r\n * auto Login\r\n * @param user\r\n * @param to\r\n * @param next\r\n * @return {Promise}\r\n */\r\nfunction autoLogin(user, to, next) {\r\n console.log(\r\n `Going to auto-login user: ${user?.name} to repository:`,\r\n user?.repository\r\n );\r\n return store\r\n .dispatch(\"user/autoLogin\")\r\n .then(() => {\r\n autoRoute(to, next);\r\n })\r\n .catch(e => {\r\n console.warn(`Couldn't Auto Login. ${e}`);\r\n autoRoute(to, next);\r\n });\r\n}\r\n\r\n/**\r\n * log Cannot Auto-Login Reason\r\n * @param {{name: string, repository: string }} user\r\n * @param {{userLoggedIn: boolean, hasToken:boolean, canAutoLogin: boolean, cannotAutoLoginReason: string}} loginInfo\r\n */\r\nfunction logCannotAutoLoginReason(user, loginInfo) {\r\n console.log(\r\n `Cannot auto-login user: '${user?.name}' to repository: '${user?.repository}'. Reason:`,\r\n loginInfo?.cannotAutoLoginReason\r\n );\r\n}\r\n\r\n//\r\nrouter.beforeEach((to, from, next) => {\r\n const storedUser = getStoredUser();\r\n const loginInfo = getAutoLoginUserInfo();\r\n\r\n console.log(\"router.beforeEach() loginInfo:\", loginInfo);\r\n\r\n if (loginInfo.userLoggedIn) {\r\n console.log(\r\n `Make sure whether ${storedUser?.name}'s Repository Service is available.`\r\n );\r\n return store\r\n .dispatch(\"user/getUserRepositoryName\")\r\n .then(response => {\r\n const repository = response;\r\n if (isEmpty(repository)) {\r\n console.warn(\r\n `User ${storedUser?.name}'s Repository Service is not available.`\r\n );\r\n if (loginInfo.canAutoLogin) {\r\n return autoLogin(storedUser, to, next);\r\n } else {\r\n logCannotAutoLoginReason(storedUser, loginInfo);\r\n autoRoute(to, next);\r\n }\r\n } else {\r\n console.log(\r\n `${storedUser?.name}'s Repository: ${repository} Service is available.`\r\n );\r\n autoRoute(to, next);\r\n }\r\n })\r\n .catch(e => {\r\n console.warn(\r\n `Try auto-Login, since Couldn't get User Repository. ${e}`\r\n );\r\n if (loginInfo.canAutoLogin) {\r\n return autoLogin(storedUser, to, next);\r\n } else {\r\n logCannotAutoLoginReason(storedUser, loginInfo);\r\n autoRoute(to, next);\r\n }\r\n });\r\n } else {\r\n if (loginInfo.canAutoLogin) {\r\n return autoLogin(storedUser, to, next);\r\n } else {\r\n logCannotAutoLoginReason(storedUser, loginInfo);\r\n }\r\n }\r\n\r\n autoRoute(to, next);\r\n});\r\n\r\nexport default router;\r\n","// model\r\nimport {\r\n assignmentMethod,\r\n dueDateColorClass,\r\n findTaskPriority,\r\n findTaskState,\r\n findTaskStateColorClass,\r\n taskState\r\n} from \"@/model/workflow/task/taskModel\";\r\n\r\n// filters\r\nimport {\r\n convertToYYYYMMDDHHMM,\r\n toLocalDateString,\r\n toLocalDateTimeString\r\n} from \"@/filters/dateFilter\";\r\n\r\n// utils\r\nimport { isValidDate } from \"@/utils\";\r\n\r\n/**\r\n * format Status\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst formatStatus = task => {\r\n const status = task?.status ?? -1;\r\n const statusName = findTaskState(status)?.name ?? \"\";\r\n\r\n switch (status) {\r\n case taskState.queued:\r\n case taskState.completed: {\r\n return `${statusName} ${formatStatusDate(task)}`;\r\n }\r\n default: {\r\n return statusName;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * task Status Tooltip\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignedTo: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst taskStatusTooltip = task => {\r\n const status = task?.status ?? -1;\r\n const statusName = findTaskState(status)?.name ?? \"\";\r\n\r\n switch (status) {\r\n case taskState.queued:\r\n return `${statusName} on ${formatStatusDateAndTime(\r\n task\r\n )} and assigned to: ${task?.assignedTo}`;\r\n case taskState.completed: {\r\n return `${statusName} on ${formatStatusDateAndTime(task)} by ${\r\n task?.assignedTo\r\n }`;\r\n }\r\n case taskState.faulted:\r\n case taskState.abandoned:\r\n case taskState.canceled:\r\n case taskState.suspended: {\r\n return `${statusName} on ${formatStatusDateAndTime(task)}`;\r\n }\r\n default: {\r\n return `${statusName} ${task.name}`;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * format Status Date\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst formatStatusDate = task =>\r\n isValidDate(task?.statusChanged) ? toLocalDateString(task.statusChanged) : \"\";\r\n\r\n/**\r\n * format Status Date and Time\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst formatStatusDateAndTime = task =>\r\n isValidDate(task?.statusChanged)\r\n ? toLocalDateTimeString(task.statusChanged)\r\n : \"\";\r\n\r\n/**\r\n * format Due Date\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst formatDueDate = task =>\r\n isValidDate(task?.dueDate) ? toLocalDateString(task.dueDate) : \"\";\r\n\r\n/**\r\n * format Due Date and time\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst taskDueDateLocalDateTime = task =>\r\n isValidDate(task?.dueDate) ? toLocalDateTimeString(task.dueDate) : \"\";\r\n\r\n/**\r\n * format Overdue Text\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst formatOverdueText = task => (task?.isOverdue ?? false ? \"Overdue\" : \"\");\r\n\r\n/**\r\n * format task Priority\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {string}\r\n */\r\nconst formatPriority = task =>\r\n `${findTaskPriority(task?.priority)?.text} Priority`;\r\n\r\n/**\r\n * can Accept Task\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @param {number} actorId\r\n * @return {boolean} true if current user can Accept Task\r\n */\r\nconst canAcceptTask = (task, actorId) => {\r\n return isValidTask(task) && task?.actorId === actorId;\r\n};\r\n\r\n/**\r\n * can Reject Task\r\n * @param task\r\n * @param {number} actorId\r\n * @return {boolean} true if current user can Reject Task\r\n */\r\nconst canRejectTask = (task, actorId) => {\r\n return isValidTask(task) && task?.actorId === actorId;\r\n};\r\n\r\n/**\r\n * can Take Task\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {boolean}\r\n */\r\nconst canTakeTask = task => {\r\n return isValidTask(task) && isSelfAssignment(task);\r\n};\r\n\r\n/**\r\n * can Jump to Task\r\n * @param task\r\n * @param {number} actorId\r\n * @return {boolean}\r\n */\r\nconst canJumpToTask = (task, actorId) => {\r\n return isValidTask(task) && task?.actorId === actorId;\r\n};\r\n\r\n/**\r\n * can Reassign Task\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {*|boolean}\r\n */\r\nconst canReassignTask = task => isValidTask(task) && !isSelfAssignment(task); //&& (task?.canReassign ?? false);\r\n\r\n/**\r\n * can Release Task\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @param actorId\r\n * @return {false|*|boolean}\r\n */\r\nconst canReleaseTask = (task, actorId) => {\r\n return (\r\n isValidTask(task) &&\r\n (task?.assignmentMethodType ?? assignmentMethod.manual) ===\r\n assignmentMethod.self &&\r\n (task?.actorId ?? 2) === actorId &&\r\n (task?.canSelfRelease ?? false)\r\n );\r\n};\r\n\r\n/**\r\n * is a Valid Task (notStarted, queued)\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {boolean} true if a provided task is valid\r\n */\r\nconst isValidTask = task =>\r\n task\r\n ? task.status === taskState.notStarted || task.status === taskState.queued\r\n : false;\r\n\r\n/**\r\n * is Task Assigned\r\n * @param task\r\n * @return {boolean} true if Task has been Assigned\r\n */\r\nconst isTaskAssigned = task => (task?.actorId ?? -1) !== -1;\r\n\r\n/**\r\n * is Self Assignment\r\n * @param task\r\n * @return {boolean} true if Task has been Self Assignment\r\n */\r\nconst isSelfAssignment = task =>\r\n !!task &&\r\n task.assignmentMethodType === assignmentMethod.self &&\r\n !isTaskAssigned(task) &&\r\n !task.selfReleaseDisabled;\r\n\r\n/**\r\n * GetTask Calendar Events\r\n * @param {{taskId: number, name: string, typeId: number, templateId: number, projectTemplateName: string, projectId:number, projectName:string, workflowInstanceId: number, workflowDefinitionId: number, recordId: number, recordName: string, status: number, statusChanged: string, statusText: string, actorId:number, assignee: string, assignmentMethod:string, assignmentMethodType:number, assignmentMethodTypeText:string, assignmentNotificationType:number, assignmentNotificationTypeText:string, assignmentRole: string, canReassign: boolean, canSelfRelease: boolean, selfReleaseDisabled: false, comment:string, created: string, effective: string, dueDate:string, duration:string, isDue:boolean, isMilestone: boolean, isOverdue: boolean, notifyOnEscalation:boolean, priority: number, priorityText: string, recordId: number, recordTypeId: number, recordTypeName: string, projectManager: string, selfReleaseDisabled: boolean, workflowDefinitionId: number, notes: {id:number, taskId:number, text:string, userId:number, userName: string, created: string}[]}} task\r\n * @return {*[]}\r\n */\r\nconst getTaskCalendarEvents = task => {\r\n if (!task) return [];\r\n\r\n const events = [];\r\n\r\n events.push(\r\n // {\r\n // name: \"Created\",\r\n // start: convertToYYYYMMDDHHMM(task.created),\r\n // color: colorMD.blue, // Customize color\r\n // tooltip: `Task created at ${convertToYYYYMMDDHHMM(task.created)} `\r\n // },\r\n\r\n // {\r\n // name: \"Status\",\r\n // start: convertToYYYYMMDDHHMM(task.statusChanged),\r\n // color: colorMD.green, // Customize color\r\n // tooltip: `Task status changed at ${convertToYYYYMMDDHHMM(\r\n // task.statusChanged\r\n // )} `\r\n // },\r\n\r\n {\r\n id: task.taskId,\r\n name: task.name,\r\n start: convertToYYYYMMDDHHMM(task.statusChanged),\r\n end: task.dueDate ? convertToYYYYMMDDHHMM(task.dueDate) : undefined,\r\n // end: convertToYYYYMMDDHHMM(\r\n // new Date(getDueDate(task.statusChanged, task.duration))\r\n // ),\r\n color: findTaskStateColorClass(task.status),\r\n tooltip: taskStatusTooltip(task)\r\n }\r\n\r\n // {\r\n // name: \"Duration\",\r\n // start: convertToYYYYMMDDHHMM(task.created),\r\n // end: convertToYYYYMMDDHHMM(\r\n // new Date(getDueDate(task.created, task.duration))\r\n // ),\r\n // color: colorMD.grey,\r\n // tooltip: `Task total duration - ${task.duration} `\r\n // }\r\n );\r\n\r\n if (task.dueDate) {\r\n events.push({\r\n name: `Due`,\r\n start: convertToYYYYMMDDHHMM(new Date(task.dueDate)),\r\n color: dueDateColorClass(task),\r\n tooltip: `Due ${taskDueDateLocalDateTime(task)}`\r\n });\r\n }\r\n\r\n return events;\r\n};\r\n\r\n/**\r\n * Get Task Due Date\r\n * @param date\r\n * @param duration\r\n * @return {number}\r\n */\r\nconst getDueDate = (date, duration) => {\r\n const [daysPart, timePart] = duration.split(\".\");\r\n\r\n // Parse the time part into individual parts (hours, minutes, and seconds)\r\n const timeParts = timePart.split(\":\"); // Split into hours, minutes, and seconds\r\n\r\n // Convert parts into milliseconds\r\n const daysInMilliseconds = parseInt(daysPart, 10) * 24 * 60 * 60 * 1000;\r\n const hoursInMilliseconds = parseInt(timeParts[0], 10) * 60 * 60 * 1000;\r\n const minutesInMilliseconds = parseInt(timeParts[1], 10) * 60 * 1000;\r\n const secondsInMilliseconds = parseInt(timeParts[2], 10) * 1000;\r\n\r\n // Calculate the total duration in milliseconds\r\n const totalDurationInMilliseconds =\r\n daysInMilliseconds +\r\n hoursInMilliseconds +\r\n minutesInMilliseconds +\r\n secondsInMilliseconds;\r\n\r\n // Add the duration to the date and return the result\r\n return new Date(date).getTime() + totalDurationInMilliseconds;\r\n};\r\n\r\nexport {\r\n formatStatus,\r\n formatStatusDate,\r\n formatDueDate,\r\n formatOverdueText,\r\n formatPriority,\r\n taskStatusTooltip,\r\n formatStatusDateAndTime,\r\n taskDueDateLocalDateTime,\r\n canAcceptTask,\r\n canRejectTask,\r\n canTakeTask,\r\n canReleaseTask,\r\n canReassignTask,\r\n isValidTask,\r\n isTaskAssigned,\r\n isSelfAssignment,\r\n getTaskCalendarEvents,\r\n getDueDate,\r\n canJumpToTask\r\n};\r\n","// design\r\nimport {\r\n iconFolderOutline,\r\n iconCategories,\r\n iconTasks,\r\n iconEvents,\r\n iconProjects,\r\n iconSearch\r\n} from \"@/design/icon/iconConst\";\r\n\r\n// model\r\nimport { featureName } from \"@/model/features/featuresModel\";\r\n\r\n/**\r\n * Questys Application Module moduleNames\r\n * @type {Readonly<{Search: string, Category: string, Tasks: string, Projects: string, Agenda: string, Folder: string}>}\r\n */\r\nconst moduleNames = Object.freeze({\r\n Search: \"Search\",\r\n Folder: \"Folder\",\r\n Category: \"Category\",\r\n MyWork: \"MyWork\",\r\n Tasks: \"Tasks\",\r\n Projects: \"Projects\",\r\n Agenda: \"Agenda\"\r\n});\r\n\r\n/**\r\n * Questys Application Module moduleTitles\r\n * @type {Readonly<{Search: string, Category: string, Tasks: string, Projects: string, Agenda: string, Folder: string}>}\r\n */\r\nconst moduleTitles = Object.freeze({\r\n Search: \"Search\",\r\n Folder: \"Folder\",\r\n Category: \"Category\",\r\n MyWork: \"My Work\",\r\n Tasks: \"My Tasks\",\r\n Projects: \"Projects\",\r\n Agenda: \"Meetings\"\r\n});\r\n\r\n/**\r\n * Questys Application Module Icons\r\n * @type {Readonly<{Category: string, Search: string, Tasks: string, Projects: string, Agenda: string, Folder: string}>}\r\n */\r\nconst moduleIcons = Object.freeze({\r\n Search: iconSearch,\r\n Folder: iconFolderOutline,\r\n Category: iconCategories,\r\n MyWork: iconTasks,\r\n Tasks: iconTasks,\r\n Projects: iconProjects,\r\n Agenda: iconEvents\r\n});\r\n\r\n/**\r\n * Application Modules\r\n * @type {{name: string, icon: string, title: string, feature: string, public: boolean}[]}\r\n */\r\nconst appModules = Object.freeze([\r\n {\r\n name: moduleNames.Search,\r\n title: moduleTitles.Search,\r\n icon: moduleIcons.Search,\r\n feature: featureName.Execute,\r\n public: true\r\n },\r\n {\r\n name: moduleNames.Folder,\r\n title: moduleTitles.Folder,\r\n icon: moduleIcons.Folder,\r\n feature: featureName.Execute,\r\n public: true\r\n },\r\n {\r\n name: moduleNames.Category,\r\n title: moduleTitles.Category,\r\n icon: moduleIcons.Category,\r\n feature: featureName.Execute,\r\n public: true\r\n },\r\n {\r\n name: moduleNames.Tasks,\r\n title: moduleTitles.Tasks,\r\n icon: moduleIcons.Tasks,\r\n feature: featureName.WFx,\r\n public: false\r\n },\r\n {\r\n name: moduleNames.Projects,\r\n title: moduleTitles.Projects,\r\n icon: moduleIcons.Projects,\r\n feature: featureName.WFx,\r\n public: false\r\n },\r\n {\r\n name: moduleNames.Agenda,\r\n title: moduleTitles.Agenda,\r\n icon: moduleIcons.Agenda,\r\n feature: featureName.LSx,\r\n public: true\r\n }\r\n]);\r\n\r\n/**\r\n * find Application Module\r\n * @param name Application Module name\r\n * @return {{name: string, icon: string, title: string, feature: string, public:boolean}} returns Application Module\r\n */\r\nconst findModule = name => appModules.find(m => m.name === name);\r\n\r\nexport { moduleNames, moduleTitles, moduleIcons, appModules, findModule };\r\n","import { fieldType, isNumericFieldType } from \"@/model/field/fieldModel\";\r\nimport { recordType } from \"@/model/record/recordModel\";\r\nimport { itemCount } from \"@/utils\";\r\n\r\n/**\r\n * Create Query Model\r\n * @param {{Id:number, Name:string, Owner:string, Creator:string, CreatedDateFrom:string, CreatedDateTo:string, ModifiedDateFrom:string, ModifiedDateTo:string, CategoryId:number, TypeId:number, StateId:number, Extension:string, Version:number, Pages:number, Fields: {Id:number, Include:boolean, Operator:string, Value:string}[]}} payload\r\n * @return {{CategoryId: number, TypeId: number, Owner: string, CreatedDateTo: string, StateId: number, Creator: string, Name: string, Extension: string, Pages: number, Fields: {any}[], Version: number, CreatedDateFrom: string, ModifiedDateTo: string, ModifiedDateFrom: string}}\r\n */\r\nconst createQueryModel = payload => {\r\n return {\r\n Id: payload?.Id,\r\n Name: payload?.Name,\r\n Owner: payload?.Owner,\r\n Creator: payload?.Creator,\r\n CreatedDateFrom: payload?.CreatedDateFrom,\r\n CreatedDateTo: payload?.CreatedDateTo,\r\n ModifiedDateFrom: payload?.ModifiedDateFrom,\r\n ModifiedDateTo: payload?.ModifiedDateTo,\r\n CategoryId: payload?.CategoryId,\r\n TypeId: payload.TypeId,\r\n StateId: payload.StateId,\r\n Extension: payload.Extension,\r\n Version: payload?.Version,\r\n Pages: payload?.Pages,\r\n Fields: payload?.Fields\r\n };\r\n // or\r\n // return {\r\n // [fieldName.Id]: payload?.Id,\r\n // [fieldName.Name]: payload?.Name,\r\n // [fieldName.Owner]: payload?.Owner,\r\n // [fieldName.Creator]: payload?.Creator,\r\n // [fieldName.CreatedDateFrom]: payload?.CreatedDateFrom,\r\n // [fieldName.CreatedDateTo]: payload?.CreatedDateTo,\r\n // [fieldName.ModifiedDateFrom]: payload?.ModifiedDateFrom,\r\n // [fieldName.ModifiedDateTo]: payload?.ModifiedDateTo,\r\n // [fieldName.CategoryId]: payload?.CategoryId,\r\n // [fieldName.TypeId]: payload.TypeId,\r\n // [fieldName.StateId]: payload.StateId,\r\n // [fieldName.Extension]: payload.Extension,\r\n // [fieldName.Version]: payload?.Version,\r\n // [fieldName.Pages]: payload?.Pages,\r\n // [fieldName.Fields]: payload?.Fields\r\n // };\r\n};\r\n\r\n/**\r\n * filter Include Fields\r\n * @param {{Id:number, Include:boolean, Operator:string, Value:string}[]} fields\r\n * @return {{Id:number, Include:boolean, Operator:string, Value:string}[]}\r\n */\r\nconst filterIncludeFields = fields => {\r\n const includeFields = [];\r\n\r\n if ((fields?.length ?? 0) === 0) {\r\n return includeFields;\r\n }\r\n\r\n fields\r\n .filter(el => el.Include)\r\n .forEach(el => {\r\n if (!includeFields.find(fld => fld === el.Id)) {\r\n includeFields.push(el.Id);\r\n }\r\n });\r\n\r\n return includeFields;\r\n};\r\n\r\n/**\r\n * Create Query Field Model\r\n * @param {number} id\r\n * @param {boolean} include\r\n * @param {string} operator\r\n * @param {any} value\r\n * @return {{Id: number, Include: boolean, Operator: string, Value: any}}\r\n */\r\nconst createQueryFieldModel = (id, include, operator, value) => {\r\n return {\r\n Id: id,\r\n Include: include ?? false,\r\n Operator: operator ?? \"\",\r\n Value: value\r\n };\r\n // or\r\n // * @return {{[p: string]: number|*}}\r\n // return {\r\n // [fieldModelName.Id]: id,\r\n // [fieldModelName.Include]: include ?? false,\r\n // [fieldModelName.Operator]: operator ?? \"\",\r\n // [fieldModelName.Value]: value\r\n // };\r\n};\r\n\r\n/**\r\n * Determines whether field has a valid searchable value\r\n * @param {{id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string, include:boolean}} field\r\n * @return {boolean}\r\n */\r\nconst hasSearchableValue = field => {\r\n if (!field) {\r\n return false;\r\n }\r\n\r\n const type = field?.fieldDataType ?? fieldType.LITERAL;\r\n\r\n if (isNumericFieldType(type)) {\r\n return searchableNumericFieldValue(field?.value ?? \"\") >= 0;\r\n }\r\n\r\n return !!(field?.value?.toString() ?? undefined);\r\n};\r\n\r\n/**\r\n * Get Valid Search Field Value\r\n * @param {{id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string}} field\r\n */\r\nconst searchableFieldValue = field => {\r\n const type = field?.fieldDataType ?? fieldType.LITERAL;\r\n\r\n if (isNumericFieldType(type)) {\r\n return searchableNumericFieldValue(field?.value);\r\n }\r\n\r\n return field?.value ?? \"\";\r\n};\r\n\r\n/**\r\n * get searchable Numeric Field Value\r\n * @param {any} value\r\n * @return {number|number}\r\n */\r\nconst searchableNumericFieldValue = value => {\r\n const parseVal = parseInt(value ?? \"\");\r\n\r\n return isNaN(parseVal) ? -1 : parseVal;\r\n};\r\n\r\n/**\r\n * can Search within a Record\r\n * @param {number} type\r\n * @return {boolean}\r\n */\r\nconst canSearchWithinRecord = type => {\r\n return !(type === recordType.FILE || type === recordType.RECORD);\r\n};\r\n\r\n/**\r\n * has a valid Search Criteria\r\n * @param criteria\r\n * @param {boolean} excludeWithInId\r\n * @return {boolean}\r\n */\r\nconst hasSearchCriteria = (criteria, excludeWithInId = true) => {\r\n if (!criteria) {\r\n return false;\r\n }\r\n\r\n if ((criteria?.Id?.length ?? 0) > 0) {\r\n if (searchableNumericFieldValue(criteria?.Id[0]?.Value ?? -1) >= 0) {\r\n return true;\r\n }\r\n }\r\n\r\n if (criteria?.Name?.Value) return true;\r\n if (criteria?.Owner?.Value) return true;\r\n if (criteria?.Creator?.Value) return true;\r\n\r\n if (criteria?.CreatedDateFrom?.Value) return true;\r\n if (criteria?.ModifiedDateFrom?.Value) return true;\r\n\r\n if (searchableNumericFieldValue(criteria?.TypeId?.Value) > 0) {\r\n return true;\r\n }\r\n\r\n if (searchableNumericFieldValue(criteria?.StateId?.Value) > 0) {\r\n return true;\r\n }\r\n\r\n if (criteria?.Extension?.Value) return true;\r\n\r\n if (searchableNumericFieldValue(criteria?.Version?.Value) >= 0) {\r\n return true;\r\n }\r\n if (searchableNumericFieldValue(criteria?.Pages?.Value) > 0) {\r\n return true;\r\n }\r\n\r\n if (searchableNumericFieldValue(criteria?.CategoryId?.Value) >= 0) {\r\n return true;\r\n }\r\n\r\n if (!excludeWithInId) {\r\n if (searchableNumericFieldValue(criteria.WithInId) > 0) return true;\r\n }\r\n\r\n return (\r\n itemCount(criteria.Fields) > 0 &&\r\n (criteria.Fields.filter(el => el?.Value?.toString() ?? \"\" !== \"-1\")\r\n ?.length ?? 0) > 0\r\n );\r\n};\r\n\r\nconst formatSearchCriteria = (name, operator, value) =>\r\n `${name ?? \"\"} ${operator ?? \"\"} ${value ?? \"\"}`;\r\n\r\n/**\r\n * field Criteria To String\r\n * @param {{id:number, name:string, label:string, operator:string, value:any}} field\r\n * @return {string} user friendly formatted field Criteria string\r\n */\r\nconst fieldCriteriaToString = field => {\r\n const name = field?.label ?? field.name ?? \"\";\r\n\r\n return formatSearchCriteria(name, field?.operator, field?.value);\r\n};\r\n\r\nexport {\r\n createQueryModel,\r\n createQueryFieldModel,\r\n filterIncludeFields,\r\n searchableNumericFieldValue,\r\n searchableFieldValue,\r\n hasSearchableValue,\r\n canSearchWithinRecord,\r\n hasSearchCriteria,\r\n formatSearchCriteria,\r\n fieldCriteriaToString\r\n};\r\n","const SET_PROJECT_DELETED = \"SET_PROJECT_DELETED\";\r\nconst SET_PROJECT_CANCELED = \"SET_PROJECT_CANCELED\";\r\nconst SET_PROJECT_SUSPENDED = \"SET_PROJECT_SUSPENDED\";\r\nconst SET_PROJECT_RESUMED = \"SET_PROJECT_RESUMED\";\r\nconst UPDATE_PROJECT_MANAGER = \"UPDATE_PROJECT_MANAGER\";\r\n\r\nexport {\r\n SET_PROJECT_DELETED,\r\n SET_PROJECT_CANCELED,\r\n SET_PROJECT_SUSPENDED,\r\n SET_PROJECT_RESUMED,\r\n UPDATE_PROJECT_MANAGER\r\n};\r\n","/**\r\n * Questys licenced feature Names\r\n * @type {Readonly<{Execute: string, CmxFastForms: string, QuestysCMx: string, OcrNuance: string, OcrTesseract: string, WFx: string, WebClient: string, LSx: string, WebPortal: string, ScanIsis: string, CmxBarcodeCoverSheets: string, OcrTesseract06: string, CmxMSOfficeAddIn: string, PDFViewer: string, OcrTesseract08: string, OcrTesseract02: string, OcrTesseract04: string}>}\r\n */\r\n// services\r\nimport { apiUrl, isDevelopment } from \"@/services/config/configService\";\r\n\r\n// model\r\nimport { supportedScanning } from \"@/model/acquire/scan/scanningModel\";\r\n\r\n// utils\r\nimport { isEmpty } from \"@/utils\";\r\n\r\n/**\r\n * feature Name\r\n * @type {Readonly<{Execute: string, CmxFastForms: string, QuestysCMx: string, OcrNuance: string, OcrTesseract: string, WFx: string, WebClient: string, LSx: string, WebPortal: string, ScanIsis: string, WebScan: string, CmxBarcodeCoverSheets: string, OcrTesseract06: string, CmxMSOfficeAddIn: string, PDFViewer: string, OcrTesseract08: string, OcrTesseract02: string, OcrTesseract04: string}>}\r\n */\r\nconst featureName = Object.freeze({\r\n Execute: \"Execute\",\r\n QuestysCMx: \"Questys CMx\",\r\n LSx: \"LSx\",\r\n WFx: \"WFx\",\r\n CmxBarcodeCoverSheets: \"cmxBarcodeCoversheets\",\r\n CmxFastForms: \"cmxFastForms\",\r\n CmxMSOfficeAddIn: \"cmxMSOfficeAddin\",\r\n OcrNuance: \"ocrNuance\",\r\n OcrTesseract: \"ocrTesseract\",\r\n OcrTesseract02: \"ocrTesseract02\",\r\n OcrTesseract04: \"ocrTesseract04\",\r\n OcrTesseract06: \"ocrTesseract06\",\r\n OcrTesseract08: \"ocrTesseract08\",\r\n PDFViewer: \"PDFViewer\",\r\n WebClient: \"WebClient\",\r\n WebPortal: \"WebPortal\",\r\n ScanIsis: \"ISIS\",\r\n WebScan: \"WebScan\"\r\n});\r\n\r\n/**\r\n * feature Status\r\n * @param {{name: string, used: number, total: number}} feature\r\n * @return {{licenced: boolean, released: boolean, statusText: string, supported: boolean, notSupportedReason: string}}\r\n */\r\nconst featureStatus = feature => {\r\n const licenced = isLicencedFeature(feature);\r\n const released = isReleasedFeature(feature);\r\n\r\n const total = feature?.total ?? 0;\r\n const used = feature?.used ?? 0;\r\n const supported =\r\n feature.name === featureName.WebScan ? supportedScanning : true;\r\n\r\n let notSupportedReason = \"\";\r\n if (!supported) {\r\n if (feature.name === featureName.WebScan) {\r\n notSupportedReason = `${feature.name} is available on a Windows Desktop station only`;\r\n }\r\n }\r\n\r\n return createFeatureStatus(\r\n licenced,\r\n used,\r\n total,\r\n released,\r\n supported,\r\n notSupportedReason\r\n );\r\n};\r\n\r\n/**\r\n * create Feature Status\r\n * @param {boolean} licenced is Feature licenced\r\n * @param {number} licenceUsed number of used licences\r\n * @param {number} licenceTotal total licences count\r\n * @param {boolean} released is Feature released\r\n * @param {boolean} supported is Feature supported\r\n * @param {string} notSupportedReason not Supported Reason\r\n * @return {{licenced: boolean, released: boolean, statusText: string}} Feature Status\r\n */\r\nconst createFeatureStatus = (\r\n licenced,\r\n licenceUsed = 0,\r\n licenceTotal = 0,\r\n released = false,\r\n supported = true,\r\n notSupportedReason = \"\"\r\n) => {\r\n const licenceUsage = `${licenceUsed}/${licenceTotal}`;\r\n const statusLicenced = licenced\r\n ? `Licenced (${licenceUsage})`\r\n : `Not Licenced (${licenceUsage})`;\r\n // const statusReleased = released ? \"Released\" : \"Not Released\"; // all released\r\n return {\r\n licenced: licenced,\r\n licenceUsed: licenceUsed,\r\n licenceTotal: licenceTotal,\r\n released: released,\r\n supported: supported,\r\n statusText: supported\r\n ? `${statusLicenced}` // and ${statusReleased} all released\r\n : notSupportedReason\r\n };\r\n};\r\n\r\n/**\r\n * determines whether the provided feature is Available (released, supported & licenced)\r\n * @param {{name: string, used: number, total: number}} feature\r\n * @return {boolean} returns whether provided feature is Available (released & licenced)\r\n */\r\nconst isAvailableFeature = feature => {\r\n const status = featureStatus(feature);\r\n\r\n if (!status.supported || !status.released || !status.licenced) {\r\n console.warn(`${feature?.name} ${status}`);\r\n }\r\n\r\n return status.supported && status.released && status.licenced;\r\n};\r\n\r\n/**\r\n * determines whether feature is released (customer ready)\r\n * @param {{name: string, used: number, total: number}} feature Questys' feature\r\n * @return {boolean} true if specified Feature has been Released\r\n */\r\nconst isReleasedFeature = feature => {\r\n switch (feature?.name) {\r\n case featureName.WFx: {\r\n return true;\r\n //return isDevOps();\r\n }\r\n case featureName.LSx: {\r\n return true;\r\n //return isDevOps();\r\n }\r\n case featureName.WebScan: {\r\n return true;\r\n }\r\n case featureName.CmxBarcodeCoverSheets: {\r\n return false;\r\n }\r\n case featureName.CmxFastForms: {\r\n return false;\r\n }\r\n case featureName.CmxMSOfficeAddIn: {\r\n return false;\r\n }\r\n case featureName.ScanIsis: {\r\n return false;\r\n }\r\n default: {\r\n return true;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * is Development or Operations/Demo/ ...\r\n * @return {string|boolean}\r\n */\r\n\r\n/**\r\n * is Development or Questys' Demo Url\r\n * @return {boolean} true if is Development or Questys' Demo Url\r\n */\r\nconst isDevOps = () => {\r\n if (isDevelopment) {\r\n return true;\r\n }\r\n //\r\n // A Back-door for questys cloud Demo Purposes ...\r\n //\r\n const urls = [\r\n \"https://demo06.questyscloud.com\",\r\n \"https://demo05.questyscloud.com\",\r\n \"https://localhost:44377\"\r\n ];\r\n\r\n const url = urls.find(url => apiUrl?.startsWith(url) ?? false);\r\n\r\n return !isEmpty(url);\r\n};\r\n\r\n/**\r\n * determines whether feature is licensed\r\n * @param {{name: string, used: number, total: number}} feature Questys' feature\r\n * @return {boolean} returns whether Questys' feature is licensed\r\n */\r\nconst isLicencedFeature = feature => {\r\n switch (feature?.name) {\r\n case featureName.QuestysCMx:\r\n case featureName.Execute: {\r\n return true;\r\n }\r\n case featureName.WebScan: {\r\n /**\r\n * ensure Web Scan is available,\r\n * since the Web Scan feature is built into the cost of Access to the customer\r\n */\r\n return true;\r\n }\r\n default: {\r\n //\r\n // Remarks: eventually feature.used will be compared with feature.total\r\n // at this moment, just make sure that total license count is > 0,\r\n // since we do not have the means to determine used/released license count\r\n //\r\n return (feature?.total ?? 0) > 0;\r\n }\r\n }\r\n};\r\n\r\nexport {\r\n featureName,\r\n isAvailableFeature,\r\n isReleasedFeature,\r\n isLicencedFeature,\r\n featureStatus,\r\n isDevOps\r\n};\r\n","// design\r\nimport {\r\n iconFile,\r\n iconFileImage,\r\n iconFilePdf,\r\n iconFileWord,\r\n iconExcel,\r\n iconFileJpg,\r\n iconXml,\r\n iconFilePng,\r\n iconFileGif,\r\n iconEmail\r\n} from \"@/design/icon/iconConst\";\r\n\r\n// utils\r\nimport { isEmpty, toLowerCaseSafe } from \"@/utils\";\r\n\r\n/**\r\n * file Type enum which correspond to Questys.Common.FileType\r\n * @type {Readonly<{excelX: number, rtf: number, Svg: number, powerPointX: number, Html: number, Xhtml: number, unknown: number, wordX: number, excel: number, pdf: number, visio: number, Mhtml: number, Xml: number, ImageJpeg: number, Pcl: number, Pcl6: number, imageTiff: number, powerPoint: number, xps: number, text: number, word: number}>}\r\n */\r\nconst fileType = Object.freeze({\r\n unknown: 0,\r\n pdf: 1,\r\n word: 4,\r\n wordX: 5,\r\n excel: 6,\r\n excelX: 7,\r\n visio: 8,\r\n powerPoint: 9,\r\n powerPointX: 10,\r\n rtf: 11,\r\n xps: 12,\r\n text: 13,\r\n html: 14,\r\n xhtml: 15,\r\n mhtml: 16,\r\n xml: 17,\r\n svg: 18,\r\n pcl: 19,\r\n pcl6: 20,\r\n outlook: 21,\r\n imageTiff: 101,\r\n imageJpeg: 102,\r\n imageJpeg2000: 103,\r\n imagePng: 104,\r\n imageGif: 105,\r\n imageBmp: 106,\r\n imageEmf: 107,\r\n imagePcx: 108,\r\n imageTga: 109,\r\n imagePcd: 110\r\n});\r\n\r\n/**\r\n * File extensionName\r\n * @type {Readonly<{tif: string, pdf: string, tiff: string}>}\r\n */\r\nconst extensionName = Object.freeze({\r\n pdf: \"pdf\",\r\n word: \"doc\",\r\n wordX: \"docx\",\r\n excel: \"xls\",\r\n excelX: \"xlsx\",\r\n powerPoint: \"ppt\",\r\n powerPointX: \"pptx\",\r\n rtf: \"rtf\",\r\n xps: \"xps\",\r\n xml: \"xml\",\r\n svg: \"svg\",\r\n text: \"txt\",\r\n html: \"html\",\r\n tif: \"tif\",\r\n tiff: \"tiff\",\r\n jpg: \"jpg\",\r\n jpeg: \"jpeg\",\r\n png: \"png\",\r\n gif: \"gif\",\r\n bmp: \"bmp\",\r\n pcx: \"pcx\",\r\n msg: \"msg\"\r\n // add here more ...\r\n});\r\n\r\nconst extensionAcronym = Object.freeze({\r\n pdf: \"Portable Document Format (PDF)\",\r\n tif: \"Tag Image File Format (TIFF)\",\r\n jpeg: \"Joint Photographic Experts Group (JPG)\",\r\n png: \"Portable Network Graphic (PNG)\",\r\n gif: \"Graphics Interchange Format (GIF)\",\r\n bmp: \"Bitmap image file (BMP)\",\r\n pcx: \"Palette-indexed images (PCX)\"\r\n // add here more ...\r\n});\r\n\r\n/**\r\n * File extensions\r\n * @type {Readonly<{extension: string, acronym: string, icon: string}[]>}\r\n */\r\nconst extensions = Object.freeze([\r\n {\r\n extension: extensionName.pdf,\r\n acronym: extensionAcronym.pdf,\r\n icon: iconFilePdf\r\n },\r\n {\r\n extension: extensionName.tif,\r\n acronym: extensionAcronym.tif,\r\n icon: iconFileImage\r\n },\r\n {\r\n extension: extensionName.tiff,\r\n acronym: extensionAcronym.tif,\r\n icon: iconFileImage\r\n },\r\n {\r\n extension: extensionName.jpg,\r\n acronym: extensionAcronym.jpeg,\r\n icon: iconFileJpg\r\n },\r\n {\r\n extension: extensionName.jpeg,\r\n acronym: extensionAcronym.jpeg,\r\n icon: iconFileJpg\r\n },\r\n {\r\n extension: extensionName.png,\r\n acronym: extensionAcronym.png,\r\n icon: iconFilePng\r\n },\r\n {\r\n extension: extensionName.gif,\r\n acronym: extensionAcronym.gif,\r\n icon: iconFileGif\r\n },\r\n {\r\n extension: extensionName.bmp,\r\n acronym: extensionAcronym.bmp,\r\n icon: iconFileImage\r\n },\r\n {\r\n extension: extensionName.pcx,\r\n acronym: extensionAcronym.pcx,\r\n icon: iconFileImage\r\n }\r\n]);\r\n\r\n/**\r\n * find Extension\r\n * @param {string} name Extension name\r\n * @return {{extension: string, acronym: string, icon: string}}\r\n */\r\nconst findExtension = name => {\r\n return extensions.find(el => el.extension === name);\r\n};\r\n\r\n/**\r\n * file Types which correspond to Questys.Common.FileType\r\n * @type {{isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean}[]}\r\n */\r\nconst fileTypes = Object.freeze([\r\n {\r\n type: fileType.pdf,\r\n extensions: [extensionName.pdf],\r\n icon: iconFilePdf,\r\n canAnnotate: true,\r\n multiFramed: true,\r\n isImageFormat: true\r\n },\r\n {\r\n type: fileType.word,\r\n extensions: [extensionName.word],\r\n icon: iconFileWord,\r\n canAnnotate: false,\r\n multiFramed: true,\r\n isImageFormat: false\r\n },\r\n {\r\n type: fileType.word,\r\n extensions: [extensionName.wordX],\r\n icon: iconFileWord,\r\n canAnnotate: false,\r\n multiFramed: true,\r\n isImageFormat: false\r\n },\r\n {\r\n type: fileType.excel,\r\n extensions: [extensionName.excel],\r\n icon: iconExcel,\r\n canAnnotate: false,\r\n multiFramed: true,\r\n isImageFormat: false\r\n },\r\n {\r\n type: fileType.excelX,\r\n extensions: [extensionName.excelX],\r\n icon: iconExcel,\r\n canAnnotate: false,\r\n multiFramed: true,\r\n isImageFormat: false\r\n },\r\n {\r\n type: fileType.xml,\r\n extensions: [extensionName.xml],\r\n icon: iconXml,\r\n canAnnotate: false,\r\n multiFramed: true,\r\n isImageFormat: false\r\n },\r\n {\r\n type: fileType.imageTiff,\r\n extensions: [extensionName.tif, extensionName.tiff],\r\n icon: iconFileImage,\r\n canAnnotate: true,\r\n multiFramed: true,\r\n isImageFormat: true\r\n },\r\n {\r\n type: fileType.ImageJpeg,\r\n extensions: [extensionName.jpg, extensionName.jpeg],\r\n icon: iconFileJpg,\r\n canAnnotate: true,\r\n multiFramed: false,\r\n isImageFormat: true\r\n },\r\n {\r\n type: fileType.imagePng,\r\n extensions: [extensionName.png],\r\n icon: iconFilePng,\r\n canAnnotate: true,\r\n multiFramed: false,\r\n isImageFormat: true\r\n },\r\n {\r\n type: fileType.imageGif,\r\n extensions: [extensionName.gif],\r\n icon: iconFileGif,\r\n canAnnotate: false,\r\n multiFramed: false,\r\n isImageFormat: true\r\n },\r\n {\r\n type: fileType.imageBmp,\r\n extensions: [extensionName.bmp],\r\n icon: iconFileImage,\r\n canAnnotate: false,\r\n multiFramed: false,\r\n isImageFormat: true\r\n },\r\n {\r\n type: fileType.imagePcx,\r\n extensions: [extensionName.pcx],\r\n icon: iconFileImage,\r\n canAnnotate: false,\r\n multiFramed: false,\r\n isImageFormat: true\r\n },\r\n {\r\n type: fileType.outlook,\r\n extensions: [extensionName.msg],\r\n icon: iconEmail,\r\n canAnnotate: false,\r\n multiFramed: true,\r\n isImageFormat: false\r\n }\r\n // add here more ...\r\n]);\r\n\r\n/**\r\n * find File Type\r\n * @param {Number} type File Type\r\n * @return {{extensions: ({name: string, icon: string}|{name: string, icon: string}|{name: string, icon: string}), type: string}}\r\n */\r\nconst findFileType = type => {\r\n return fileTypes.find(ft => ft.type === type);\r\n};\r\n\r\n/**\r\n * is Pdf file Extension\r\n * @param {String|string} extension file Extension\r\n * @return {boolean} true if Extension is Pdf file type Extension\r\n */\r\nconst isPdfExtension = extension => {\r\n return toLowerCaseSafe(extension) === extensionName.pdf;\r\n};\r\n\r\n/**\r\n * Image File Types\r\n * @return {{isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean}[]} Image File Types\r\n */\r\nconst imageFileTypes = () => {\r\n return fileTypes.filter(ft => ft.isImageFormat);\r\n};\r\n\r\n/**\r\n * find Image File Type by file extension\r\n * @param {string} ext\r\n * @return {{isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean}}\r\n */\r\nconst findImageFileType = ext =>\r\n imageFileTypes().find(ft =>\r\n ft.extensions.find(x => toLowerCaseSafe(x) === toLowerCaseSafe(ext))\r\n );\r\n\r\n/**\r\n * annotate-able FileTypes\r\n * @return {({isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean}|{isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean}|{isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean}|{isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean}|{isImageFormat: boolean, extensions: string[], canAnnotate: boolean, icon: string, type: number, multiFramed: boolean})[]}\r\n */\r\nconst annotateFileTypes = () => {\r\n return fileTypes.filter(ft => ft.canAnnotate);\r\n};\r\n\r\n/**\r\n * is Annotate File Type Extension\r\n * @param {string} ext\r\n * @return {boolean} true if Annotate File Type Extension\r\n */\r\nconst isAnnotateFileTypeExtension = ext => {\r\n const ex = annotateFileTypes().find(el =>\r\n el.extensions.find(ex => toLowerCaseSafe(ex) === toLowerCaseSafe(ext))\r\n );\r\n return !isEmpty(ex);\r\n};\r\n\r\n/**\r\n * find File Type Icon\r\n * @param {string} extension\r\n * @return {string}\r\n */\r\nconst findFileTypeIcon = extension => {\r\n return (\r\n fileTypes.find(ft =>\r\n ft.extensions.find(ext => ext === toLowerCaseSafe(extension))\r\n )?.icon ?? iconFile\r\n );\r\n};\r\n\r\n/**\r\n * check In File Options\r\n * @type {Readonly<{insertAfterLastPage: number, overwrite: number, insertBeforeFirstPage: number}>}\r\n */\r\nconst checkInFileOption = Object.freeze({\r\n insertBeforeFirstPage: 0,\r\n insertAfterLastPage: 1,\r\n overwrite: 2\r\n});\r\n\r\n/**\r\n * check In File Options\r\n * @type {value: number, {text: string}[]}\r\n */\r\nconst checkInFileOptions = Object.freeze([\r\n {\r\n value: checkInFileOption.insertBeforeFirstPage,\r\n text: \"Insert before first page\"\r\n },\r\n {\r\n value: checkInFileOption.insertAfterLastPage,\r\n text: \"Insert after last page\"\r\n },\r\n {\r\n value: checkInFileOption.overwrite,\r\n text: \"Overwrite\"\r\n }\r\n]);\r\n\r\n/**\r\n * check In File Options for WIP File\r\n * @type {value: number, {text: string}[]}\r\n */\r\nconst checkInWIPFileOptions = Object.freeze([\r\n {\r\n value: checkInFileOption.insertBeforeFirstPage,\r\n text: \"Insert before first page of Previous Version\"\r\n },\r\n {\r\n value: checkInFileOption.insertAfterLastPage,\r\n text: \"Insert after last page of Previous Version\"\r\n },\r\n {\r\n value: checkInFileOption.overwrite,\r\n text: \"Overwrite Previous Version\"\r\n }\r\n]);\r\n\r\n/**\r\n * check In Compound Document File Options\r\n * @param pageNumber Insert before page number\r\n * @return {({text: string, value: number}|{text: string, value: number}|{text: string, value: number}|{text: string, value: number})[]}\r\n */\r\nconst checkInCompoundDocumentFileOptions = pageNumber =>\r\n Object.freeze([\r\n {\r\n value: checkInFileOption.insertBeforeFirstPage,\r\n text: \"Insert before first page\"\r\n },\r\n {\r\n value: checkInFileOption.insertAfterLastPage,\r\n text: `Insert before page ${pageNumber}`\r\n },\r\n {\r\n value: checkInFileOption.insertAfterLastPage,\r\n text: \"Insert after last page\"\r\n },\r\n {\r\n value: checkInFileOption.overwrite,\r\n text: \"Overwrite\"\r\n }\r\n ]);\r\n\r\n/**\r\n * check In Single Image File Extensions\r\n * @type {{value: string, key: string, icon: string} []}\r\n */\r\nconst checkInSingleImageFileExtensions = Object.freeze([\r\n {\r\n key: extensionAcronym.tif,\r\n value: extensionName.tif,\r\n icon: iconFileImage\r\n },\r\n {\r\n key: extensionAcronym.pdf,\r\n value: extensionName.pdf,\r\n icon: iconFilePdf\r\n },\r\n {\r\n key: extensionAcronym.jpeg,\r\n value: extensionName.jpeg,\r\n icon: iconFileJpg\r\n }\r\n]);\r\n\r\n/**\r\n * check In Multiple Image File Extensions\r\n * @type {{value: string, key: string, icon: string} []}\r\n */\r\nconst checkInMultipleImageFileExtensions = Object.freeze([\r\n {\r\n key: extensionAcronym.tif,\r\n value: extensionName.tif,\r\n icon: iconFileImage\r\n },\r\n {\r\n key: extensionAcronym.pdf,\r\n value: extensionName.pdf,\r\n icon: iconFilePdf\r\n }\r\n]);\r\n\r\n/**\r\n * check In Compound File Extensions for Multiple Images\r\n * @type {{value: string, key: string, icon: string} []}\r\n */\r\nconst checkInCompoundMultipleImageFileExtensions = Object.freeze([\r\n {\r\n key: extensionAcronym.pdf,\r\n value: extensionName.pdf,\r\n icon: iconFilePdf\r\n }\r\n]);\r\n\r\n/**\r\n * download File Option\r\n * @type {Readonly<{asItIs: number, asPdf: number}>}\r\n */\r\nconst downloadFileOption = Object.freeze({\r\n asItIs: 0,\r\n asPdf: 1\r\n});\r\n\r\n/**\r\n * download File Options\r\n * @type {{description: string, option: number}[]}\r\n */\r\nconst downloadFileOptions = Object.freeze([\r\n {\r\n option: downloadFileOption.asItIs,\r\n description: \"Download As It It\"\r\n },\r\n {\r\n option: downloadFileOption.asPdf,\r\n description: \"Download As PDF\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Download File Option\r\n * @param {Number} option Download File Option\r\n * @return {{description: string, option: number}}\r\n */\r\nconst findDownloadFileOption = option => {\r\n return downloadFileOptions.find(el => el.option === option);\r\n};\r\n\r\n/**\r\n * insert File Option\r\n * @type {Readonly<{afterLastPage: number, beforeFirstPage: number, overwrite: number}>}\r\n */\r\nconst insertFileOption = Object.freeze({\r\n beforeFirstPage: 0,\r\n afterLastPage: 1,\r\n overwrite: 2\r\n});\r\n\r\n/**\r\n * find Check In Multiple Image File Extension\r\n * @param {string} value Multiple Image File Extension\r\n * @return {{value: string, key: string, icon: string}} Check In Multiple Image File Extension\r\n */\r\nconst findCheckInMultipleImageFileExtension = value =>\r\n checkInMultipleImageFileExtensions.find(el => el?.value === value);\r\n\r\n/**\r\n * find Check In Single Image File Extensions\r\n * @param {string} value Single Image File Extension\r\n * @return {{value: string, key: string, icon: string}} Check In Single Image File Extension\r\n */\r\nconst findCheckInSingleImageFileExtensions = value =>\r\n checkInSingleImageFileExtensions.find(el => el?.value === value);\r\n\r\n/**\r\n * get File Size\r\n * @param {number} bytes\r\n * @param {number} decimals\r\n * @return {{unit: string, size: number}}\r\n */\r\nconst getFileSize = (bytes, decimals = 2) => {\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n\r\n if (bytes === 0)\r\n return {\r\n size: 0,\r\n unit: sizes[0]\r\n };\r\n\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return {\r\n size: parseFloat((bytes / Math.pow(k, i)).toFixed(dm)),\r\n unit: sizes[i]\r\n };\r\n};\r\n\r\nconst findCheckinFileOption = value => {\r\n return checkInFileOptions.find(ft => ft?.value === value);\r\n};\r\n\r\n/**\r\n * Download File Mode\r\n * @type {Readonly<{default: number, view: number, viewerExport: number, wip: number}>}\r\n */\r\nconst downloadFileMode = Object.freeze({\r\n default: 0,\r\n wip: 1,\r\n view: 2,\r\n viewerExport: 3\r\n});\r\n\r\nexport {\r\n fileType,\r\n fileTypes,\r\n findFileType,\r\n findFileTypeIcon,\r\n extensionName,\r\n checkInFileOption,\r\n checkInFileOptions,\r\n checkInSingleImageFileExtensions,\r\n checkInMultipleImageFileExtensions,\r\n checkInCompoundMultipleImageFileExtensions,\r\n extensionAcronym,\r\n checkInCompoundDocumentFileOptions,\r\n findCheckInMultipleImageFileExtension,\r\n findCheckInSingleImageFileExtensions,\r\n checkInWIPFileOptions,\r\n insertFileOption,\r\n extensions,\r\n findExtension,\r\n imageFileTypes,\r\n findImageFileType,\r\n downloadFileOptions,\r\n findDownloadFileOption,\r\n annotateFileTypes,\r\n isAnnotateFileTypeExtension,\r\n getFileSize,\r\n isPdfExtension,\r\n findCheckinFileOption,\r\n downloadFileMode\r\n};\r\n","import { toLowerCaseSafe } from \"@/utils\";\r\n\r\n/**\r\n * Questys Field Name\r\n * @type {Readonly<{sequence: string, immutable: string, requiredForAutoFiling: string, name: string, unselectable: string, id: string, label: string}>}\r\n */\r\nconst fieldName = Object.freeze({\r\n id: \"id\",\r\n name: \"name\",\r\n label: \"label\",\r\n immutable: \"immutable\",\r\n requiredForAutoFiling: \"requiredForAutoFiling\",\r\n sequence: \"sequence\",\r\n unselectable: \"unselectable\"\r\n});\r\n\r\n/**\r\n * Questys Field Label\r\n * @type {Readonly<{sequence: string, immutable: string, requiredForAutoFiling: string, name: string, unselectable: string, id: string, label: string}>}\r\n */\r\nconst fieldLabel = Object.freeze({\r\n id: \"Id\",\r\n name: \"Name\",\r\n label: \"Label\",\r\n immutable: \"Immutable\",\r\n requiredForAutoFiling: \"Required For Auto Filing\",\r\n sequence: \"Sequence\",\r\n unselectable: \"Unselectable\"\r\n});\r\n\r\n/**\r\n * Search Operator Type\r\n * @type {Readonly<{equal: number, contains: number, equalOrGreaterThan: number, like: number, lessThan: number, equalOrLessThan: number, on: number, greaterThan: number}>}\r\n */\r\nconst searchOperator = Object.freeze({\r\n equal: 0,\r\n on: 1,\r\n like: 2,\r\n contains: 3,\r\n greaterThan: 4,\r\n equalOrGreaterThan: 5,\r\n lessThan: 6,\r\n equalOrLessThan: 7\r\n});\r\n\r\n/**\r\n * Search Operators\r\n * @type {{description: string, operator: string}[]}\r\n */\r\nconst searchOperators = Object.freeze([\r\n { id: searchOperator.equal, description: \"Equal\", operator: \"=\" },\r\n { id: searchOperator.on, description: \"On\", operator: \"ON\" },\r\n { id: searchOperator.like, description: \"Like\", operator: \"*\" },\r\n {\r\n id: searchOperator.contains,\r\n description: \"Contains\",\r\n operator: \"CONTAINS\"\r\n },\r\n {\r\n id: searchOperator.greaterThan,\r\n description: \"Greater Than\",\r\n operator: \">\"\r\n },\r\n {\r\n id: searchOperator.equalOrGreaterThan,\r\n description: \"Equal Or Greater Than\",\r\n operator: \">=\"\r\n },\r\n { id: searchOperator.lessThan, description: \"Less Than\", operator: \"<\" },\r\n {\r\n id: searchOperator.equalOrLessThan,\r\n description: \"Equal Or Less Than\",\r\n operator: \"<=\"\r\n }\r\n]);\r\n\r\n/**\r\n * find search Operator by searchOperator Id\r\n * @param {number} id searchOperator Id\r\n * @return {{id: number, name: string, flags: number, label: string, searchOperators: {operator: string, description: string}[]}}\r\n */\r\nconst findSearchOperator = id => {\r\n return searchOperators.find(el => el.id === id);\r\n};\r\n\r\nconst rangeFromOperators = Object.freeze([\r\n searchOperators[searchOperator.greaterThan],\r\n searchOperators[searchOperator.equalOrGreaterThan]\r\n]);\r\n\r\nconst isRangeFromOperator = operator =>\r\n rangeFromOperators.filter(el => el.operator === operator).length > 0;\r\n\r\nconst rangeToOperators = Object.freeze([\r\n searchOperators[searchOperator.lessThan],\r\n searchOperators[searchOperator.equalOrLessThan]\r\n]);\r\n\r\nconst literalSearchOperators = Object.freeze([\r\n searchOperators[searchOperator.equal],\r\n searchOperators[searchOperator.like]\r\n]);\r\n\r\nconst textSearchOperators = Object.freeze([\r\n searchOperators[searchOperator.contains]\r\n]);\r\n\r\nconst numericSearchOperators = Object.freeze([\r\n searchOperators[searchOperator.equal],\r\n searchOperators[searchOperator.greaterThan],\r\n searchOperators[searchOperator.equalOrGreaterThan],\r\n searchOperators[searchOperator.lessThan],\r\n searchOperators[searchOperator.equalOrLessThan]\r\n]);\r\n\r\nconst dateSearchOperators = Object.freeze([\r\n searchOperators[searchOperator.on],\r\n searchOperators[searchOperator.greaterThan],\r\n searchOperators[searchOperator.equalOrGreaterThan],\r\n searchOperators[searchOperator.lessThan],\r\n searchOperators[searchOperator.equalOrLessThan]\r\n]);\r\n\r\nconst bitSearchOperators = Object.freeze([\r\n searchOperators[searchOperator.equal]\r\n]);\r\n\r\n/**\r\n * Get Questys Field Data Type\r\n * @type {Readonly<{CURRENCY: number, DATE: number, NUMBER: number, LITERAL: number, TEXT: number, BIT: number, INTEGER: number}>}\r\n */\r\nconst fieldType = Object.freeze({\r\n TEXT: 0,\r\n BIT: 1,\r\n CURRENCY: 2,\r\n DATE: 3,\r\n INTEGER: 4,\r\n LITERAL: 5,\r\n NUMBER: 6\r\n});\r\n\r\n/**\r\n * Determines whether Questys Field Data Type is numeric\r\n * @param {number} type\r\n * @return {boolean}\r\n */\r\nconst isNumericFieldType = type => {\r\n return (\r\n type === fieldType.NUMBER ||\r\n type === fieldType.INTEGER ||\r\n type === fieldType.CURRENCY\r\n );\r\n};\r\n\r\n/**\r\n * Questys Field Data Types\r\n * @type {({id:number, name:string, flags:number, label:string, searchOperators:[{operator:string, description:string}]})[]}\r\n */\r\nconst fieldTypes = Object.freeze([\r\n {\r\n id: fieldType.TEXT,\r\n name: \"TEXT\",\r\n label: \"Text\",\r\n flags: 0,\r\n searchOperators: textSearchOperators\r\n },\r\n {\r\n id: fieldType.BIT,\r\n name: \"BIT\",\r\n label: \"Bit\",\r\n flags: 0,\r\n searchOperators: bitSearchOperators\r\n },\r\n {\r\n id: fieldType.CURRENCY,\r\n name: \"CURRENCY\",\r\n label: \"Currency\",\r\n flags: 0,\r\n searchOperators: numericSearchOperators\r\n },\r\n {\r\n id: fieldType.DATE,\r\n name: \"DATE\",\r\n label: \"Date\",\r\n flags: 0,\r\n searchOperators: dateSearchOperators\r\n },\r\n {\r\n id: fieldType.INTEGER,\r\n name: \"INTEGER\",\r\n label: \"Integer\",\r\n flags: 0,\r\n searchOperators: numericSearchOperators\r\n },\r\n {\r\n id: fieldType.LITERAL,\r\n name: \"LITERAL\",\r\n label: \"Literal\",\r\n flags: 0,\r\n searchOperators: literalSearchOperators\r\n },\r\n {\r\n id: fieldType.NUMBER,\r\n name: \"NUMBER\",\r\n label: \"Number\",\r\n flags: 0,\r\n searchOperators: numericSearchOperators\r\n }\r\n]);\r\n\r\n/**\r\n * find Field Type\r\n * @param {Number|number} fieldTypeId\r\n * @return {{id: number, name: string, flags: number, label: string, searchOperators: {operator: string, description: string}[]}}\r\n */\r\nconst findFieldType = fieldTypeId => {\r\n return fieldTypes.find(el => el.id === fieldTypeId);\r\n};\r\n\r\n/**\r\n * Is Field Range Searchable\r\n * @param {fieldType: number} fieldDataType\r\n * @return {boolean}\r\n */\r\nconst isRangeSearchable = fieldDataType =>\r\n fieldDataType === fieldType.INTEGER ||\r\n fieldDataType === fieldType.NUMBER ||\r\n fieldDataType === fieldType.CURRENCY ||\r\n fieldDataType === fieldType.DATE;\r\n\r\nconst defaultSearchOperator = fieldDataType => {\r\n if (fieldDataType === fieldType.DATE) {\r\n return searchOperators[searchOperator.on].operator;\r\n } else if (fieldDataType === fieldType.TEXT) {\r\n return searchOperators[searchOperator.contains].operator;\r\n }\r\n\r\n return searchOperators[searchOperator.equal].operator;\r\n};\r\n\r\nconst defaultSearchRangeToOperator =\r\n searchOperators[searchOperator.lessThan].operator;\r\n\r\n/**\r\n * Get Maximum Text-Memo field character count that will be loaded by default when getRecord() is called\r\n * @type {number} Maximum Text-Memo field character count\r\n */\r\nconst maxMemoFieldLength = 4096;\r\n\r\nconst fieldOperationName = Object.freeze({\r\n none: \"None\",\r\n view: \"View\",\r\n update: \"Update\",\r\n add: \"Add\",\r\n delete: \"Delete\"\r\n});\r\n\r\n/**\r\n * is Allowed current user to Modify Field\r\n * @param {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean, unselectable:boolean, operations: {name:string, allowed:boolean, valid:boolean}[]}} field\r\n * @return {boolean}\r\n */\r\nconst isAllowedModifyField = field =>\r\n (findFieldOperation(field?.operations, fieldOperationName.view)?.allowed ??\r\n false) &&\r\n (findFieldOperation(field?.operations, fieldOperationName.update)?.allowed ??\r\n false) &&\r\n (findFieldOperation(field?.operations, fieldOperationName.add)?.allowed ??\r\n false) &&\r\n (findFieldOperation(field?.operations, fieldOperationName.delete)?.allowed ??\r\n false);\r\n\r\n/**\r\n * is Allowed current user to view/access Field\r\n * @param {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean, unselectable:boolean, operations: {name:string, allowed:boolean, valid:boolean}[]}} field\r\n * @return {boolean} return true if current user is Allowed to view/access Field\r\n */\r\nconst isAllowedViewField = field =>\r\n findFieldOperation(field?.operations ?? [], fieldOperationName.view)\r\n ?.allowed ?? false;\r\n\r\n/**\r\n * is Allowed Field Operation\r\n * @param {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean, unselectable:boolean, operations: {name:string, allowed:boolean, valid:boolean}[]}} field\r\n * @param {string} operation Field Operation (View, Update, Add, Delete)\r\n * @return {boolean} returns true if Field Operation is Allowed\r\n */\r\nconst isAllowedFieldOperation = (field, operation) => {\r\n return (\r\n findFieldOperation(field?.operations ?? [], operation)?.allowed ?? false\r\n );\r\n};\r\n\r\n/**\r\n * is Valid Field Operation\r\n * @param {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean, unselectable:boolean, operations: {name:string, allowed:boolean, valid:boolean}[]}} field\r\n * @param {string} operation Field Operation (View, Update, Add, Delete)\r\n * @return {boolean} returns true if Field Operation is Valid\r\n */\r\nconst isValidFieldOperation = (field, operation) => {\r\n return findFieldOperation(field?.operations ?? [], operation)?.valid ?? false;\r\n};\r\n\r\n/**\r\n * find Field Operation\r\n * @param {{name:string, allowed:boolean, valid:boolean}[]} operations field operations\r\n * @param {string} operation Field Operations\r\n * @return {{name:string, allowed:boolean, valid:boolean}} return found Field Operation\r\n */\r\nconst findFieldOperation = (operations, operation) => {\r\n return operations?.find(\r\n op => toLowerCaseSafe(op.name) === toLowerCaseSafe(operation)\r\n );\r\n};\r\n\r\nexport {\r\n fieldName,\r\n fieldLabel,\r\n fieldTypes,\r\n fieldType,\r\n literalSearchOperators,\r\n textSearchOperators,\r\n numericSearchOperators,\r\n dateSearchOperators,\r\n bitSearchOperators,\r\n searchOperators,\r\n searchOperator,\r\n rangeFromOperators,\r\n rangeToOperators,\r\n defaultSearchRangeToOperator,\r\n maxMemoFieldLength,\r\n fieldOperationName,\r\n isRangeFromOperator,\r\n isRangeSearchable,\r\n defaultSearchOperator,\r\n isNumericFieldType,\r\n findFieldType,\r\n findSearchOperator,\r\n isAllowedFieldOperation,\r\n isValidFieldOperation,\r\n isAllowedModifyField,\r\n isAllowedViewField\r\n};\r\n","/**\r\n * Encapsulate Colors in the Material Design spec\r\n */\r\n\r\n/**\r\n * Vuetify Color Theme Names\r\n * Vuetify has a standard theme applied for all components using these colorName type moduleNames\r\n * This can be easily changed. Simply pass a theme property to the Vuetify constructor\r\n * please see: plugins.vuetify\r\n * @type {Readonly<{secondary: string, success: string, warning: string, error: string, accent: string, primary: string, info: string}>}\r\n */\r\nconst colorTheme = Object.freeze({\r\n primary: \"primary\",\r\n secondary: \"secondary\",\r\n accent: \"accent\",\r\n error: \"error\",\r\n info: \"info\",\r\n success: \"success\",\r\n warning: \"warning\"\r\n});\r\n\r\n/**\r\n * Material design colorName palette moduleNames\r\n * @type {Readonly<{pink: string, deepPurple: string, green: string, lightBlue: string, lime: string, yellow: string, black: string, teal: string, amber: string, brown: string, cyan: string, transparent: string, grey: string, red: string, orange: string, lightGreen: string, blue: string, white: string, blueGrey: string, purple: string, deepOrange: string, indigo: string}>}\r\n */\r\nconst colorMD = Object.freeze({\r\n red: \"red\",\r\n pink: \"pink\",\r\n purple: \"purple\",\r\n deepPurple: \"deep-purple\",\r\n indigo: \"indigo\",\r\n blue: \"blue\",\r\n lightBlue: \"light-blue\",\r\n cyan: \"cyan\",\r\n teal: \"teal\",\r\n green: \"green\",\r\n lightGreen: \"light-green\",\r\n lime: \"lime\",\r\n yellow: \"yellow\",\r\n amber: \"amber\",\r\n orange: \"orange\",\r\n deepOrange: \"deep-orange\",\r\n brown: \"brown\",\r\n blueGrey: \"blue-grey\",\r\n grey: \"grey\",\r\n black: \"black\",\r\n white: \"white\",\r\n transparent: \"transparent\"\r\n});\r\n\r\n/**\r\n * Material design colorName Variant Type\r\n * @type {{lighten: string, darken: string}}\r\n */\r\nconst variantType = Object.freeze({\r\n lighten: \"lighten\",\r\n darken: \"darken\"\r\n});\r\n\r\n/**\r\n * Material design colorName Variant Number\r\n * @type {Readonly<{n1: number, n2: number, n3: number, n4: number, n5: number}>}\r\n */\r\nconst variantNumber = Object.freeze({\r\n n1: 1,\r\n n2: 2,\r\n n3: 3,\r\n n4: 4,\r\n n5: 5\r\n});\r\n\r\n/**\r\n * Get Material design Color Class\r\n * @param {String|string} colorName\r\n * @param {String|string} variant\r\n * @param {Number} variantNumber\r\n * @returns {String|string} {string}\r\n */\r\nconst getMDColorClass = (colorName, variant, variantNumber) =>\r\n `${colorName} ${variant}-${variantNumber}`;\r\n\r\nexport { colorMD, colorTheme, variantNumber, variantType, getMDColorClass };\r\n","import { isBlob, trimEnd } from \"@/utils\";\r\n\r\n/**\r\n * Handle Service Error\r\n * @param error\r\n * @param {string|undefined} message\r\n * @return {Promise}\r\n */\r\nconst handleError = async (error, message = undefined) => {\r\n let errorMsg;\r\n\r\n console.error(\"error:\", error);\r\n // console.warn(\"error?.response:\", error?.response);\r\n\r\n if (error?.response) {\r\n //\r\n // Handle Microsoft.AspNetCore.Mvc.ProblemDetails gotten from error.response.data\r\n //\r\n const status = error?.response?.status;\r\n console.warn(\"response status:\", status);\r\n\r\n const statusText = error?.response?.statusText;\r\n console.warn(\"response status Text:\", statusText);\r\n\r\n const data = error.response?.data;\r\n\r\n let title = data?.title ?? \"\";\r\n let detail = data?.detail ?? \"\";\r\n\r\n if (isBlob(data)) {\r\n // The text() method in the Blob interface returns a Promise\r\n // that resolves with a string containing the contents of the blob,\r\n // interpreted as UTF-8.\r\n const error = await data.text();\r\n const problem = error ? JSON.parse(error) : undefined;\r\n // Set problem data\r\n title = problem?.title;\r\n detail = problem?.detail;\r\n }\r\n if (detail) {\r\n console.warn(\"problem detail:\", detail);\r\n }\r\n if (!title) {\r\n title = error;\r\n }\r\n errorMsg = message ? `${trimEnd(message, \".\")}. ${title}` : title;\r\n } else {\r\n errorMsg = message\r\n ? `${trimEnd(message, \".\")}. ${error?.toString()}`\r\n : error?.toString();\r\n }\r\n\r\n console.error(errorMsg);\r\n\r\n return Promise.reject(errorMsg);\r\n};\r\n\r\nconst br = \"
\";\r\n\r\n/**\r\n * format user friendly Error Message\r\n * @param {string} problem\r\n * @param {string} msg\r\n * @param {string} details\r\n * @param {string} hint\r\n * @return {string} returns user friendly formatted Error Message\r\n */\r\nconst errorMessage = (problem, msg, details, hint = undefined) => {\r\n return hint\r\n ? `${problem}.${br}${msg}${br}${details}.${br}${hint}`\r\n : `${problem}.${br}${msg}${br}${details}.`;\r\n};\r\n\r\nexport { handleError, errorMessage };\r\n","// model\r\nimport {\r\n moduleNames,\r\n moduleTitles,\r\n moduleIcons,\r\n appModules\r\n} from \"@/model/solution/moduleModel\";\r\n\r\n// utilities\r\nimport {\r\n getLocalStorageItem,\r\n setLocalStorageItem,\r\n repoUserLocalStorageKey\r\n} from \"@/utils/localStorageUtility\";\r\n\r\n/**\r\n * Get Application module name\r\n * @param {String|string} name Application module name\r\n * @returns {{name: string, icon: string, title: string, feature: string, public: boolean}}\r\n */\r\nconst findAppModule = name => appModules.find(el => el.name === name);\r\n\r\n/**\r\n * Solution local Store Keys\r\n * @type {Readonly<{moduleName: string}>}\r\n */\r\nconst localStorageKey = Object.freeze({\r\n moduleName: \"module\"\r\n});\r\n\r\n/**\r\n * Get Application module name from local Storage\r\n * @returns {String|string|null|undefined} Application module name\r\n */\r\nconst getStoredAppModuleName = () =>\r\n getLocalStorageItem(repoUserLocalStorageKey(localStorageKey.moduleName));\r\n\r\n/**\r\n * Store Application module name to the local Storage\r\n * @param {String|string} name Application module name\r\n */\r\nconst storeAppModuleName = name =>\r\n setLocalStorageItem(\r\n repoUserLocalStorageKey(localStorageKey.moduleName),\r\n name\r\n );\r\n\r\nexport {\r\n moduleNames,\r\n moduleIcons,\r\n moduleTitles,\r\n findAppModule,\r\n getStoredAppModuleName,\r\n storeAppModuleName\r\n};\r\n","// services\r\nimport { moduleNames } from \"@/services/solution/solutionService\";\r\nimport { isPublicAccess } from \"@/services/config/configService\";\r\nimport { isRecordExpandable } from \"@/services/record/recordService\";\r\n\r\n// utils\r\nimport { isNumber } from \"@/utils\";\r\n\r\n/**\r\n * route Params\r\n * @type {Readonly<{id: string, expandedId: string}>}\r\n */\r\nconst routeParams = Object.freeze({\r\n id: \"id\",\r\n expandedId: \"expandedId\"\r\n});\r\n\r\n/**\r\n * route root Name\r\n * @type {string}\r\n */\r\nconst rootName = isPublicAccess ? \"Public\" : \"Questys\";\r\n\r\n/**\r\n * route Names\r\n * @type {Readonly<{notImplemented: string, error404: string, root: string, login: string, home: string}>}\r\n */\r\nconst routeNames = Object.freeze({\r\n home: \"Home\",\r\n login: \"Login\",\r\n root: rootName,\r\n notImplemented: \"notImplemented\",\r\n error404: \"404 Error\"\r\n});\r\n\r\n/**\r\n * create App Module Route Name\r\n * @param {String|string} moduleName\r\n */\r\nconst createAppModuleRouteName = moduleName => moduleName;\r\n\r\n/**\r\n * create Application Module Route\r\n * @param {string} moduleName\r\n * @returns {{name: string}}\r\n */\r\nconst createAppModuleRoute = moduleName => {\r\n return { name: moduleName };\r\n};\r\n\r\n/**\r\n * create Application's Module route Path based on module name\r\n * @param {String} moduleName\r\n * @returns {string}\r\n */\r\nconst createAppModuleRoutePath = moduleName => {\r\n return process.env.BASE_URL === \"/\"\r\n ? `/${rootName}/${moduleName}`\r\n : `/${moduleName}`;\r\n};\r\n\r\n/**\r\n * create Application Module content route Name based on Module and content name\r\n * @param {String|string} moduleName\r\n * @returns {String|string}\r\n */\r\nconst createModuleContentRouteName = moduleName => `${moduleName}_content`;\r\n\r\n/**\r\n * create Module expand Record Content Route Name\r\n * @param {String|string} moduleName module Name\r\n * @return {String|string} Module Child Record Content Route Name\r\n */\r\nconst createModuleExpandRecordContentRouteName = moduleName =>\r\n `${moduleName}_content_expand`;\r\n\r\n/**\r\n * create Module expand Record Shortcut Content Route Name\r\n * @param {String|string} moduleName module Name\r\n * @return {String|string} Module Child Record Content Route Name\r\n */\r\nconst createModuleExpandRecordShortcutContentRouteName = moduleName =>\r\n `${moduleName}_shortcut_content_expand`;\r\n\r\n/**\r\n * create Module Record Route Location\r\n * @param {String|string} moduleName module Name\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\nconst createModuleRecordRouteLocation = (moduleName, record) => {\r\n return isRecordExpandable(record)\r\n ? createModuleItemContentRouteLocation(moduleName, record?.id ?? -1)\r\n : record?.isLink ?? false\r\n ? createModuleChildRecordShortcutContentRouteLocation(\r\n moduleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n )\r\n : createModuleChildRecordContentRouteLocation(\r\n moduleName,\r\n record?.id ?? -1,\r\n record?.parentId ?? -1\r\n );\r\n};\r\n\r\n/**\r\n * create Module Child Record Content Route Location\r\n * @param {String|string} moduleName module Name\r\n * @param {Number|number} id Record id\r\n * @param {Number|number} parentId Record's parent id\r\n * @return {{name: String|string, params: {expandedId: Number|number, id: Number|number}}}\r\n */\r\nconst createModuleChildRecordContentRouteLocation = (\r\n moduleName,\r\n id,\r\n parentId\r\n) => {\r\n return {\r\n name: createModuleExpandRecordContentRouteName(moduleName),\r\n params: { id: id, expandedId: parentId }\r\n };\r\n};\r\n\r\n/**\r\n * create Module Child Record Shortcut Content Route Location\r\n * @param {String|string} moduleName module Name\r\n * @param {Number|number} id Record id\r\n * @param {Number|number} parentId Record's parent id\r\n * @return {{name: String|string, params: {expandedId: Number|number, id: Number|number}}}\r\n */\r\nconst createModuleChildRecordShortcutContentRouteLocation = (\r\n moduleName,\r\n id,\r\n parentId\r\n) => {\r\n return {\r\n name: createModuleExpandRecordShortcutContentRouteName(moduleName),\r\n params: { id: id, expandedId: parentId }\r\n };\r\n};\r\n\r\n/**\r\n * create Module Item Content Route Location\r\n * @param {String|string} moduleName module Name\r\n * @param {Number|number} id record id\r\n * @return {{name: (String|string), params: {id: Number|number}}}\r\n */\r\nconst createModuleItemContentRouteLocation = (moduleName, id) => {\r\n return {\r\n name: createModuleContentRouteName(moduleName),\r\n params: { id: id }\r\n };\r\n};\r\n\r\n/**\r\n * create Module Route Path using a route parameter name\r\n * @param {String} paramName\r\n * @returns {string}\r\n */\r\nconst createModuleRoutePath = (paramName = routeParams.id) => {\r\n return `:${paramName}`;\r\n};\r\n\r\n/**\r\n * expanded Route Path\r\n * @return {\":expandedId/:id\"}\r\n */\r\nconst expandedRoutePath = `:${routeParams.expandedId}/:${routeParams.id}`;\r\n\r\n/**\r\n * shortcut Route Path\r\n * @return {\":expandedId/shortcuts/:id\"}\r\n */\r\nconst shortcutRoutePath = `:${routeParams.expandedId}/shortcuts/:${routeParams.id}`;\r\n\r\n/**\r\n * create Module Details Route Path\r\n * @param paramName\r\n * @returns {string}\r\n */\r\nconst createModuleDetailsRoutePath = (paramName = routeParams.id) => {\r\n return `:${paramName}`;\r\n};\r\n\r\n/**\r\n * create Module Sub-Details Route Name\r\n * @param {String} moduleName\r\n * @param {String} moduleRouteName\r\n * @param {String} tabRouteName\r\n * @returns {string}\r\n */\r\nconst createModuleTabDetailsRouteName = (\r\n moduleName,\r\n moduleRouteName,\r\n tabRouteName\r\n) => `${moduleName}_${moduleRouteName}_${tabRouteName}`;\r\n\r\n/**\r\n * create Module Sub-Tab Details Route Name\r\n * @param {String} moduleName\r\n * @param {String} moduleRouteName\r\n * @param {String} tabRouteName\r\n * @param {String} subTabRouteName\r\n * @returns {string}\r\n */\r\nconst createModuleSubTabDetailsRouteName = (\r\n moduleName,\r\n moduleRouteName,\r\n tabRouteName,\r\n subTabRouteName\r\n) => `${moduleName}_${moduleRouteName}_${tabRouteName}_${subTabRouteName}`;\r\n\r\n/**\r\n * create Module Params Id\r\n * @param route\r\n * @return {{id: Number|number}}\r\n */\r\nconst createModuleParamsId = route => {\r\n const id = route?.params?.id?.toString();\r\n\r\n return {\r\n id: isNumber(id) ? Number(id) : -1\r\n };\r\n};\r\n\r\n/**\r\n * create Module Child Record Params id\r\n * @param route\r\n * @return {{ id: Number|number, expandedId: Number|number}}\r\n */\r\nconst createModuleChildRecordParamsId = route => {\r\n const id = route?.params?.id?.toString() ?? \"\";\r\n const expandedId = route?.params?.expandedId?.toString() ?? \"\";\r\n\r\n return {\r\n id: isNumber(id) ? Number(id) : -1,\r\n expandedId: isNumber(expandedId) ? Number(expandedId) : -1\r\n };\r\n};\r\n\r\n/**\r\n * Home Routes\r\n * @type {{redirect: {name: (String|string)}, path: string, name: string}[]}\r\n */\r\nconst homeRoutes = Object.freeze([\r\n {\r\n path: \"/\",\r\n name: routeNames.home,\r\n redirect: {\r\n name: isPublicAccess\r\n ? createAppModuleRouteName(moduleNames.Search)\r\n : createAppModuleRouteName(moduleNames.Folder)\r\n }\r\n },\r\n {\r\n path: `/${rootName}`,\r\n name: routeNames.root,\r\n redirect: {\r\n name: isPublicAccess\r\n ? createAppModuleRouteName(moduleNames.Search)\r\n : createAppModuleRouteName(moduleNames.Folder)\r\n }\r\n }\r\n]);\r\n\r\nconst loginRoutes = Object.freeze([\r\n {\r\n path: `/${routeNames.login}`,\r\n name: routeNames.login,\r\n meta: {\r\n requiresAuth: false,\r\n isFullscreen: true\r\n },\r\n component: () => import(\"@/views/user/Login\")\r\n }\r\n]);\r\n\r\n/**\r\n * Handle not found routes\r\n * @type {{path: string, component: (function(): Promise<*>), children: [{path: string, component: function(): Promise<*>, name: string}]}[]}\r\n */\r\nconst notFoundRoutes = Object.freeze([\r\n {\r\n path: \"*\",\r\n component: () => import(\"@/views/Home\"),\r\n children: [\r\n {\r\n name: routeNames.error404,\r\n path: \"\",\r\n component: () => import(\"@/views/shared/errors/NotFound\")\r\n }\r\n ]\r\n }\r\n]);\r\n\r\nexport {\r\n homeRoutes,\r\n loginRoutes,\r\n notFoundRoutes,\r\n routeParams,\r\n routeNames,\r\n expandedRoutePath,\r\n shortcutRoutePath,\r\n createAppModuleRouteName,\r\n createAppModuleRoute,\r\n createAppModuleRoutePath,\r\n createModuleContentRouteName,\r\n createModuleExpandRecordContentRouteName,\r\n createModuleRoutePath,\r\n createModuleDetailsRoutePath,\r\n createModuleTabDetailsRouteName,\r\n createModuleSubTabDetailsRouteName,\r\n createModuleParamsId,\r\n createModuleChildRecordParamsId,\r\n createModuleChildRecordContentRouteLocation,\r\n createModuleItemContentRouteLocation,\r\n createModuleRecordRouteLocation,\r\n createModuleExpandRecordShortcutContentRouteName,\r\n createModuleChildRecordShortcutContentRouteLocation\r\n};\r\n","//import Vue from \"vue\";\r\n\r\n// remarks: avoid import available icons,\r\n// since it will bundle all available icons to final bundle, which has a big size.\r\n// import \"@fortawesome/fontawesome-free/css/all.css\"; // Ensure you are using css-loader\r\n\r\n// fort awesome\r\n// https://fontawesome.com/docs/apis/javascript/icon-library\r\n// https://medium.com/front-end-weekly/how-to-use-fon-awesome-5-on-vuejs-project-ff0f28310821\r\n\r\n// # Free icons styles\r\n//\r\n// 1. Install the base Font Awesome SVG library (fontawesome-svg-core)\r\n// The @fortawesome/fontawesome-svg-core package provides the functionality,\r\n// but not any of the icon content.\r\n// npm i --save @fortawesome/fontawesome-svg-core\r\n//\r\n// 2. Install a Font Awesome icon sets\r\n// npm i --save @fortawesome/free-solid-svg-icons\r\n// npm i --save @fortawesome/free-regular-svg-icons // optional\r\n// npm i --save @fortawesome/free-brands-svg-icons // optional\r\n//\r\n// 3. Install the Font Awesome Vue component (vue-fontawesome).\r\n// npm i --save @fortawesome/vue-fontawesome\r\n\r\n//\r\n// Adding icons to the library\r\n//\r\n\r\n// The \"library\" is the way we can subset or reduce file sizes and reference icons easily.\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\r\n\r\n// Sub-setting - only import the icons that we need.\r\nimport {\r\n faCheck,\r\n faAsterisk,\r\n faClock,\r\n faGlobe,\r\n faLock,\r\n faPencil,\r\n faLink,\r\n faTrash,\r\n faXmark,\r\n faTriangleExclamation,\r\n faHand,\r\n faEye,\r\n faEyeSlash,\r\n faInfo,\r\n faSignOut\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nimport { faCheckCircle } from \"@fortawesome/free-regular-svg-icons\";\r\n\r\n// Add only needed icons to fontawesome-svg-core library\r\n// The { library } import has an add() method which takes any number of arguments and registers icons for later use.\r\nlibrary.add(\r\n faCheck,\r\n faCheckCircle,\r\n faAsterisk,\r\n faClock,\r\n faGlobe,\r\n faLock,\r\n faPencil,\r\n faLink,\r\n faTrash,\r\n faXmark,\r\n faTriangleExclamation,\r\n faHand,\r\n faEye,\r\n faEyeSlash,\r\n faInfo,\r\n faSignOut\r\n);\r\n\r\n/**\r\n * free-solid-svg-icon names\r\n * @type {Readonly<{asterisk: string, link: string, triangleExclamation: string, eyeSlash: string, check: string, clock: string, xmark: string, pencil: string, trash: string, eye: string, globe: string, lock: string, hand: string}>}\r\n */\r\nconst fasIconName = Object.freeze({\r\n check: \"check\",\r\n asterisk: \"asterisk\",\r\n clock: \"clock\",\r\n globe: \"globe\",\r\n lock: \"lock\",\r\n pencil: \"pencil\",\r\n link: \"link\",\r\n trash: \"trash\",\r\n xmark: \"xmark\",\r\n triangleExclamation: \"triangleExclamation\",\r\n hand: \"hand\",\r\n eye: \"eye\",\r\n eyeSlash: \"eye-slash\",\r\n info: \"info\",\r\n signOut: \"sign-out\"\r\n});\r\n\r\n/**\r\n * free-regular-svg-icon names\r\n * @type {Readonly<{checkCircle: string}>}\r\n */\r\nconst farIconName = Object.freeze({\r\n checkCircle: \"CheckCircle\"\r\n});\r\n\r\n/**\r\n * Font Awesome Icon prefix\r\n * @type {Readonly<{faRegular: string, faSolid: string}>}\r\n */\r\nconst faPrefix = Object.freeze({\r\n faSolid: \"fas\",\r\n faRegular: \"far\"\r\n});\r\n\r\nconst createFontAwesomeSolidIcon = iconName => {\r\n return createFontAwesomeIcon(iconName, faPrefix.faSolid);\r\n};\r\n\r\nconst createFontAwesomeRegularIcon = iconName => {\r\n return createFontAwesomeIcon(iconName, faPrefix.faRegular);\r\n};\r\n\r\n/**\r\n * create Font Awesome Icon\r\n * @param {String|string} iconName\r\n * @param {String|string} prefix\r\n * @return {{iconName:string, prefix: string}}\r\n */\r\nconst createFontAwesomeIcon = (iconName, prefix = faPrefix.faSolid) => {\r\n return {\r\n prefix: prefix,\r\n iconName: iconName\r\n };\r\n};\r\n\r\nexport {\r\n FontAwesomeIcon,\r\n fasIconName,\r\n farIconName,\r\n faPrefix,\r\n createFontAwesomeSolidIcon,\r\n createFontAwesomeRegularIcon\r\n};\r\n","// design\r\nimport {\r\n colorMD,\r\n colorTheme,\r\n variantNumber,\r\n variantType,\r\n getMDColorClass\r\n} from \"@/design/colors/mdColors\";\r\n\r\n/**\r\n * Variant Types\r\n * @type {(string)[]}\r\n */\r\nconst variantTypes = Object.freeze([variantType.lighten, variantType.darken]);\r\n\r\n/**\r\n * Variant Numbers\r\n * @type {number[]}\r\n */\r\nconst variantNumbers = Object.freeze([\r\n variantNumber.n1,\r\n variantNumber.n2,\r\n variantNumber.n3,\r\n variantNumber.n4,\r\n variantNumber.n5\r\n]);\r\n\r\n/**\r\n * get Success Color\r\n * @return {Color} Success Color\r\n */\r\nconst getSuccessColor = () => {\r\n return new Color(colorTheme.success, variantType.lighten, variantNumber.n1);\r\n};\r\n\r\n/**\r\n * Get Success Color Class\r\n * @returns {String|string} Success Color Class\r\n */\r\nconst getSuccessColorClass = () => getSuccessColor().getClassColor();\r\n\r\n/**\r\n * get Info Color\r\n * @return {Color} Info Color\r\n */\r\nconst getInfoColor = () => {\r\n return new Color(colorTheme.info, variantType.lighten, variantNumber.n1);\r\n};\r\n\r\n/**\r\n * Get Info Color Class\r\n * @returns {String|string} Info Color Class\r\n */\r\nconst geInfoColorClass = () => getInfoColor().getClassColor();\r\n\r\n/**\r\n * get error Color\r\n * @return {Color} Error Color\r\n */\r\nconst getErrorColor = () => {\r\n return new Color(colorTheme.error, variantType.lighten, variantNumber.n1);\r\n};\r\n\r\n/**\r\n * Get Error Color Class\r\n * @returns {String|string} Error Color Class\r\n */\r\nconst getErrorColorClass = () => getErrorColor().getClassColor();\r\n\r\n/**\r\n * get Warning Color\r\n * @return {Color} Warning Color\r\n */\r\nconst getWarningColor = () => {\r\n return new Color(colorTheme.warning, variantType.lighten, variantNumber.n1);\r\n};\r\n\r\n/**\r\n * Get Warning Color Class\r\n * @returns {String|string} Warning Color Class\r\n */\r\nconst getWarningColorClass = () => getWarningColor().getClassColor();\r\n\r\n/**\r\n * get Primary Color\r\n * @return {Color} Primary Color\r\n */\r\nconst getPrimaryColor = () => {\r\n return new Color(colorTheme.primary, variantType.lighten, variantNumber.n1);\r\n};\r\n\r\n/**\r\n * Get Primary Color Class\r\n * @returns {String|string} Primary Color Class\r\n */\r\nconst getPrimaryColorClass = () => getPrimaryColor().getClassColor();\r\n\r\n/**\r\n * get Secondary Color\r\n * @return {Color} Secondary Color\r\n */\r\nconst getSecondaryColor = () => {\r\n return new Color(colorTheme.secondary, variantType.lighten, variantNumber.n1);\r\n};\r\n\r\nconst getSecondaryLightColor = () => {\r\n return new Color(colorTheme.secondary, variantType.lighten, variantNumber.n4);\r\n};\r\n\r\nconst getSecondaryLightColorClass = () =>\r\n getSecondaryLightColor().getClassColor();\r\n\r\n/**\r\n * get Secondary Color Class\r\n * @returns {String|string} Secondary Color Class\r\n */\r\nconst getSecondaryColorClass = () => getSecondaryColor().getClassColor();\r\n\r\n/**\r\n * Get Random color (HexDecimal)\r\n * @return {string}\r\n */\r\nconst getRandomColor = () =>\r\n \"#\" + Math.floor(Math.random() * 16777215).toString(16);\r\n\r\n/**\r\n * get Color Class\r\n * @param {{name: String, variantType: string, variantNumber: number} | undefined} color\r\n * @return {String|string|undefined}\r\n */\r\nconst getColorClass = color => {\r\n return color\r\n ? new Color(\r\n color.name,\r\n color.variantType,\r\n color.variantNumber\r\n ).getClassColor()\r\n : undefined;\r\n};\r\n\r\n/**\r\n * Abstract Material Design Colors specification\r\n * https://vuetifyjs.com/en/styles/colors/\r\n */\r\nclass Color {\r\n name = undefined;\r\n variant = \"\";\r\n variantNumber = 0;\r\n\r\n constructor(name = undefined, variant = \"\", variantNumber = 0) {\r\n this.name = name;\r\n this.variant = variant;\r\n this.variantNumber = variantNumber;\r\n }\r\n\r\n /**\r\n * Get Class Color\r\n * @returns {string|*}\r\n */\r\n getClassColor() {\r\n if (\r\n !this.name ||\r\n !this.variant ||\r\n !this.isValidVariantNumber(this.variantNumber) ||\r\n !this.isValidVariantType(this.variant)\r\n ) {\r\n return this.name;\r\n }\r\n\r\n return getMDColorClass(this.name, this.variant, this.variantNumber);\r\n }\r\n\r\n /**\r\n * Determines is Valid Variant Number\r\n * @param {number} number\r\n * @returns {boolean}\r\n */\r\n isValidVariantNumber(number) {\r\n return number\r\n ? variantNumbers.filter(el => el === number).length > 0\r\n : false;\r\n }\r\n\r\n /**\r\n * Determines is Valid Variant Type\r\n * @param {string} variant\r\n * @returns {boolean}\r\n */\r\n isValidVariantType(variant) {\r\n return variant\r\n ? variantTypes.filter(el => el === variant).length > 0\r\n : false;\r\n }\r\n}\r\n\r\nexport {\r\n variantType,\r\n variantNumber,\r\n colorTheme,\r\n colorMD,\r\n Color,\r\n getSuccessColorClass,\r\n getErrorColorClass,\r\n geInfoColorClass,\r\n getWarningColorClass,\r\n getPrimaryColorClass,\r\n getSecondaryColorClass,\r\n getSecondaryLightColor,\r\n getSecondaryLightColorClass,\r\n getMDColorClass,\r\n getErrorColor,\r\n getWarningColor,\r\n getInfoColor,\r\n getSuccessColor,\r\n getPrimaryColor,\r\n getSecondaryColor,\r\n getColorClass,\r\n getRandomColor\r\n};\r\n","import { getAxios } from \"@/services/api/apiCommon\";\r\n\r\n/**\r\n * repository web api controller name\r\n * @type {string}\r\n */\r\nconst repository = \"repository\";\r\n\r\n/**\r\n * categories web api controller name\r\n * @type {string}\r\n */\r\nconst categories = \"categories\";\r\n\r\n/**\r\n * categoryTypes web api controller name\r\n * @type {string}\r\n */\r\nconst categoryTypes = \"CategoryTypes\";\r\n\r\n/**\r\n * fields web api controller name\r\n * @type {string}\r\n */\r\nconst fields = \"fields\";\r\n\r\n/**\r\n * fields web api controller name\r\n * @type {string}\r\n */\r\nconst search = \"search\";\r\n\r\n/**\r\n * children web api controller name\r\n * @type {string}\r\n */\r\nconst children = \"children\";\r\n\r\n/**\r\n * records web api controller name\r\n * @type {string}\r\n */\r\nconst records = \"records\";\r\n\r\n/**\r\n * compound documents web api controller name\r\n * @type {string}\r\n */\r\nconst documents = \"documents\";\r\n\r\n/**\r\n * files web api controller name\r\n * @type {string}\r\n */\r\nconst files = \"files\";\r\n\r\n/**\r\n * emptyRecords web api controller name\r\n * @type {string}\r\n */\r\nconst emptyRecords = \"EmptyRecords\";\r\n\r\n/**\r\n * folders web api controller name\r\n * @type {string}\r\n */\r\nconst folders = \"folders\";\r\n\r\n/**\r\n * Current Script Name\r\n * @type {string}\r\n */\r\nconst scriptName = \"apiContent\";\r\n\r\n/**\r\n * Repository\r\n */\r\n\r\n/**\r\n * Get Repositories\r\n * @returns {Promise} List of Repositories\r\n */\r\nconst getRepositories = () => getAxios().get(`/${repository}`);\r\n\r\n/**\r\n * get Repository Name\r\n * @returns {Promise} Repository Name\r\n */\r\nconst getUserRepositoryName = () => getAxios().get(`/${repository}/current`);\r\n\r\n/**\r\n * Categories\r\n */\r\n\r\n/**\r\n * Get All user's Record Categories\r\n * @returns {Promise<[{id:number, formId:number, name:string, flags:number, categoryType:number, categoryTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[]}]>}\r\n */\r\nconst getCategories = () => getAxios().get(`/${categories}`);\r\n\r\n/**\r\n * Get Record Category data\r\n * @param {Number} id Category id\r\n * @returns {Promise<{formName:string, fields:{isVolatile:boolean, requiredForAutoFiling:boolean, isRequired:boolean, sequence:number, label:string, defaultValue:string, lookup:{items:string[], enforce:boolean, databaseLookup:boolean}, searchOperators:{description:string, operator:string}[], defaultOperator:string, id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isSystemCategoryType:boolean, isSystemField:boolean, isPersistentField:boolean, operations:{name:string, allowed:boolean, valid:boolean}[]}[], requiredRecordName:boolean, requiredRecordNameForAutoFiling:boolean, autoFiling:boolean, formLookup:{exists:boolean, inputMappings:{id:number, name:string, entity:string}[], outputMappings:{id:number, name:string, entity:string}[]}, id:number, formId:number, name:string, flags:number, categoryType:number, categoryTypename:string, operations:{name:string, allowed:boolean, valid:boolean}[]}>}\r\n */\r\nconst getCategory = id => getAxios().get(`/${categories}/${id}`);\r\n\r\n/**\r\n * database category form's lookup\r\n * @param {number} id category Id\r\n * @param {{id:number, value:any}[]} fieldValueModels array of fieldValueModel\r\n * @return {Promise<[{id:number, value:string}]>}\r\n */\r\nconst lookup = (id, fieldValueModels) => {\r\n const url = `/${categories}/${id}/lookup`;\r\n\r\n return getAxios().post(url, fieldValueModels);\r\n};\r\n\r\n/**\r\n * get Category Project Template Definition\r\n * @param {number} id category id\r\n * @return {Promise<*|undefined>}\r\n */\r\nconst getCategoryProjectTemplateDefinition = id =>\r\n getAxios().get(`/${categories}/${id}/workflow`);\r\n\r\n/**\r\n * Category Types\r\n */\r\n\r\n/**\r\n * Get Category Types\r\n * @returns {Promise<[{id:number, name:string}]>}\r\n */\r\nconst getCategoryTypes = () => getAxios().get(`/${categoryTypes}`);\r\n\r\n/**\r\n * get Category Type\r\n * @param {Number|number} id Category Type id\r\n * @return {Promise<[{id:number, name:string}]>}\r\n */\r\nconst getCategoryType = id => getAxios().get(`/${categoryTypes}/${id}`);\r\n\r\n/**\r\n * fields\r\n */\r\n\r\n/**\r\n * Get User's permitted fields\r\n * @returns {Promise<[{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isSystemCategoryType:boolean, isSystemField:boolean, isPersistentField:boolean, operations:{name:string, allowed:boolean, valid:boolean}[]}]>}\r\n */\r\nconst getFields = () => getAxios().get(`/${fields}`);\r\n\r\n/**\r\n * Get field\r\n * @param {Number|number} id Field id\r\n * @returns {Promise<{isVolatile:boolean, requiredForAutoFiling:boolean, isRequired:boolean, sequence:number, label:string, defaultValue:string, lookup:{items:string[], enforce:boolean, databaseLookup:boolean}, searchOperators:{description:string, operator:string}[], defaultOperator:string, id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isSystemCategoryType:boolean, isSystemField:boolean, isPersistentField:boolean, operations:{name:string, allowed:boolean, valid:boolean}[]}>}\r\n */\r\nconst getField = id => getAxios().get(`/${fields}/${id}`);\r\n\r\n/**\r\n * Search\r\n */\r\n\r\n/**\r\n * count Category Documents\r\n * @param {Number|number} id\r\n * @param searchTerm\r\n * @param formData\r\n * @returns {Promise}\r\n */\r\nconst countCategoryDocuments = (id, searchTerm, formData) => {\r\n const url = `/${search}/Category/Count/${id}`;\r\n const data = formData;\r\n const config = {\r\n method: \"POST\",\r\n params: {\r\n searchTerm: searchTerm\r\n },\r\n redirect: \"follow\",\r\n credentials: \"include\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * List first set of Records for the specified category\r\n * @param {Number|number} id\r\n * @param {Number|number} page\r\n * @param {Number|number} pageSize\r\n * @param {string} searchTerm\r\n * @param formData\r\n * @returns {Promise}\r\n */\r\nconst getCategoryDocuments = (id, page, pageSize, searchTerm, formData) => {\r\n const url = `/${search}/Category/Results/${id}/${page - 1}/${pageSize}`;\r\n const data = formData;\r\n const config = {\r\n method: \"POST\",\r\n params: {\r\n searchTerm: searchTerm\r\n },\r\n redirect: \"follow\",\r\n credentials: \"include\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * get All Category Documents\r\n * @param {Number|number} id\r\n * @param {String|string} searchTerm\r\n * @param {Number|number} count\r\n * @return {*}\r\n */\r\nconst getAllCategoryDocuments = (id, searchTerm, count) => {\r\n return getAxios().post(`/${search}/Category/Results/${id}/0/${count}`, {\r\n params: {\r\n searchTerm: searchTerm\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * get Search Highlights\r\n * @param {Number|number} id\r\n * @param {String|string} searchTerm\r\n * @returns {Promise}>>} SearchHitsModel\r\n */\r\nconst getSearchHighlights = (id, searchTerm) => {\r\n return getAxios().get(`/${search}/hits/${id}`, {\r\n params: {\r\n searchTerm: searchTerm\r\n }\r\n });\r\n};\r\n\r\n/**\r\n * Children\r\n */\r\n\r\n/**\r\n * Get Children-records count\r\n * @param {Number|number} id\r\n * @returns {Promise<{number}>}\r\n */\r\nconst countChildren = id => {\r\n const url = `/Children/Count/${id}`;\r\n\r\n const config = {\r\n method: \"GET\",\r\n redirect: \"follow\",\r\n credentials: \"include\"\r\n };\r\n\r\n return getAxios().get(url, config);\r\n};\r\n\r\n/**\r\n * Get Children records\r\n * @param {Number|number} id record id\r\n * @param {Number|number} count\r\n * @return {Promise<{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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]>}\r\n */\r\nconst getChildren = (id, count) =>\r\n getAxios().get(`/${children}/List/${id}/0/${count}`);\r\n\r\n/**\r\n * get Folder Documents\r\n * @param {Number|number} id\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\nconst getFolderDocuments = id => getAxios().get(`/${children}/List/${id}`);\r\n\r\n/**\r\n * Records\r\n */\r\n\r\n/**\r\n * count Records\r\n * @param queryModel\r\n * @return {Promise}\r\n */\r\nconst countRecords = queryModel => {\r\n const url = `/${records}/search-count`;\r\n return getAxios().post(url, queryModel);\r\n};\r\n\r\n/**\r\n * count Records within Id\r\n * @param {{id: (number|number), queryModel: {CategoryId: number, TypeId: number, Owner: string, CreatedDateTo: string, StateId: number, Creator: string, Name: string, Extension: string, Pages: number, Fields: {any}[], Version: number, CreatedDateFrom: string, ModifiedDateTo: string, ModifiedDateFrom: string}}}payload\r\n * @return {Promise}\r\n */\r\nconst countRecordsWithIn = payload => {\r\n const queryModel = payload?.queryModel ?? undefined;\r\n const id = payload?.id ?? -1;\r\n const url = `/${records}/${id}/search-count`;\r\n\r\n return getAxios().post(url, queryModel);\r\n};\r\n\r\n/**\r\n * search Records\r\n * @param queryModel\r\n * @param {Number|number} startPage\r\n * @param {Number|number} countPerPage\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst searchRecords = (queryModel, startPage, countPerPage) => {\r\n const url = `/${records}/search?startPage=${startPage}&countPerPage=${countPerPage}`;\r\n\r\n return getAxios().post(url, queryModel);\r\n};\r\n\r\n/**\r\n * search Records With In provided record\r\n * @param queryModel\r\n * @param {Number|number} withInId record id\r\n * @param {Boolean|boolean} childrenOnly\r\n * @param {Number|number} startPage\r\n * @param {Number|number} countPerPage\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst searchRecordsWithIn = (\r\n queryModel,\r\n withInId,\r\n childrenOnly,\r\n startPage,\r\n countPerPage\r\n) => {\r\n const url = `/${records}/${withInId}/search?startPage=${startPage}&countPerPage=${countPerPage}&childrenOnly=${childrenOnly}`;\r\n\r\n return getAxios().post(url, queryModel);\r\n};\r\n\r\n/**\r\n * Get Record\r\n * @param {Number|number} id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getDocument = id => getAxios().get(`/${records}/${id}`);\r\n\r\n/**\r\n * TODO: Add Folder/Tree End Points calls, following current pattern, here\r\n */\r\n\r\n/**\r\n * Questys Record\r\n */\r\n\r\n/**\r\n * get breadcrumbs\r\n * @param {Number|number} id record id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst fetchBreadcrumbs = id => getAxios().get(`/${records}/${id}/breadcrumbs`);\r\n\r\n/**\r\n * Get Record data\r\n * @param {Number|number} id record is\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getRecord = id => getAxios().get(`/${records}/${id}`);\r\n\r\n/**\r\n * Get Record Shortcut\r\n * @param payload {{id:Number, parentId: Number}}\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getRecordShortcut = payload => {\r\n const id = payload?.parentId ?? -1;\r\n const originalId = payload.id ?? -1;\r\n return getAxios().get(`/${folders}/${id}/shortcuts/${originalId}`);\r\n};\r\n\r\n/**\r\n * Get Record Info (without fields)\r\n * @param {number} id Record id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst getRecordInfo = id => getAxios().get(`/${records}/${id}/info`);\r\n\r\n/**\r\n * get Record Text Field Value\r\n * @param {Number|number} id Record id\r\n * @param fieldId Record's Field id\r\n * @return {Promise<{string}>} Record's Text Field Value\r\n */\r\nconst getRecordTextFieldValue = (id, fieldId) => {\r\n return getAxios().get(`/${records}/${id}/fields/${fieldId}/memo`);\r\n};\r\n\r\n/**\r\n * Lock Record\r\n * @param {Number|number} id record id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst lockRecord = id => getAxios().post(`/${records}/${id}/lock`);\r\n\r\n/**\r\n * UnLock Record\r\n * @param {Number|number} id record id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst unLockRecord = id => getAxios().post(`/${records}/${id}/unlock`);\r\n\r\n/**\r\n * set Read Only Record\r\n * @param {Number|number} id record id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst setReadOnlyRecord = id => getAxios().post(`/${records}/${id}/read-only`);\r\n\r\n/**\r\n * set Draft Record\r\n * @param {Number|number} id record id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst setDraftRecord = id => getAxios().post(`/${records}/${id}/draft`);\r\n\r\n/**\r\n * upload File\r\n * @param {Number|number} id record id\r\n * @param file\r\n * @param {{ Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}} uploadFileOptionModel\r\n * @param onUploadProgress\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst uploadFile = (id, file, uploadFileOptionModel, onUploadProgress) => {\r\n const comments = uploadFileOptionModel.Comments;\r\n const enqueue = uploadFileOptionModel.Enqueue;\r\n const draft = uploadFileOptionModel.Draft;\r\n const insertFileOption = uploadFileOptionModel.InsertFileOption;\r\n\r\n const url = `/${records}/${id}/upload?comments=${comments}&enqueue=${enqueue}&draft=${draft}&insertFileOption=${insertFileOption}`;\r\n const formData = new FormData();\r\n\r\n formData.append(\"file\", file);\r\n\r\n return getAxios().post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\"\r\n },\r\n // We pass onUploadProgress to exposes progress events.\r\n // This progress event are expensive (change detection for each event),\r\n // so we should only use when you want to monitor it.\r\n onUploadProgress\r\n });\r\n};\r\n\r\n/**\r\n * createRecord\r\n * @param createRecordModel\r\n * @param {Number|number} parentId parent Id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst createRecord = (createRecordModel, parentId) => {\r\n const url = `/${records}/${parentId}`;\r\n\r\n return getAxios().post(url, createRecordModel);\r\n};\r\n\r\n/**\r\n * update Record Model\r\n * @param {{name:string, categoryId:number, fieldValues: {id:number, value:any}[]}} updateRecordModel updateRecordModel\r\n * @param {Number|number} id Record Id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst updateRecord = (updateRecordModel, id) => {\r\n const url = `/${records}/${id}`;\r\n\r\n return getAxios().put(url, updateRecordModel);\r\n};\r\n\r\n/**\r\n * delete Record\r\n * @param {Number|number} id delete Record id\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst deleteRecord = id => {\r\n const url = `/${records}/${id}`;\r\n\r\n return getAxios().delete(url);\r\n};\r\n\r\n/**\r\n * restore Deleted Record\r\n * @param {Number|number} id deleted Record id\r\n * @return {Promise<{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}>}\r\n */\r\nconst restoreDeletedRecord = id => {\r\n const url = `/${records}/${id}/restore`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Move Record\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst moveRecord = payload => {\r\n const url = `/${records}/${payload.recordId}/move/${payload.destinationId}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Copy Record\r\n * @param {{recordId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst copyRecord = payload => {\r\n const url = `/${records}/${payload.recordId}/copy/${payload.destinationId}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Create Shortcut\r\n * @param {{recordId:Number, destinationId:Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst createShortcut = payload => {\r\n const destinationId = payload?.destinationId ?? -1;\r\n const originalRecordId = payload?.recordId ?? -1;\r\n\r\n const url = `/${folders}/${destinationId}/shortcuts/${originalRecordId}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Delete Record Shortcut\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst deleteRecordShortcut = payload => {\r\n const parentId = payload?.parentId ?? -1;\r\n const originalRecordId = payload?.id ?? -1;\r\n\r\n const url = `/${folders}/${parentId}/shortcuts/${originalRecordId}`;\r\n\r\n return getAxios().delete(url);\r\n};\r\n\r\n/**\r\n * Determines whether a record shortcut exists under specified Folder\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst existsShortcut = payload => {\r\n const parentId = payload?.parentId ?? -1;\r\n const originalRecordId = payload?.id ?? -1;\r\n\r\n const url = `/${folders}/${parentId}/shortcuts/${originalRecordId}/exists`;\r\n\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Determines whether a record exists under specified Folder\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst existsRecord = payload => {\r\n const parentId = payload?.parentId ?? -1;\r\n const originalRecordId = payload?.id ?? -1;\r\n\r\n const url = `/${folders}/${parentId}/exists/${originalRecordId}`;\r\n\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Determine if Shortcut is Creatable\r\n * @param {{id:Number, parentId: Number}} payload\r\n * @return {Promise<{Boolean}>}\r\n */\r\nconst canCreateShortcut = payload => {\r\n const parentId = payload?.parentId ?? -1;\r\n const originalRecordId = payload?.id ?? -1;\r\n\r\n const url = `/${folders}/${parentId}/shortcuts/${originalRecordId}/can-create`;\r\n\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Copy Record Shortcut\r\n * @param {{recordId:Number,recordParentId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst copyRecordShortcut = payload => {\r\n const parentId = payload?.recordParentId ?? -1;\r\n const originalRecordId = payload?.recordId ?? -1;\r\n const destinationId = payload?.destinationId ?? -1;\r\n\r\n const url = `/${folders}/${parentId}/shortcuts/${originalRecordId}/copy/${destinationId}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Move Record Shortcut\r\n * @param {{recordId:Number,recordParentId:Number,destinationId:Number}} payload\r\n * @return {Promise<{agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], fieldValues: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], flyingFields: {id: number, sequence: number}[], 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: string[], description: string}}, searchFields: {name: string, fieldDataType: number, fieldDataTypeName: string, operations: {name: string, allowed: boolean, valid: boolean}[], id: number, value: string}[], operations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[], fields: string[]}>}\r\n */\r\nconst moveRecordShortcut = payload => {\r\n const parentId = payload?.recordParentId ?? -1;\r\n const originalRecordId = payload?.recordId ?? -1;\r\n const destinationId = payload?.destinationId ?? -1;\r\n\r\n const url = `/${folders}/${parentId}/shortcuts/${originalRecordId}/move/${destinationId}`;\r\n\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * Get Record Children records\r\n * @param {{id:Number, recordIndex:Number, count:Number}} payload\r\n * @return {Promise<{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}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]>}\r\n */\r\nconst getRecordChildren = payload => {\r\n const id = payload?.id ?? -1;\r\n const startIndex = payload?.recordIndex ?? 0;\r\n const count = payload?.count ?? 10;\r\n\r\n return getAxios().get(\r\n `/${records}/${id}/children?startIndex=${startIndex}&count=${count}`\r\n );\r\n};\r\n\r\n/**\r\n * get attached workflow Projects to specified record by record id\r\n * @param {number} id Record id\r\n * @returns {Promise<[{projectId: number, definitionId: number, workflowInstanceId: number, workflowTypeId: number, projectName: String, recordId: number, subject: String, owner: String, projectManagerId: number, templateId: number, templateName: String, workflowInstanceId: number, status: number, isOverdue: Boolean, isSuspended: false, canAccess: Boolean, canCancel: Boolean, canChangeOwnership: Boolean, canReassign: Boolean, canSuspend: Boolean}]>}\r\n */\r\nconst getProjects = id => getAxios().get(`/${records}/${id}/projects`);\r\n\r\n/**\r\n * Compound documents\r\n */\r\n\r\n/**\r\n * upload Compound Document File\r\n * @param {Number|number} id Compound Document id\r\n * @param {any} file file to be uploaded\r\n * @param {Number} insertBeforePage insert Before specified Page number\r\n * @param {Boolean} enqueue insert Compound Document at the Beginning\r\n * @param {string} comments check in comments\r\n * @param onUploadProgress Upload Progress callback function\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst uploadCompoundDocumentFile = (\r\n id,\r\n file,\r\n insertBeforePage,\r\n enqueue,\r\n comments,\r\n onUploadProgress\r\n) => {\r\n const url = `/${documents}/${id}/files/upload?insertBeforePage=${insertBeforePage}&enqueue=${enqueue}&Comments=${comments}`;\r\n const formData = new FormData();\r\n\r\n formData.append(\"file\", file);\r\n\r\n return getAxios().post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\"\r\n },\r\n // We pass onUploadProgress to exposes progress events.\r\n // This progress event are expensive (change detection for each event),\r\n // so we should only use when you want to monitor it.\r\n onUploadProgress\r\n });\r\n};\r\n\r\n/**\r\n * Import/Scan File to Compound Document\r\n * @param {{id:number, compoundInsertOption:number, checkInModel:{Extension: string, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} payload\r\n * @returns {Promise<{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}>} Document Model\r\n */\r\nconst scanToCompoundDocument = payload => {\r\n const model = payload?.checkInModel ?? null;\r\n const insertBeforePage = payload?.compoundInsertOption ?? 0;\r\n return getAxios().post(\r\n `/${documents}/${payload.id}/files/check-in?insertBeforePage=${insertBeforePage}&enqueue=${model.Enqueue}&comments=${model.Comments}&extension=${model.Extension}`\r\n );\r\n};\r\n\r\n/**\r\n * Get Compound Document\r\n * @param {Number|number} id Compound Document id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getCompoundDocument = id => getAxios().get(`/${documents}/${id}`);\r\n\r\n/**\r\n * Get Compound Document File/Child Count\r\n * @param {Number|number} id Compound Document id\r\n * @return {Promise}\r\n */\r\nconst getDocumentFileCount = id =>\r\n getAxios().get(`/${documents}/${id}/files/count`);\r\n\r\n/**\r\n * Re-index Compound Document\r\n * @param {Number|number} id Compound Document id\r\n * @return {Promise}\r\n */\r\nconst reindexDocument = id => getAxios().post(`/${documents}/${id}/re-index`);\r\n\r\n/**\r\n * download Compound as Pdf\r\n * @param {{id:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadCompoundDocumentAsPdf = payload => {\r\n const id = payload?.id ?? -1;\r\n const options = payload?.downloadOptions;\r\n const data = options ? JSON.stringify(options) : null;\r\n\r\n const url = `/${documents}/${id}/download-pdf`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * files\r\n */\r\n\r\n/**\r\n * check Out File\r\n * @param {Number|number} id record id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst checkOutFile = id => getAxios().post(`/${files}/${id}/checkout`);\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 * @param {Number|number} id record id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst checkOutFileForSign = id =>\r\n getAxios().post(`/${files}/${id}/checkout-for-sign`);\r\n\r\n/**\r\n * release File\r\n * @param id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst releaseFile = id => getAxios().post(`/${files}/${id}/release`);\r\n\r\n/**\r\n * Release Checked out File\r\n * @param {Number|number} id record id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst releaseCheckedOutFile = id =>\r\n getAxios().post(`/${files}/${id}/checked-out/release`);\r\n\r\n/**\r\n * Release Wip File for Acquire/Scanned file\r\n * @param {Number|number} id record id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst releaseWIPFile = id => getAxios().post(`/${files}/${id}/wip/release`);\r\n\r\n/**\r\n * check In Edited Document\r\n * @param {{id:number, checkInModel:{Extension: string, Draft: boolean, Comments: string, Enqueue: boolean}}} payload\r\n * @return {Promise<{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}>} File Model\r\n */\r\nconst checkInEditedDocument = payload => {\r\n const model = payload.checkInModel;\r\n console.log(`${scriptName} checkInEditedDocument() model:`, model);\r\n const data = JSON.stringify(model);\r\n return getAxios().post(`/${files}/${payload.id}/checked-out/check-in`, data);\r\n};\r\n\r\n/**\r\n * Check In File\r\n * @param {Number|number} id record id\r\n * @param file\r\n * @param {{Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}} uploadFileOptionModel\r\n * @param onUploadProgress\r\n * @return {Promise<{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}>} File Model\r\n */\r\nconst checkInFile = (id, file, uploadFileOptionModel, onUploadProgress) => {\r\n const comments = uploadFileOptionModel.Comments;\r\n const enqueue = uploadFileOptionModel.Enqueue;\r\n const draft = uploadFileOptionModel.Draft;\r\n const insertFileOption = uploadFileOptionModel.InsertFileOption;\r\n\r\n const url = `/${files}/${id}/upload?comments=${comments}&enqueue=${enqueue}&draft=${draft}&insertFileOption=${insertFileOption}`;\r\n const formData = new FormData();\r\n\r\n // make sure 'formFile' matches check-in end points arguments (name & case sensitive)\r\n formData.append(\"formFile\", file);\r\n\r\n return getAxios().post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\"\r\n },\r\n // We pass onUploadProgress to exposes progress events.\r\n // This progress event are expensive (change detection for each event),\r\n // so we should only use when you want to monitor it.\r\n onUploadProgress\r\n });\r\n};\r\n\r\n/**\r\n * upload File To Checked Out File\r\n * @param {Number|number} id record id\r\n * @param {String|string} file\r\n * @param {Number|number} insertFileOption\r\n * @param onUploadProgress\r\n * @return {Promise<{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}>} File Model\r\n */\r\nconst uploadFileToCheckedOutFile = (\r\n id,\r\n file,\r\n insertFileOption,\r\n onUploadProgress\r\n) => {\r\n console.log(\r\n `${scriptName} uploadFileToCheckedOutFile() insertFileOption:`,\r\n insertFileOption\r\n );\r\n\r\n const url = `/${files}/${id}/checked-out/upload?insertFileOption=${insertFileOption}`;\r\n const formData = new FormData();\r\n\r\n // make sure 'formFile' matches check-in end points arguments (name & case sensitive)\r\n formData.append(\"formFile\", file);\r\n\r\n return getAxios().post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\"\r\n },\r\n onUploadProgress\r\n });\r\n};\r\n\r\n/**\r\n * insert/append/overwrite scanned image file to an existing file\r\n * @param {{id:number, checkInModel:{Extension: string, Draft: boolean, InsertFileOption: number, Comments: string, Enqueue: boolean}}} payload\r\n * @return {Promise<{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}>} File Model\r\n */\r\nconst scanToCheckedInFile = payload => {\r\n const model = payload.checkInModel;\r\n const data = JSON.stringify(model);\r\n return getAxios().post(`/${files}/${payload.id}/wip/check-in`, data);\r\n};\r\n\r\n/**\r\n * Download File\r\n * @param {{id:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadFile = payload => {\r\n const id = payload.id;\r\n const downloadOptions = payload.downloadOptions;\r\n const data = JSON.stringify(downloadOptions);\r\n\r\n const url = `/${files}/${id}/download-image`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * download File As PDF document\r\n * @param {Number|number} id record id\r\n * @return {Promise}\r\n */\r\nconst downloadFileAsPdf = id => {\r\n const url = `/${files}/${id}/download-pdf`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().get(url, config);\r\n};\r\n\r\n/**\r\n * download Image File Version\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadImageFileVersion = payload => {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n const options = payload?.downloadOptions;\r\n const data = options ? JSON.stringify(options) : null;\r\n\r\n const url = `/${files}/${id}/versions/${version}/download-image`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * download File Version without any annotation option\r\n * @param {{id:number, version:number}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadFileVersion = payload => {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n const includeRecordVersion = true;\r\n const url = `/${files}/${id}/versions/${version}/download?includeRecordVersion=${includeRecordVersion}`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().get(url, config);\r\n};\r\n\r\n/**\r\n * download File Version As PDF\r\n * @param {{id: number, version: number}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadPdfFileVersion = payload => {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n const includeRecordVersion = true;\r\n const url = `/${files}/${id}/versions/${version}/download-pdf?includeRecordVersion=${includeRecordVersion}`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().get(url, config);\r\n};\r\n\r\n/**\r\n * Download File Version As Pdf\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadFileVersionAsPdf = payload => {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n const downloadOptions = payload?.downloadOptions;\r\n const data = downloadOptions ? JSON.stringify(downloadOptions) : null;\r\n\r\n const url = `/${files}/${id}/versions/${version}/download-image-pdf`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * Download Edit File\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadEditFile = payload => {\r\n const id = payload?.id ?? -1;\r\n const downloadOptions = payload?.downloadOptions;\r\n const data = downloadOptions ? JSON.stringify(downloadOptions) : null;\r\n\r\n const url = `/${files}/${id}/checked-out/download`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * Download Edit File As Pdf\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadEditFileAsPdf = payload => {\r\n const id = payload?.id ?? -1;\r\n const downloadOptions = payload?.downloadOptions;\r\n const data = downloadOptions ? JSON.stringify(downloadOptions) : null;\r\n\r\n const url = `/${files}/${id}/checked-out/download-as-pdf`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * Download Export File Version As Pdf\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadExportFileVersion = payload => {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n const downloadOptions = payload?.downloadOptions;\r\n const data = downloadOptions ? JSON.stringify(downloadOptions) : null;\r\n\r\n const url = `/${files}/${id}/versions/${version}/export/download-image`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * Download Export File Version As Pdf\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadExportFileVersionAsPdf = payload => {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n const downloadOptions = payload?.downloadOptions;\r\n const data = downloadOptions ? JSON.stringify(downloadOptions) : null;\r\n\r\n const url = `/${files}/${id}/versions/${version}/export/download-image-pdf`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * get File Versions (file history)\r\n * @param {Number|number} id record id\r\n * @return {Promise<{outFileType:string, isCheckedOutByOwner:boolean, canCheckOutForSigning:boolean, agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst getFileVersions = id => getAxios().get(`/${files}/${id}/versions`);\r\n\r\n/**\r\n * get File Version\r\n * @param {Number|number} id record id\r\n * @param {Number|number} version\r\n * @return {Promise<{outFileType:string, isCheckedOutByOwner:boolean, canCheckOutForSigning:boolean, 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}>} Record Version Model\r\n */\r\nconst getFileVersion = (id, version) =>\r\n getAxios().get(`/${files}/${id}/versions/${version}`);\r\n\r\n/**\r\n * Re-index File\r\n * @param {Number|number} id File id\r\n * @return {Promise}\r\n */\r\nconst reindexFile = id => getAxios().post(`/${files}/${id}/re-index`);\r\n\r\n/**\r\n * Import Annotations to Document\r\n * @param {Number|number} id File id\r\n * @param {Number|number} version File Version\r\n * @param {Number|number} importOption\r\n * @param {File} file - File\r\n * @param onUploadProgress\r\n * @return {Promise}\r\n */\r\nconst importAnnotations = (\r\n id,\r\n version,\r\n importOption,\r\n file,\r\n onUploadProgress\r\n) => {\r\n const formData = new FormData();\r\n\r\n // make sure 'formFile' matches check-in end points arguments (name & case sensitive)\r\n formData.append(\"formFile\", file);\r\n const url = `/${files}/${id}/versions/${version}/import-annotation?importPageIndex=${importOption}`;\r\n return getAxios().post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\"\r\n },\r\n onUploadProgress\r\n });\r\n};\r\n\r\n/**\r\n * Export Annotations\r\n * @param {{id:Number, version:Number, pageOption: Number}} payload\r\n * @return {Promise}\r\n */\r\nconst exportAnnotations = payload => {\r\n const id = payload?.id ?? -1;\r\n const version = payload?.version ?? -1;\r\n const pageOption = payload.pageOption ?? 1;\r\n\r\n const url = `/${files}/${id}/versions/${version}/export-annotation?exportPageIndex=${pageOption}`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, config);\r\n};\r\n\r\n/**\r\n * Get Ocr Text\r\n * @param {{id:Number,page:number}} payload\r\n * @returns {Promise}\r\n */\r\nconst getOcrText = payload => {\r\n const id = payload?.id ?? -1;\r\n const page = payload?.page ?? 0;\r\n\r\n const url = `/${files}/${id}/pages/${page}/ocr-text`;\r\n return getAxios().get(url);\r\n};\r\n\r\n/**\r\n * Save Ocr Text\r\n * @param {{id:Number,text:String,page:number}} payload\r\n * @returns {Promise}\r\n */\r\nconst saveOcrText = payload => {\r\n const id = payload?.id ?? -1;\r\n const text = payload?.text ?? -1;\r\n const page = payload?.page ?? 0;\r\n\r\n const url = `/${files}/${id}/pages/${page}/ocr-text?text=${text}`;\r\n return getAxios().post(url);\r\n};\r\n\r\n/**\r\n * upload File To File Wip\r\n ** @param {Number|number} id record id\r\n * @param {number} id record id\r\n * @param {String|string} file\r\n * @param {Number|number} insertFileOption\r\n * @param onUploadProgress\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst uploadFileToFileWip = (id, file, insertFileOption, onUploadProgress) => {\r\n console.log(\r\n `${scriptName} uploadFileToFileWip() insertFileOption:`,\r\n insertFileOption\r\n );\r\n\r\n const url = `/${files}/${id}/wip/upload?insertFileOption=${insertFileOption}`;\r\n const formData = new FormData();\r\n\r\n // make sure 'formFile' matches check-in end points arguments (name & case sensitive)\r\n formData.append(\"formFile\", file);\r\n\r\n return getAxios().post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\"\r\n },\r\n onUploadProgress\r\n });\r\n};\r\n\r\n/**\r\n * download Wip File with annotation model\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadFileWip = payload => {\r\n const id = payload?.id ?? -1;\r\n const options = payload?.downloadOptions;\r\n const data = options ? JSON.stringify(options) : null;\r\n\r\n const url = `/${files}/${id}/wip/download`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * download Wip File As PDF Document with annotation model\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadFileWipAsPDFDocument = payload => {\r\n const id = payload?.id ?? -1;\r\n const options = payload?.downloadOptions;\r\n const data = options ? JSON.stringify(options) : null;\r\n\r\n const url = `/${files}/${id}/wip/download-as-pdf`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * EmptyRecords\r\n */\r\n\r\n/**\r\n * Release Wip File for Empty Record\r\n * @param {Number|number} id\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst releaseWIPRecord = id =>\r\n getAxios().post(`/${emptyRecords}/${id}/wip/release`);\r\n\r\n/**\r\n * upload File To an Empty Record Wip\r\n *@param {Number|number} id record id\r\n * @param {String|string} file\r\n * @param {Number|number} insertFileOption\r\n * @param onUploadProgress\r\n * @return {Promise<{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}>} Record Item Model\r\n */\r\nconst uploadFileToEmptyRecordWip = (\r\n id,\r\n file,\r\n insertFileOption,\r\n onUploadProgress\r\n) => {\r\n console.log(\r\n `${scriptName} uploadFileToEmptyRecordWip() insertFileOption:`,\r\n insertFileOption\r\n );\r\n\r\n const url = `/${emptyRecords}/${id}/wip/upload?insertFileOption=${insertFileOption}`;\r\n const formData = new FormData();\r\n\r\n // make sure 'formFile' matches check-in end points arguments (name & case sensitive)\r\n formData.append(\"formFile\", file);\r\n\r\n return getAxios().post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\"\r\n },\r\n onUploadProgress\r\n });\r\n};\r\n\r\n/**\r\n * check In uploaded scanned image file to an empty record\r\n * @param {{id:number, checkInModel:{Extension: string, Draft: boolean, Comments: string, Enqueue: boolean}}} payload\r\n * @return {Promise<{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}>} File Model\r\n */\r\nconst checkInScannedFileToRecord = payload => {\r\n const model = payload.checkInModel;\r\n console.log(`${scriptName} checkInScannedFileToRecord() model:`, model);\r\n const data = JSON.stringify(model);\r\n return getAxios().post(`/${emptyRecords}/${payload.id}/wip/check-in`, data);\r\n};\r\n\r\n/**\r\n * download Empty Record Wip File with annotation model\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadEmptyRecordWip = payload => {\r\n const id = payload?.id ?? -1;\r\n const options = payload?.downloadOptions;\r\n const data = options ? JSON.stringify(options) : null;\r\n\r\n const url = `/${emptyRecords}/${id}/wip/download`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * download Empty Record Wip File As PDF Document with annotation model\r\n * @param {{id:Number, version:Number, downloadOptions:{IncludeRedaction: boolean, EmbedIntoImage: boolean, IncludeAnnotations: boolean, BurnRedaction: boolean, MaintainColor: boolean, BurnIntoImage: boolean}}} payload\r\n * @return {Promise}\r\n */\r\nconst downloadEmptyRecordWipAsPDFDocument = payload => {\r\n const id = payload?.id ?? -1;\r\n const options = payload?.downloadOptions;\r\n const data = options ? JSON.stringify(options) : null;\r\n\r\n const url = `/${emptyRecords}/${id}/wip/download-as-pdf`;\r\n\r\n // Important: set response Type: 'blob', since\r\n // the response property will contain the entity body (response.data) according to responseType\r\n const config = {\r\n responseType: \"blob\"\r\n };\r\n\r\n return getAxios().post(url, data, config);\r\n};\r\n\r\n/**\r\n * folders\r\n */\r\n\r\n/**\r\n * create Agenda Meeting\r\n * @param createMeetingModel\r\n * @param {Number|number} parentId parent id\r\n * @return {Promise<{agendaItemOperations:{name:string, allowed:boolean, valid:boolean}[], fieldValues:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], flyingFields:{id:number, sequence:number}[], 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:string[], description:string}}, searchFields:{name:string, fieldDataType:number, fieldDataTypeName:string, operations:{name:string, allowed:boolean, valid:boolean}[], id:number, value:string}[], operations:{name:string, allowed:boolean, valid:boolean}[], meetingOperations:{name:string, allowed:boolean, valid:boolean}[], fields:string[]}>}\r\n */\r\nconst createAgendaMeeting = (createMeetingModel, parentId) => {\r\n const url = `/${folders}/${parentId}/meetings`;\r\n\r\n return getAxios().post(url, createMeetingModel);\r\n};\r\n\r\nexport {\r\n getRepositories,\r\n getCategories,\r\n getCategory,\r\n getCategoryTypes,\r\n getCategoryType,\r\n countCategoryDocuments,\r\n getCategoryDocuments,\r\n getAllCategoryDocuments,\r\n countChildren,\r\n getChildren,\r\n getFolderDocuments,\r\n getDocument,\r\n getSearchHighlights,\r\n getRecord,\r\n getCompoundDocument,\r\n downloadFile,\r\n downloadFileAsPdf,\r\n downloadImageFileVersion,\r\n downloadFileVersionAsPdf,\r\n countRecords,\r\n searchRecords,\r\n getFields,\r\n getField,\r\n searchRecordsWithIn,\r\n lockRecord,\r\n unLockRecord,\r\n setReadOnlyRecord,\r\n setDraftRecord,\r\n fetchBreadcrumbs,\r\n uploadFile,\r\n uploadCompoundDocumentFile,\r\n checkInFile,\r\n checkOutFile,\r\n checkOutFileForSign,\r\n releaseFile,\r\n getFileVersions,\r\n getFileVersion,\r\n createRecord,\r\n updateRecord,\r\n deleteRecord,\r\n getRecordTextFieldValue,\r\n lookup,\r\n checkInScannedFileToRecord,\r\n scanToCheckedInFile,\r\n checkInEditedDocument,\r\n getRecordInfo,\r\n uploadFileToEmptyRecordWip,\r\n uploadFileToCheckedOutFile,\r\n releaseCheckedOutFile,\r\n releaseWIPFile,\r\n releaseWIPRecord,\r\n getUserRepositoryName,\r\n scanToCompoundDocument,\r\n createAgendaMeeting,\r\n getDocumentFileCount,\r\n moveRecord,\r\n copyRecord,\r\n createShortcut,\r\n deleteRecordShortcut,\r\n existsShortcut,\r\n copyRecordShortcut,\r\n moveRecordShortcut,\r\n getRecordShortcut,\r\n existsRecord,\r\n canCreateShortcut,\r\n reindexDocument,\r\n reindexFile,\r\n downloadCompoundDocumentAsPdf,\r\n downloadFileVersion,\r\n downloadPdfFileVersion,\r\n importAnnotations,\r\n exportAnnotations,\r\n getOcrText,\r\n saveOcrText,\r\n countRecordsWithIn,\r\n getRecordChildren,\r\n downloadEmptyRecordWip,\r\n downloadEmptyRecordWipAsPDFDocument,\r\n downloadFileWip,\r\n downloadFileWipAsPDFDocument,\r\n uploadFileToFileWip,\r\n downloadEditFile,\r\n downloadEditFileAsPdf,\r\n downloadExportFileVersion,\r\n downloadExportFileVersionAsPdf,\r\n getProjects,\r\n getCategoryProjectTemplateDefinition,\r\n restoreDeletedRecord\r\n};\r\n","// Requiring the lodash library\r\nconst _ = require(\"lodash\");\r\n\r\n/**\r\n * Checks if value is classified as a Number primitive or object\r\n * @param {any} value\r\n * @return {boolean}\r\n */\r\nconst isNumber = value => {\r\n const str = value?.toString() ?? \"\";\r\n\r\n return isEmpty(str) ? false : !isNaN(str);\r\n};\r\n\r\n/**\r\n * This method is like _.clone except that it recursively clones value.\r\n * Returns: Returns the deep cloned value.\r\n * @param {Array} array let objects = [{ 'a': 1 }, { 'b': 2 }];\r\n * @returns {*} returns deep cloned object\r\n */\r\nconst deepCopyArray = array => _.cloneDeep(array);\r\n\r\n/**\r\n * recursively clones value\r\n * @param object\r\n * @return {any}\r\n */\r\nconst cloneDeep = object => _.cloneDeep(object);\r\n\r\n/**\r\n * Checks if value is empty.\r\n * A value is considered empty unless it’s an arguments object,\r\n * array, string, or jQuery-like collection with a length greater\r\n * than 0 or an object with own enumerable properties.\r\n *\r\n * Returns true if value is empty, else false.\r\n * @param {any} value\r\n * @returns {boolean|boolean}\r\n */\r\nconst isEmpty = value => _.isEmpty(value);\r\n\r\n/**\r\n * Trim Right using RegExp on charList array\r\n * @param {string} text\r\n * @param {string[]} charList\r\n * @returns {string}\r\n */\r\nconst trimRight = (text, charList) =>\r\n text ? text.replace(new RegExp(`[${charList}]+$`), \"\") : \"\";\r\n\r\n/**\r\n * The trimEnd() method removes whitespace from the end of a string.\r\n * trimRight() is an alias of this method.\r\n * Returns:\r\n * A new string representing str stripped of whitespace from its end (right side).\r\n * If the end of str has no whitespace, a new string is still returned (essentially a copy of str),\r\n * with no exception being thrown.\r\n * @param text\r\n * @param chars\r\n * @returns {*|string}\r\n */\r\nconst trimEnd = (text, chars) => (text ? text.trimEnd(text, chars) : \"\");\r\n\r\n/**\r\n * The trimStart() method removes whitespace from the beginning of a string.\r\n * trimLeft() is an alias of this method.\r\n * A new string representing str stripped of whitespace from its beginning (left side).\r\n * If the beginning of str has no whitespace,\r\n * a new string is still returned (essentially a copy of str), with no exception being thrown.\r\n * @param text\r\n * @param chars\r\n * @returns {*|string}\r\n */\r\nconst trimStart = (text, chars) => (text ? text.trimStart(text, chars) : \"\");\r\n\r\n/**\r\n * Trim Left using RegExp on charList array\r\n * @param {string} text\r\n * @param {string[]} charList\r\n * @returns {string}\r\n */\r\nconst trimLeft = (text, charList) =>\r\n text ? text.replace(new RegExp(`^[${charList}]+`), \"\") : \"\";\r\n\r\n/**\r\n * slugify, remove invalid chars, collapse whitespace and replace by -, collapse dashes and replace by -\r\n * @param {string} value\r\n * @returns {string}\r\n */\r\nconst slugify = value =>\r\n value\r\n ? value\r\n .replace(/[^a-z0-9 -]/g, \"\") // remove invalid chars\r\n .replace(/\\s+/g, \"-\") // collapse whitespace and replace by -\r\n .replace(/-+/g, \"-\") // collapse dashes and replace by -\r\n : \"\";\r\n\r\n/**\r\n * this method removes alphabets from a string\r\n * Returns a string containing only numbers\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nconst removeNonDigits = text => (text ? text.replace(/\\D/g, \"\") : text);\r\n\r\n/**\r\n * The split() method divides a String into an ordered list of substrings,\r\n * puts these substrings into an array, and returns the array.\r\n * The division is done by searching for a pattern; where the pattern is\r\n * provided as the first parameter in the method's call.\r\n * Returns: An Array of strings, split at each point where the\r\n * separator occurs in the given string. Quick and suitable for relatively short strings,\r\n * because it uses intermediate array\r\n * @param {string} text\r\n * @param {string} stringToFind\r\n * @returns {number}\r\n */\r\nconst substringCountQuick = (text, stringToFind) =>\r\n text ? text.split(stringToFind).length : 0;\r\n\r\n/**\r\n *The match() method retrieves the result of matching a string against a regular expression\r\n * Returns:\r\n * An Array whose contents depend on the presence or absence of the global (g) flag,\r\n * or null if no matches are found. If the g flag is used, all results matching the\r\n * complete regular expression will be returned, but capturing groups will not.\r\n * if the g flag is not used, only the first complete match and its related\r\n * capturing groups are returned. In this case, the returned item will have\r\n * additional properties\r\n * groups\r\n * An object of named capturing groups whose keys are the moduleNames and values are the\r\n * capturing groups or undefined if no named capturing groups were defined.\r\n * index\r\n * The index of the search at which the result was found.\r\n * input\r\n * A copy of the search string\r\n * @param {string} text\r\n * @param {string} stringToFind\r\n * @returns {number}\r\n */\r\n// slower but suitable for very long strings, because it uses RegEx\r\nconst substringCount = (text, stringToFind) =>\r\n text ? (text.match(new RegExp(stringToFind, \"g\")) || []).length : 0;\r\n\r\n/**\r\n * The trim() method removes whitespace from both ends of a string.\r\n * Whitespace in this context is all the whitespace characters\r\n * (space, tab, no-break space, etc.) and all the line terminator\r\n * characters (LF, CR, etc.).\r\n * Returns: A new string representing str stripped of whitespace from\r\n * both its beginning and end.If neither the beginning or end of str\r\n * has any whitespace, a new string is still\r\n * returned (essentially a copy of str), with no exception being thrown.\r\n * To return a new string with whitespace trimmed from just one end,\r\n * use trimStart() or trimEnd().\r\n * @param {any} value\r\n * @returns {string|string}\r\n */\r\nconst trimSafe = value => (value ? _.trim(value) : \"\");\r\n\r\n/**\r\n * The toLowerCase() method returns the calling string value converted to lower case.\r\n * Returns: A new string representing the calling string converted to lower case.\r\n * @param {string} value\r\n * @returns {string|string}\r\n */\r\nconst toLowerCaseSafe = value => (value ? _.toLower(value) : \"\");\r\n\r\n/**\r\n * The toUpperCase() method returns the calling string value\r\n * converted to uppercase (the value will be converted to a string if it isn't one).\r\n * Returns: A new string representing the calling string converted to upper case.\r\n * @param value\r\n * @returns {string|string}\r\n */\r\nconst toUpperCaseSafe = value => (value ? _.toUpper(value) : \"\");\r\n\r\n/**\r\n * is Valid Index\r\n * @param {number} index\r\n * @param {number} length\r\n * @returns {boolean}\r\n */\r\nconst isValidIndex = (index, length) => index >= 0 && index < length;\r\n\r\n/**\r\n * checks it value passed in this method is true, if not then it returns false\r\n * @param {any} value\r\n * @returns {boolean|boolean}\r\n */\r\nconst getBooleanValue = value => (value ? Boolean(value) : false);\r\n\r\n/**\r\n * get Numeric Value\r\n * @param value\r\n * @returns {number|number}\r\n */\r\nconst getNumericValue = value => (value ? Number(value) : 0);\r\n\r\n/**\r\n * Checks if value is classified as an Array object.\r\n * Returns true if value is correctly classified, else false.\r\n * @param {any} value\r\n * @return {boolean}\r\n */\r\nconst isArray = value => value && _.isArray(value);\r\n\r\n/**\r\n * This method returns the length of an array\r\n * @param array\r\n * @returns {*|number}\r\n */\r\nconst itemCount = array => (isArray(array) ? array.length : 0);\r\n\r\n/**\r\n * This methods remove empty values: \"\", null, undefined, and 0 from array\r\n * @param {Array} array\r\n * @returns {*|*[]}\r\n */\r\nconst removeEmptyValues = array =>\r\n isArray(array)\r\n ? array.filter(function(el) {\r\n return el;\r\n })\r\n : [];\r\n\r\n/**\r\n * The split() method divides a String into an ordered list of substrings,\r\n * puts these substrings into an array, and returns the array.\r\n * The division is done by searching for a pattern;\r\n * where the pattern is provided as the first parameter in the method's call.\r\n * Returns:An Array of strings, split at each point where the separator occurs\r\n * in the given string.\r\n * @param {string} value\r\n * @returns {string []}\r\n */\r\nconst splitSafe = value => (value ? removeEmptyValues(value.split(\" \")) : []);\r\n\r\n/**\r\n * Validate if object passed is of type object or not\r\n * @param {any} value\r\n * @returns {boolean}\r\n */\r\nconst isObjectValid = value => _.isObject(value);\r\n\r\n/**\r\n * checks if environment is development or not\r\n * @type {boolean}\r\n */\r\nconst isDevelopment = toLowerCaseSafe(process.env.NODE_ENV) === \"development\";\r\n\r\n/**\r\n * if environment is development then shows message and parameters\r\n * with date on console\r\n * @param {string} message\r\n * @param params\r\n */\r\nconst consoleLog = (message, params) => {\r\n if (isDevelopment) {\r\n console.log(`${new Date().toISOString()} ${message}`, params || \"\");\r\n }\r\n};\r\n\r\n/**\r\n * Checks if the date passed in is current or previous date\r\n * @param value\r\n * @returns {boolean}\r\n */\r\nconst isTodayOrBefore = value => {\r\n if (!isValidDate(value)) {\r\n return false;\r\n }\r\n\r\n const dateValue = new Date(value);\r\n const date = new Date();\r\n\r\n return dateValue <= date;\r\n};\r\n\r\n/**\r\n * is date1 earlier than date2?\r\n * @param {string} date1\r\n * @param {string} date2\r\n * @return {boolean} true if date1 is Earlier then date2\r\n */\r\nconst isEarlierThan = (date1, date2) => {\r\n if (!isValidDate(date1) || !isValidDate(date2)) return false;\r\n\r\n const d1 = new Date(date1);\r\n const d2 = new Date(date2);\r\n\r\n return d1 < d2;\r\n};\r\n\r\n/**\r\n * Checks if value is classified as a Date value\r\n * @param value The value to check\r\n * @return {boolean} true if value is correctly classified, else false\r\n */\r\nconst isValidDate = value => {\r\n // It will return NaN if it cannot parse the supplied date string\r\n const timestamp = Date.parse(value?.toString());\r\n\r\n return !isNaN(timestamp);\r\n};\r\n\r\n/**\r\n * Checks if value is classified as a Date object\r\n * @param value The value to check\r\n * @return {boolean} true if value is correctly classified, else false\r\n */\r\nconst isValidDateObject = value => {\r\n return _.isDate(value);\r\n};\r\n\r\n/**\r\n * Ensure Valid Date (In the case that date is null/undefined)\r\n * @param {Date} value\r\n * @returns {Date|*}\r\n */\r\nconst ensureValidDate = value =>\r\n isValidDate(value) ? new Date(value) : new Date();\r\n\r\n/**\r\n * get ISO 8601 date strings (YYYY-MM-DD),\r\n * Intended for v-date-picker\r\n * @param {Date} value\r\n * @returns {string|undefined}\r\n */\r\nconst dateISOString = value => {\r\n try {\r\n const isoDate = new Date(value).toISOString();\r\n\r\n return (isoDate?.length ?? 0) >= 10 ? isoDate.substr(0, 10) : isoDate ?? \"\";\r\n } catch (err) {\r\n console.error(err);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Is Odd Number\r\n * Returns 1 if odd number and 0 if number is even\r\n * @param {number} number\r\n * @returns {number}\r\n */\r\nconst isOddNumber = number => number % 2;\r\n\r\n/**\r\n * Get Name Initials\r\n * @param {String|string} names\r\n * @returns {string}\r\n */\r\nconst getNameInitials = names => {\r\n if (!names) return \"\";\r\n\r\n const words = names.split(\" \");\r\n\r\n if (words.length >= 2) {\r\n return `${words[0].substring(0, 1)}${words[1].substring(0, 1)}`;\r\n }\r\n\r\n return names.length >= 2 ? names.substring(0, 2) : names;\r\n};\r\n\r\n/**\r\n * Determines whether a string value is equal to 'true'\r\n * @param {string} value\r\n * @return {boolean}\r\n */\r\nconst isStringValueTrue = value => toLowerCaseSafe(value) === \"true\";\r\n\r\n/**\r\n * Create Blob\r\n * @param data\r\n * @return {Blob}\r\n */\r\nfunction createBlob(data) {\r\n return new Blob([data], {\r\n // The MIME type of the data that will be stored into the blob\r\n type: data?.type ?? \"\"\r\n });\r\n}\r\n\r\n/**\r\n * determines is an object Blob\r\n * @param {Object} object\r\n * @return {boolean} returns true if specified object is Blob\r\n */\r\nconst isBlob = object => object?.constructor?.name?.toLowerCase() === \"blob\";\r\n\r\n/**\r\n * Find Max number\r\n * @param {number[]} numbers\r\n * @return {number}\r\n */\r\nconst maxNumber = numbers => {\r\n if (!isArray(numbers) || numbers.length === 0) {\r\n return 0;\r\n }\r\n\r\n return Math.max.apply(null, numbers ?? []);\r\n};\r\n\r\nexport {\r\n cloneDeep,\r\n deepCopyArray,\r\n trimRight,\r\n trimLeft,\r\n trimEnd,\r\n trimStart,\r\n slugify,\r\n removeNonDigits,\r\n substringCountQuick,\r\n substringCount,\r\n isValidIndex,\r\n isEmpty,\r\n trimSafe,\r\n toLowerCaseSafe,\r\n toUpperCaseSafe,\r\n getBooleanValue,\r\n getNumericValue,\r\n itemCount,\r\n removeEmptyValues,\r\n splitSafe,\r\n isObjectValid,\r\n consoleLog,\r\n isTodayOrBefore,\r\n isArray,\r\n ensureValidDate,\r\n dateISOString,\r\n isOddNumber,\r\n getNameInitials,\r\n isNumber,\r\n isStringValueTrue,\r\n createBlob,\r\n maxNumber,\r\n isValidDate,\r\n isValidDateObject,\r\n isBlob,\r\n isEarlierThan\r\n};\r\n","// model\r\nimport {\r\n fieldType,\r\n findFieldType,\r\n rangeToOperators\r\n} from \"../field/fieldModel\";\r\n\r\n// design\r\nimport { Color, colorTheme } from \"@/design/colors/Color\";\r\nimport { colorMD, variantNumber, variantType } from \"@/design/colors/mdColors\";\r\n\r\nimport {\r\n iconAgendaItem,\r\n iconAgendaSection,\r\n iconCopy,\r\n iconCut,\r\n iconDownload,\r\n iconDraft,\r\n iconEvent,\r\n iconFile,\r\n iconFileCheckIn,\r\n iconFileCheckOut,\r\n iconFileDetails,\r\n iconFileRelease,\r\n iconFolder,\r\n iconJumpToFolder,\r\n iconJumpToOriginal,\r\n iconLock,\r\n iconMovePage,\r\n iconPaste,\r\n iconPasteShortcut,\r\n iconPrint,\r\n iconReadOnly,\r\n iconRecord,\r\n iconReindex,\r\n iconTrash,\r\n iconUnLock,\r\n iconEmail,\r\n iconEdit,\r\n iconFileCheckOutForSign,\r\n iconDocument,\r\n iconInfo,\r\n iconCheck,\r\n iconCancel,\r\n iconRestore,\r\n iconSubmit,\r\n iconRecall\r\n} from \"@/design/icon/iconConst\";\r\n\r\n/**\r\n * Field Name\r\n * @type {Readonly<{owner: string, isLink: string, recordType: string, stateId: string, flags: string, isDraft: string, creationDate: string, parentId: string, modificationDate: string, isComposite: string, isReadOnly: string, recordTypeId: string, isDeleted: string, createdBy: string, children: string, isLocked: string, name: string, id: string, state: string, categoryId: string}>}\r\n */\r\nconst fieldName = Object.freeze({\r\n id: \"id\",\r\n name: \"name\",\r\n categoryId: \"categoryId\",\r\n parentId: \"parentId\",\r\n recordTypeId: \"recordTypeId\",\r\n recordType: \"recordType\",\r\n stateId: \"stateId\",\r\n state: \"state\",\r\n createdBy: \"createdBy\",\r\n creationDate: \"creationDate\",\r\n owner: \"owner\",\r\n children: \"children\",\r\n fieldValues: \"fieldValues\",\r\n flags: \"flags\",\r\n isComposite: \"isComposite\",\r\n isDeleted: \"isDeleted\",\r\n isDraft: \"isDraft\",\r\n isLink: \"isLink\",\r\n isLocked: \"isLocked\",\r\n isReadOnly: \"isReadOnly\",\r\n modificationDate: \"modificationDate\",\r\n pageCount: \"pageCount\",\r\n updatedBy: \"updatedBy\",\r\n extension: \"extension\",\r\n version: \"version\"\r\n});\r\n\r\n/**\r\n * Field Label\r\n * @type {Readonly<{owner: string, createdBy: string, recordType: string, name: string, id: string, state: string, creationDate: string, categoryId: string}>}\r\n */\r\nconst fieldLabel = Object.freeze({\r\n id: \"Id\",\r\n name: \"Name\",\r\n categoryId: \"Category Id\",\r\n createdBy: \"Created By\",\r\n creationDate: \"Creation Date\",\r\n modificationDate: \"Modification Date\",\r\n modifiedBy: \"Modified By\",\r\n owner: \"Owner\",\r\n recordType: \"Type\",\r\n state: \"State\",\r\n pageCount: \"Page Count\",\r\n extension: \"Extension\",\r\n version: \"Version\"\r\n});\r\n\r\n/**\r\n * record Type which represents Questys.Entities.RecordTypes\r\n * @type {Readonly<{ITEM: number, RECORD: number, DOCUMENT: number, MEETING: number, FILE: number, FOLDER: number, SECTION: number}>}\r\n */\r\nconst recordType = Object.freeze({\r\n FOLDER: 0,\r\n FILE: 1,\r\n RECORD: 2,\r\n MEETING: 6,\r\n SECTION: 7,\r\n ITEM: 8,\r\n DOCUMENT: 12\r\n});\r\n\r\n/**\r\n * record Event Type\r\n * @type {Readonly<{AGENDA_MEETING: number, DOCUMENT_ASSEMBLY: number, NONE: number}>}\r\n */\r\nconst recordEventType = Object.freeze({\r\n NONE: 0,\r\n AGENDA_MEETING: 1,\r\n DOCUMENT_ASSEMBLY: 2\r\n});\r\n\r\n/**\r\n * Questys record Types\r\n * @type {({name: string, icon: string, id: number}|{name: string, icon: string, id: number}|{name: string, icon: string, id: number}|{name: string, icon: string, id: number}|{name: string, icon: string, id: number})[]}\r\n */\r\nconst recordTypes = Object.freeze([\r\n { id: recordType.FOLDER, name: \"Folder\", icon: iconFolder },\r\n { id: recordType.FILE, name: \"File\", icon: iconFile },\r\n { id: recordType.RECORD, name: \"Record\", icon: iconRecord },\r\n { id: recordType.MEETING, name: \"Meeting\", icon: iconEvent },\r\n { id: recordType.SECTION, name: \"Section\", icon: iconAgendaSection },\r\n { id: recordType.ITEM, name: \"Item\", icon: iconAgendaItem },\r\n //\r\n // Compound document - keep it as folder - the blue color will keep it backwards compatible\r\n // and the same folder icon will make a Compound document almost as Folder\r\n //\r\n { id: recordType.DOCUMENT, name: \"Document\", icon: iconDocument }\r\n]);\r\n\r\n/**\r\n * find Record Type Icon\r\n * @param {number} id Record Type id\r\n * @return {string} Record Type Icon name\r\n */\r\nconst findRecordTypeIcon = id => {\r\n return findRecordType(id)?.icon ?? iconRecord;\r\n};\r\n\r\n/**\r\n * find Record Type\r\n * @param {number} id record Type id\r\n * @return {{name: string, icon: string, id: number}}\r\n */\r\nconst findRecordType = id => {\r\n return recordTypes.find(rt => rt.id === id);\r\n};\r\n\r\n/**\r\n * record State\r\n * @type {Readonly<{checkedOut: number, new: number, inProgress: number, defeated: number, checkedIn: number, notLocked: number, created: number, dispositionPending: number, readOnly: number, completed: number, published: number, unassigned: number, dispositionApprovalPending: number, posted: number, archived: number, deleted: number, submitted: number, notReadOnly: number, modified: number, passed: number, locked: number}>}\r\n */\r\nconst recordState = Object.freeze({\r\n new: 0,\r\n created: 1,\r\n modified: 2,\r\n checkedOut: 3,\r\n checkedIn: 4,\r\n locked: 5,\r\n notLocked: -5,\r\n dispositionApprovalPending: 6,\r\n dispositionPending: 7,\r\n deleted: 8,\r\n inProgress: 9,\r\n submitted: 10,\r\n passed: 11,\r\n defeated: 12,\r\n completed: 13,\r\n archived: 14,\r\n posted: 15,\r\n published: 16,\r\n unassigned: 17,\r\n readOnly: 18,\r\n notReadOnly: 19\r\n});\r\n\r\n/**\r\n * Available Record States per Record Type\r\n * @param {Number} type\r\n * @return {({name: string, id: number}|{name: string, id: number}|{name: string, id: number}|{name: string, id: number}|{name: string, id: number})[]}\r\n */\r\nconst recordTypeStates = type => {\r\n switch (type) {\r\n case recordType.FOLDER:\r\n case recordType.SECTION:\r\n case recordType.DOCUMENT:\r\n case recordType.RECORD: {\r\n return recordStates.filter(\r\n el =>\r\n el.id === recordState.created ||\r\n el.id === recordState.modified ||\r\n el.id === recordState.locked ||\r\n el.id === recordState.notLocked ||\r\n el.id === recordState.readOnly ||\r\n el.id === recordState.notReadOnly ||\r\n el.id === recordState.deleted\r\n );\r\n }\r\n case recordType.MEETING: {\r\n return recordStates.filter(\r\n el =>\r\n el.id === recordState.created ||\r\n el.id === recordState.modified ||\r\n el.id === recordState.locked ||\r\n el.id === recordState.notLocked ||\r\n el.id === recordState.readOnly ||\r\n el.id === recordState.notReadOnly ||\r\n el.id === recordState.posted ||\r\n el.id === recordState.published ||\r\n el.id === recordState.deleted\r\n );\r\n }\r\n case recordType.ITEM: {\r\n return recordStates.filter(\r\n el =>\r\n el.id === recordState.created ||\r\n el.id === recordState.modified ||\r\n el.id === recordState.locked ||\r\n el.id === recordState.notLocked ||\r\n el.id === recordState.readOnly ||\r\n el.id === recordState.notReadOnly ||\r\n el.id === recordState.inProgress ||\r\n el.id === recordState.passed ||\r\n el.id === recordState.completed ||\r\n el.id === recordState.unassigned ||\r\n el.id === recordState.submitted ||\r\n el.id === recordState.deleted\r\n );\r\n }\r\n case recordType.FILE: {\r\n return recordStates.filter(\r\n el =>\r\n el.id === recordState.created ||\r\n el.id === recordState.modified ||\r\n el.id === recordState.locked ||\r\n el.id === recordState.notLocked ||\r\n el.id === recordState.readOnly ||\r\n el.id === recordState.notReadOnly ||\r\n el.id === recordState.checkedOut ||\r\n el.id === recordState.checkedIn ||\r\n el.id === recordState.archived ||\r\n el.id === recordState.deleted\r\n );\r\n }\r\n }\r\n};\r\n\r\nconst recordStates = Object.freeze([\r\n { id: recordState.new, name: \"New\" },\r\n { id: recordState.created, name: \"Created\" },\r\n { id: recordState.modified, name: \"Modified\" },\r\n { id: recordState.checkedOut, name: \"Checked Out\" },\r\n { id: recordState.checkedIn, name: \"Checked In\" },\r\n { id: recordState.locked, name: \"Locked\" },\r\n { id: recordState.notLocked, name: \"Not Locked\" },\r\n {\r\n id: recordState.dispositionApprovalPending,\r\n name: \"Disposition Approval Pending\"\r\n },\r\n { id: recordState.dispositionPending, name: \"Disposition Pending\" },\r\n { id: recordState.deleted, name: \"Deleted\" },\r\n { id: recordState.inProgress, name: \"In Progress\" },\r\n { id: recordState.submitted, name: \"Submitted\" },\r\n { id: recordState.passed, name: \"Passed\" },\r\n { id: recordState.defeated, name: \"Defeated\" },\r\n { id: recordState.completed, name: \"Completed\" },\r\n { id: recordState.archived, name: \"Archived\" },\r\n { id: recordState.posted, name: \"Posted\" },\r\n { id: recordState.published, name: \"Published\" },\r\n { id: recordState.unassigned, name: \"Unassigned\" },\r\n { id: recordState.readOnly, name: \"Read Only\" },\r\n { id: recordState.notReadOnly, name: \"Not Read Only\" }\r\n]);\r\n\r\n/**\r\n * find Record State\r\n * @param {number} id record State id\r\n * @return {{id:number, name:string}|undefined}\r\n */\r\nconst findRecordState = id => {\r\n return recordStates.find(rt => rt.id === id);\r\n};\r\n\r\n/**\r\n * record Mode\r\n * @type {Readonly<{new: number, view: number, edit: number, newProject: number}>}\r\n */\r\nconst recordMode = Object.freeze({\r\n view: 0,\r\n new: 1,\r\n edit: 2,\r\n newProject: 3\r\n});\r\n\r\n/**\r\n * record Modes\r\n * @type {({mode: number, name: string}|{mode: number, name: string}|{mode: number, name: string})[]}\r\n */\r\nconst recordModes = Object.freeze([\r\n { mode: recordMode.view, name: \"View\" },\r\n { mode: recordMode.new, name: \"New\" },\r\n { mode: recordMode.edit, name: \"Edit\" },\r\n { mode: recordMode.newProject, name: \"New Project\" }\r\n]);\r\n\r\n/**\r\n * find Record Mode\r\n * @param mode Record Mode\r\n * @return {{mode: number, name: string}}\r\n */\r\nconst findRecordMode = mode => {\r\n return recordModes.find(m => m.mode === mode);\r\n};\r\n\r\n/**\r\n * searchable Property\r\n * @type {Readonly<{owner: string, creator: string, extension: string, createdDateFrom: string, createdDateTo: string, stateId: string, childrenOnly: string, version: string, modifiedDateTo: string, pages: string, name: string, modifiedDateFrom: string, typeId: string, id: string, categoryId: string}>}\r\n */\r\nconst searchableProperty = Object.freeze({\r\n id: \"Id\",\r\n name: \"Name\",\r\n owner: \"Owner\",\r\n creator: \"Creator\",\r\n createdDateFrom: \"CreatedDateFrom\",\r\n createdDateTo: \"CreatedDateTo\",\r\n modifiedDateFrom: \"ModifiedDateFrom\",\r\n modifiedDateTo: \"ModifiedDateTo\",\r\n categoryId: \"CategoryId\",\r\n stateId: \"StateId\",\r\n typeId: \"TypeId\",\r\n extension: \"Extension\",\r\n version: \"Version\",\r\n pages: \"Pages\",\r\n childrenOnly: \"ChildrenOnly\"\r\n});\r\n\r\nconst recordOperation = Object.freeze({\r\n None: \"None\",\r\n Read: \"Read\",\r\n Update: \"Update\",\r\n Create: \"Create\",\r\n Delete: \"Delete\",\r\n Purge: \"Purge\",\r\n CheckIn: \"CheckIn\",\r\n CheckOut: \"CheckOut\",\r\n CheckOutForSign: \"DigitalSigning\",\r\n Lock: \"Lock\",\r\n Unlock: \"Unlock\",\r\n Release: \"Release\",\r\n Move: \"Move\",\r\n Export: \"Export\",\r\n Download: \"Download\",\r\n Email: \"Email\",\r\n Print: \"Print\",\r\n Notify: \"Notify\",\r\n AccessDraft: \"AccessDraft\",\r\n AccessHidden: \"AccessHidden\",\r\n AccessVersion: \"AccessVersion\",\r\n ShortcutCreate: \"ShortcutCreate\",\r\n RunImageRedaction: \"RunImageRedaction\",\r\n RunImageAnnotation: \"RunImageAnnotation\",\r\n SetDraft: \"SetDraft\",\r\n SetReadOnly: \"SetReadOnly\",\r\n LegalHoldManagement: \"LegalHoldManagement\",\r\n RetentionManagement: \"RetentionManagement\",\r\n Reindex: \"Reindex\",\r\n DigitalSigning: \"DigitalSigning\",\r\n NonOwnerAccess: \"NonOwnerAccess\",\r\n ViewDetails: \"ViewDetails\",\r\n Restore: \"Undelete\"\r\n});\r\n\r\n/**\r\n * record Operations\r\n * @type {{name: string, icon: string, label: string, tooltip: String}[]}\r\n */\r\nconst recordOperations = Object.freeze([\r\n {\r\n name: recordOperation.Lock,\r\n label: recordOperation.Lock,\r\n icon: iconLock,\r\n tooltip: recordOperation.Lock\r\n },\r\n {\r\n name: recordOperation.Unlock,\r\n label: `Unlock`,\r\n icon: iconUnLock,\r\n tooltip: `Unlock`\r\n },\r\n {\r\n name: recordOperation.SetReadOnly,\r\n label: \"Read Only\",\r\n icon: iconReadOnly,\r\n tooltip: \"Read Only\"\r\n },\r\n {\r\n name: recordOperation.SetDraft,\r\n label: \"Draft\",\r\n icon: iconDraft,\r\n tooltip: \"Draft\"\r\n },\r\n {\r\n name: recordOperation.Download,\r\n label: recordOperation.Download,\r\n icon: iconDownload,\r\n tooltip: recordOperation.Download\r\n },\r\n {\r\n name: recordOperation.Print,\r\n label: recordOperation.Print,\r\n icon: iconPrint,\r\n tooltip: recordOperation.Print\r\n },\r\n {\r\n name: recordOperation.Email,\r\n label: recordOperation.Email,\r\n icon: iconEmail,\r\n tooltip: recordOperation.Email\r\n },\r\n {\r\n name: recordOperation.Delete,\r\n label: recordOperation.Delete,\r\n icon: iconTrash,\r\n tooltip: recordOperation.Delete\r\n },\r\n {\r\n name: recordOperation.CheckOut,\r\n label: \"Check Out\",\r\n icon: iconFileCheckOut,\r\n tooltip: \"Check Out\"\r\n },\r\n {\r\n name: recordOperation.CheckOutForSign,\r\n label: \"Check Out For Sign\",\r\n icon: iconFileCheckOutForSign,\r\n tooltip: \"Check Out For Sign\"\r\n },\r\n {\r\n name: recordOperation.Release,\r\n label: recordOperation.Release,\r\n icon: iconFileRelease,\r\n tooltip: recordOperation.Release\r\n },\r\n {\r\n name: recordOperation.ViewDetails,\r\n label: \"Details\",\r\n icon: iconFileDetails,\r\n tooltip: \"Details\"\r\n },\r\n {\r\n name: recordOperation.CheckIn,\r\n label: recordOperation.CheckIn,\r\n icon: iconFileCheckIn,\r\n tooltip: recordOperation.CheckIn\r\n },\r\n {\r\n name: recordOperation.Update,\r\n label: \"Edit\",\r\n icon: iconEdit,\r\n tooltip: \"Edit\"\r\n },\r\n {\r\n name: recordOperation.Move,\r\n label: recordOperation.Move,\r\n icon: iconMovePage,\r\n tooltip: recordOperation.Move\r\n },\r\n {\r\n name: recordOperation.Reindex,\r\n label: recordOperation.Reindex,\r\n icon: iconReindex,\r\n tooltip: recordOperation.Reindex\r\n },\r\n {\r\n name: recordOperation.Purge,\r\n label: recordOperation.Purge,\r\n icon: iconTrash,\r\n tooltip: recordOperation.Purge\r\n },\r\n {\r\n name: recordOperation.Restore,\r\n label: \"Restore\",\r\n icon: iconRestore,\r\n tooltip: \"Restore\"\r\n }\r\n]);\r\n\r\n/**\r\n * find Record Operation\r\n * @param name record operation name\r\n * @return {{name: string, icon: string, label: string, tooltip: string}}\r\n */\r\nconst findRecordOperation = name => {\r\n return recordOperations?.find(el => el?.name === name);\r\n};\r\n\r\nconst searchableProperties = Object.freeze([\r\n {\r\n name: searchableProperty.id,\r\n label: \"Id\",\r\n fieldDataType: fieldType.INTEGER,\r\n searchOperators: findFieldType(fieldType.INTEGER)?.searchOperators ?? []\r\n },\r\n {\r\n name: searchableProperty.name,\r\n label: \"Record Name\",\r\n fieldDataType: fieldType.LITERAL,\r\n searchOperators: findFieldType(fieldType.LITERAL)?.searchOperators ?? []\r\n },\r\n {\r\n name: searchableProperty.owner,\r\n label: \"Owner\",\r\n fieldDataType: fieldType.LITERAL,\r\n searchOperators:\r\n findFieldType(fieldType.LITERAL)?.searchOperators?.filter(\r\n el => el.operator === \"=\"\r\n ) ?? []\r\n },\r\n {\r\n name: searchableProperty.creator,\r\n label: \"Creator\",\r\n fieldDataType: fieldType.LITERAL,\r\n searchOperators:\r\n findFieldType(fieldType.LITERAL)?.searchOperators?.filter(\r\n el => el.operator === \"=\"\r\n ) ?? []\r\n },\r\n {\r\n name: searchableProperty.stateId,\r\n label: \"State\",\r\n fieldDataType: fieldType.INTEGER,\r\n searchOperators:\r\n findFieldType(fieldType.INTEGER)?.searchOperators?.filter(\r\n el => el.operator === \"=\"\r\n ) ?? []\r\n },\r\n {\r\n name: searchableProperty.typeId,\r\n label: \"Type\",\r\n fieldDataType: fieldType.INTEGER,\r\n searchOperators:\r\n findFieldType(fieldType.INTEGER)?.searchOperators?.filter(\r\n el => el.operator === \"=\"\r\n ) ?? []\r\n },\r\n {\r\n name: searchableProperty.createdDateFrom,\r\n label: \"Created\",\r\n fieldDataType: fieldType.DATE,\r\n searchOperators: findFieldType(fieldType.DATE)?.searchOperators ?? []\r\n },\r\n {\r\n name: searchableProperty.createdDateTo,\r\n label: \"Created\",\r\n fieldDataType: fieldType.DATE,\r\n searchOperators: rangeToOperators\r\n },\r\n {\r\n name: searchableProperty.modifiedDateFrom,\r\n label: \"Modified\",\r\n fieldDataType: fieldType.DATE,\r\n searchOperators: findFieldType(fieldType.DATE)?.searchOperators ?? []\r\n },\r\n {\r\n name: searchableProperty.modifiedDateTo,\r\n label: \"Modified\",\r\n fieldDataType: fieldType.DATE,\r\n searchOperators: rangeToOperators\r\n },\r\n {\r\n name: searchableProperty.extension,\r\n label: \"Extension\",\r\n fieldDataType: fieldType.LITERAL,\r\n searchOperators: findFieldType(fieldType.LITERAL)?.searchOperators ?? []\r\n },\r\n {\r\n name: searchableProperty.version,\r\n label: \"Version\",\r\n fieldDataType: fieldType.INTEGER,\r\n searchOperators: findFieldType(fieldType.INTEGER)?.searchOperators ?? []\r\n },\r\n {\r\n name: searchableProperty.pages,\r\n label: \"Pages\",\r\n fieldDataType: fieldType.INTEGER,\r\n searchOperators: findFieldType(fieldType.INTEGER)?.searchOperators ?? []\r\n },\r\n {\r\n name: searchableProperty.categoryId,\r\n label: \"Category Id\",\r\n fieldDataType: fieldType.INTEGER,\r\n searchOperators:\r\n findFieldType(fieldType.INTEGER)?.searchOperators?.filter(\r\n el => el.operator === \"=\"\r\n ) ?? []\r\n },\r\n {\r\n name: searchableProperty.childrenOnly,\r\n label: \"Child Records Only\",\r\n fieldDataType: fieldType.BIT,\r\n searchOperators:\r\n findFieldType(fieldType.BIT)?.searchOperators?.filter(\r\n el => el.operator === \"=\"\r\n ) ?? []\r\n }\r\n]);\r\n\r\n/**\r\n * find Searchable Property by Searchable Property name\r\n * @param {string} name Searchable Property name\r\n */\r\nconst findSearchableProperty = name => {\r\n return searchableProperties?.find(el => el?.name === name);\r\n};\r\n\r\n/**\r\n * color when Record is ReadOnly\r\n * @type {Color}\r\n */\r\nconst colorRecordReadOnly = new Color(\r\n colorMD.red,\r\n variantType.lighten,\r\n variantNumber.n2\r\n);\r\nconst colorRecordReadOnlyClass = colorRecordReadOnly.getClassColor();\r\n\r\n/**\r\n * color Record Inherited Read-Only\r\n * @type {Color}\r\n */\r\nconst colorRecordInheritedReadOnly = new Color(\r\n colorMD.grey,\r\n variantType.lighten,\r\n variantNumber.n1\r\n);\r\nconst colorRecordInheritedReadOnlyClass = colorRecordInheritedReadOnly.getClassColor();\r\n\r\n/**\r\n * color when Record is ReadOnly\r\n * @type {Color}\r\n */\r\nconst colorRecordDeleted = new Color(\r\n colorMD.red,\r\n variantType.lighten,\r\n variantNumber.n2\r\n);\r\nconst colorRecordDeletedClass = colorRecordDeleted.getClassColor();\r\n\r\n/**\r\n * color when Record is Locked\r\n * @type {Color}\r\n */\r\nconst colorRecordLocked = new Color(\r\n colorMD.red,\r\n variantType.lighten,\r\n variantNumber.n2\r\n);\r\nconst colorRecordLockedClass = colorRecordLocked.getClassColor();\r\n\r\n/**\r\n * Color when Record is New\r\n * @type {Color}\r\n */\r\nconst colorRecordNew = new Color(\r\n colorMD.yellow,\r\n variantType.darken,\r\n variantNumber.n2\r\n);\r\nconst colorRecordNewClass = colorRecordNew.getClassColor();\r\n\r\n/**\r\n * Color when Record is Created\r\n * @type {Color}\r\n */\r\nconst colorRecordCreated = new Color(\r\n colorMD.indigo,\r\n variantType.lighten,\r\n variantNumber.n2\r\n);\r\nconst colorRecordCreatedClass = colorRecordCreated.getClassColor();\r\n\r\n/**\r\n * color when Record is Checked Out\r\n * @type {Color}\r\n */\r\nconst colorRecordCheckedOut = new Color(\r\n colorMD.green,\r\n variantType.lighten,\r\n variantNumber.n2\r\n);\r\nconst colorRecordCheckedOutClass = colorRecordCheckedOut.getClassColor();\r\n\r\n/**\r\n * color Meeting Posted\r\n * @type {Color}\r\n */\r\nconst colorMeetingPosted = new Color(\r\n colorMD.blue,\r\n variantType.lighten,\r\n variantNumber.n2\r\n);\r\n\r\nconst colorMeetingPostedClass = colorMeetingPosted.getClassColor();\r\nconst colorMeetingPublishedClass = colorRecordCheckedOut.getClassColor();\r\nconst colorAgendaItemSubmittedClass = colorRecordCheckedOut.getClassColor();\r\n\r\n/**\r\n * color when Record is Checked In\r\n * @type {Color}\r\n */\r\nconst colorRecordCheckedIn = new Color(\r\n colorMD.blue,\r\n variantType.lighten,\r\n variantNumber.n3\r\n);\r\nconst colorRecordCheckedInClass = colorRecordCheckedIn.getClassColor();\r\n\r\n/**\r\n * Context Menu Record Operation\r\n * @type {Readonly<{Delete: string, Cut: string, Copy: string, Paste: string, Select: string}>}\r\n */\r\nconst contextMenuRecordOperation = Object.freeze({\r\n Select: \"Select\",\r\n Copy: \"Copy\",\r\n Cut: \"Cut\",\r\n JumpOriginal: \"Go To Original\",\r\n Paste: \"Paste\",\r\n Shortcut: \"Paste Shortcut\",\r\n Delete: \"Delete\",\r\n SubmitItems: \"Submit Items\",\r\n RecallItems: \"Recall Items\"\r\n});\r\n\r\n/**\r\n * Context Menu Record Operations\r\n * @type {({name: string, icon: string}|{name: string, icon: string}|{name: string, icon: string}|{name: string, icon: string}|{name: string, icon: string})[]}\r\n */\r\nconst contextMenuRecordOperations = Object.freeze([\r\n { name: contextMenuRecordOperation.Select, icon: iconJumpToFolder },\r\n { name: contextMenuRecordOperation.Copy, icon: iconCopy },\r\n { name: contextMenuRecordOperation.Cut, icon: iconCut },\r\n { name: contextMenuRecordOperation.JumpOriginal, icon: iconJumpToOriginal },\r\n { name: contextMenuRecordOperation.Paste, icon: iconPaste },\r\n { name: contextMenuRecordOperation.Shortcut, icon: iconPasteShortcut },\r\n { name: contextMenuRecordOperation.Delete, icon: iconTrash },\r\n { name: contextMenuRecordOperation.SubmitItems, icon: iconSubmit },\r\n { name: contextMenuRecordOperation.RecallItems, icon: iconRecall }\r\n]);\r\n\r\n/**\r\n * find Record Operation\r\n * @param name record operation name\r\n * @return {{name: string, icon: string}}\r\n */\r\nconst findContextMenuOperation = name => {\r\n return contextMenuRecordOperations?.find(el => el?.name === name);\r\n};\r\n\r\n/**\r\n * Batch Record Status\r\n * @type {Readonly<{Ready: string, Failed: string, Completed: string}>}\r\n */\r\nconst batchRecordStatus = Object.freeze({\r\n Ready: \"Ready\",\r\n Completed: \"Completed\",\r\n Failed: \"Failed\",\r\n Canceled: \"Canceled\"\r\n});\r\n\r\n/**\r\n * Batch Record Statuses\r\n * @type {({name: string, icon: string, iconColor: string}|{name: string, icon: string, iconColor: string}|{name: string, icon: string, iconColor: string}|{name: string, icon: string, iconColor: string})[]}\r\n */\r\nconst batchRecordStatuses = Object.freeze([\r\n {\r\n name: batchRecordStatus.Ready,\r\n icon: iconCheck,\r\n iconColor: colorTheme.primary\r\n },\r\n {\r\n name: batchRecordStatus.Completed,\r\n icon: iconCheck,\r\n iconColor: colorTheme.success\r\n },\r\n {\r\n name: batchRecordStatus.Failed,\r\n icon: iconInfo,\r\n iconColor: colorTheme.error\r\n },\r\n {\r\n name: batchRecordStatus.Canceled,\r\n icon: iconCancel,\r\n iconColor: colorTheme.warning\r\n }\r\n]);\r\n\r\n/**\r\n * find Record Operation\r\n * @param name record operation name\r\n * @return {{name: string, icon: string, iconColor:string}}\r\n */\r\nconst findBatchRecordStatus = name => {\r\n return batchRecordStatuses?.find(el => el?.name === name);\r\n};\r\n\r\n/**\r\n * Record Drag/Drop Insert Positions\r\n * @type {Readonly<{afterSibling: number, firstChild: number, lastChild: number, beforeSibling: number}>}\r\n */\r\nconst treeInsertOptions = Object.freeze({\r\n firstChild: 0,\r\n lastChild: 1,\r\n beforeSibling: 2,\r\n afterSibling: 3\r\n});\r\n\r\nexport {\r\n fieldName,\r\n fieldLabel,\r\n recordType,\r\n recordEventType,\r\n recordTypes,\r\n recordState,\r\n recordStates,\r\n recordOperation,\r\n recordOperations,\r\n searchableProperties,\r\n searchableProperty,\r\n colorRecordReadOnlyClass,\r\n colorRecordDeletedClass,\r\n colorRecordLockedClass,\r\n colorRecordCheckedOutClass,\r\n colorRecordCheckedInClass,\r\n colorRecordNewClass,\r\n colorRecordCreatedClass,\r\n recordMode,\r\n recordModes,\r\n colorMeetingPostedClass,\r\n colorMeetingPublishedClass,\r\n colorAgendaItemSubmittedClass,\r\n contextMenuRecordOperation,\r\n contextMenuRecordOperations,\r\n colorRecordInheritedReadOnlyClass,\r\n recordTypeStates,\r\n findRecordType,\r\n findRecordTypeIcon,\r\n findRecordState,\r\n findRecordMode,\r\n findSearchableProperty,\r\n findRecordOperation,\r\n findContextMenuOperation,\r\n batchRecordStatus,\r\n batchRecordStatuses,\r\n findBatchRecordStatus,\r\n treeInsertOptions\r\n};\r\n"],"sourceRoot":""}